From 585762555a1c1970756f7432c0a4b2d6f1ef5a6a Mon Sep 17 00:00:00 2001 From: Michael Scheetz Date: Mon, 18 Jan 2021 12:34:10 -0700 Subject: [PATCH 01/15] Trigger build --- .github/workflows/dockerimage.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 5007a8f..d9faba4 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -7,11 +7,8 @@ on: branches: [ master ] jobs: - build: - runs-on: ubuntu-latest - steps: - uses: actions/checkout@v2 - name: Build the Docker image From 7fd1a497c6dfdf8dca64535eb84b5187a2d2decb Mon Sep 17 00:00:00 2001 From: Michael Scheetz Date: Mon, 18 Jan 2021 12:46:21 -0700 Subject: [PATCH 02/15] Fix pip issue --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index df5d798..340940f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,7 @@ RUN apk add --no-cache --update \ moreutils \ openssh \ python3 \ + py3-pip \ tar \ unzip From 93f1fe77efc6baac84a19b6fa1d000710582a6da Mon Sep 17 00:00:00 2001 From: Michael Scheetz Date: Mon, 18 Jan 2021 12:56:44 -0700 Subject: [PATCH 03/15] Setup dependabot --- .github/dependbot.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .github/dependbot.yml diff --git a/.github/dependbot.yml b/.github/dependbot.yml new file mode 100644 index 0000000..d3d7dde --- /dev/null +++ b/.github/dependbot.yml @@ -0,0 +1,7 @@ +version: 2 +updates: +- package-ecosystem: docker + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 From 331f9808b0110aa61ab15e7c1d32f7940d20f3e9 Mon Sep 17 00:00:00 2001 From: Michael Scheetz Date: Mon, 18 Jan 2021 14:46:20 -0700 Subject: [PATCH 04/15] Lint Dockerfile --- .github/workflows/dockerimage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index d9faba4..74b30c5 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -12,4 +12,4 @@ jobs: steps: - uses: actions/checkout@v2 - name: Build the Docker image - run: ./containerize.sh + run: ./containerize.sh -s From 4a8e820f077f16741321d87ba494a354d2c15f30 Mon Sep 17 00:00:00 2001 From: Michael Scheetz Date: Mon, 18 Jan 2021 14:50:15 -0700 Subject: [PATCH 05/15] CI for all branches --- .github/workflows/dockerimage.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 74b30c5..b2c5148 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -1,10 +1,6 @@ name: Docker Image CI -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] +on: [push, pull_request] jobs: build: From 853e8d23c36a844118c1a1b6178fdaab0f95437e Mon Sep 17 00:00:00 2001 From: Michael Scheetz Date: Mon, 18 Jan 2021 15:23:23 -0700 Subject: [PATCH 06/15] Fix build --- .github/workflows/dockerimage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index b2c5148..bc3d721 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -8,4 +8,4 @@ jobs: steps: - uses: actions/checkout@v2 - name: Build the Docker image - run: ./containerize.sh -s + run: ./containerize.sh From dca0885177233ffeabf547de311a87f8d344d8a6 Mon Sep 17 00:00:00 2001 From: Michael Scheetz Date: Mon, 18 Jan 2021 15:57:36 -0700 Subject: [PATCH 07/15] Fix dependabot file name --- .github/{dependbot.yml => dependabot.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/{dependbot.yml => dependabot.yml} (100%) diff --git a/.github/dependbot.yml b/.github/dependabot.yml similarity index 100% rename from .github/dependbot.yml rename to .github/dependabot.yml From 51902cd3a9786aac96ed4e2accb5275f86b38beb Mon Sep 17 00:00:00 2001 From: Michael Scheetz Date: Mon, 18 Jan 2021 16:05:06 -0700 Subject: [PATCH 08/15] Lock image version --- .github/workflows/dockerimage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index bc3d721..9725e41 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -4,7 +4,7 @@ on: [push, pull_request] jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: Build the Docker image From 98e34c40888a3f1dcde6cc063a6cbfbc0359b6dc Mon Sep 17 00:00:00 2001 From: scheetz Date: Mon, 18 Jan 2021 19:56:52 -0700 Subject: [PATCH 09/15] Publish image to GPR (#3) * Publish image to GH packages * Pass in creds for publish * Some debug output * Fix json * Add required jq * Test json output using jq * use sudo for apt-get * Fix registry file * Get things fixed up for GPR * Get token set * The token differently * Use actor --- .github/workflows/dockerimage.yml | 24 ++++++++++++++++++++- .gitignore | 1 + containerize.sh | 35 +++++++++++++++++++++++-------- 3 files changed, 50 insertions(+), 10 deletions(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 9725e41..0425989 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -7,5 +7,27 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 + - name: Install jq + run: | + sudo apt-get update + sudo apt-get install --yes jq + - name: Create Registry File + run: | + export REGISTRY=$(cat < registry.json + - name: Show Registry Info + run: cat registry.json - name: Build the Docker image - run: ./containerize.sh + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + ./containerize.sh -p -f registry.json diff --git a/.gitignore b/.gitignore index 8689fae..0ac330f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea/ .dev/ +registry.json diff --git a/containerize.sh b/containerize.sh index 80e3700..bf1b377 100755 --- a/containerize.sh +++ b/containerize.sh @@ -188,7 +188,13 @@ login() { if [ "$is_aws" = true ]; then login_aws_create_repo "$registry" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" "$repo" "$region" else - login_reg_create_repo "$registry" "$DOCKER_USR" "$DOCKER_PW" "$repo" + ( + set +e + login_reg "$registry" "$DOCKER_USR" "$DOCKER_PW" + if [[ $? -ne 0 ]]; then + login_reg_create_repo "$registry" "$DOCKER_USR" "$DOCKER_PW" "$repo" + fi + ) fi } @@ -209,7 +215,7 @@ login_reg() { fi echo "Attempt login to $registry" - docker login -u "$docker_user" -p "$docker_pw" "$registry" + login=$(echo "$docker_pw" | docker login -u "$docker_user" --password-stdin "$registry") } login_reg_create_repo() { @@ -232,7 +238,7 @@ login_reg_create_repo() { fi echo "Attempt login to $registry" - login=$(docker login -u "$docker_user" -p "$docker_pw" "$registry") + login=$(echo "$docker_pw" | docker login -u "$docker_user" --password-stdin "$registry") if [ $? -ne 0 ]; then return 1 fi @@ -360,9 +366,11 @@ publish () { local registry local branch local version2 + local image_name registry_info="$1" repo="$2" version="$3" + image_name= registry=$(echo "$registry_info" | jq -r .uri) export_image $repo:$version @@ -372,16 +380,25 @@ publish () { return fi - docker tag $repo:$version $registry/$repo:$version > /dev/null - docker push $registry/$repo:$version > /dev/null && echo "Published $registry/$repo:$version" - docker rmi $registry/$repo:$version > /dev/null || true + if [[ "$registry" =~ "github.com" ]]; then + # TODO: use Dockerfile extension + image_name="/${repo##*/}" + fi + + if [[ "$registry" =~ "https://" ]]; then + registry=$(sed -e"s|https://||g" <<< $registry) + fi + + docker tag $repo:$version $registry/${repo}${image_name}:$version > /dev/null + docker push $registry/$repo${image_name}:$version > /dev/null && echo "Published $registry/$repo${image_name}:$version" + docker rmi $registry/$repo${image_name}:$version > /dev/null || true branch="${version%%-*}" version2="${version/$branch/latest}" if [ "$branch" = "master" ] ; then - docker tag $repo:$version $registry/$repo:$version2 > /dev/null - docker push $registry/$repo:$version2 > /dev/null && echo "Published $registry/$repo:$version2" - docker rmi $registry/$repo:$version2 > /dev/null || true + docker tag $repo:$version $registry/$repo${image_name}:$version2 > /dev/null + docker push $registry/$repo${image_name}:$version2 > /dev/null && echo "Published $registry/$repo${image_name}:$version2" + docker rmi $registry/$repo${image_name}:$version2 > /dev/null || true fi } From 136fa1859bc7a695a37ba6b747f915be513f1721 Mon Sep 17 00:00:00 2001 From: Michael Scheetz Date: Wed, 20 Jan 2021 17:58:26 -0700 Subject: [PATCH 10/15] Set version string based on GitHub vars if they exist --- .github/workflows/dockerimage.yml | 8 +++++++- containerize.sh | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 0425989..61b42b0 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -1,6 +1,12 @@ name: Docker Image CI -on: [push, pull_request] +on: + pull_request: + branches: [main] + push: + branches: '*' + tags: + - 'v[0-9]+.[0-9]+.[0-9]+*' jobs: build: diff --git a/containerize.sh b/containerize.sh index bf1b377..3a79293 100755 --- a/containerize.sh +++ b/containerize.sh @@ -54,15 +54,24 @@ name_version() { if [ -n "$CIRCLE_PULL_REQUEST" ] ; then version=pr${CIRCLE_PULL_REQUEST##*/} fi + if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then + version=pr${CIRCLE_PULL_REQUEST} + fi if [ -z $version ] ; then version=$(echo $DRONE_TAG | xargs) fi if [ -z $version ] ; then version=$(echo $CIRCLE_TAG | xargs) fi + if [ -z $version ] && [ "$GITHUB_REF" =~ "refs/tags/" ]; then + version=$(echo ${GITHUB_REF##*/} | xargs) + fi if [ -z $version ] && [ -n $DRONE_BRANCH ] ; then version=$(echo $DRONE_BRANCH | xargs) fi + if [ -z $version ] && [ -n "$GITHUB_REF" =~ "refs/heads/"]; then + version=$(echo ${GITHUB_REF##*/} | xargs) + fi if [ -z $version ] ; then version=$(git branch | grep '\*' | awk '{print $2}') fi From 948dfc50790077b0a401fda4ff67735e73f8134f Mon Sep 17 00:00:00 2001 From: scheetz Date: Wed, 20 Jan 2021 18:52:38 -0700 Subject: [PATCH 11/15] Fix GH PR version (#4) --- containerize.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/containerize.sh b/containerize.sh index 3a79293..43ee88e 100755 --- a/containerize.sh +++ b/containerize.sh @@ -55,7 +55,7 @@ name_version() { version=pr${CIRCLE_PULL_REQUEST##*/} fi if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then - version=pr${CIRCLE_PULL_REQUEST} + version=pr$(echo ${GITHUB_REF} | sed -i -e 's|/merge||g' -e 's|refs/pull/||g') fi if [ -z $version ] ; then version=$(echo $DRONE_TAG | xargs) From b4128a7827911bdf72401ee624357c4de2f49199 Mon Sep 17 00:00:00 2001 From: scheetz Date: Wed, 20 Jan 2021 19:02:22 -0700 Subject: [PATCH 12/15] Fix PR for GH (#5) * Fix GH PR version * Fix pr for GH --- containerize.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/containerize.sh b/containerize.sh index 43ee88e..5fb36c1 100755 --- a/containerize.sh +++ b/containerize.sh @@ -55,7 +55,8 @@ name_version() { version=pr${CIRCLE_PULL_REQUEST##*/} fi if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then - version=pr$(echo ${GITHUB_REF} | sed -i -e 's|/merge||g' -e 's|refs/pull/||g') + local pr_id=$(echo ${GITHUB_REF} | sed -e 's|/merge||g' -e 's|refs/pull/||g') + version=pr${pr_id} fi if [ -z $version ] ; then version=$(echo $DRONE_TAG | xargs) From 68860a1fb4aeb4f352556b6ff936af6df8c224fd Mon Sep 17 00:00:00 2001 From: scheetz Date: Wed, 20 Jan 2021 19:14:05 -0700 Subject: [PATCH 13/15] Fix bind syntax (#6) --- containerize.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/containerize.sh b/containerize.sh index 5fb36c1..e35457f 100755 --- a/containerize.sh +++ b/containerize.sh @@ -64,13 +64,13 @@ name_version() { if [ -z $version ] ; then version=$(echo $CIRCLE_TAG | xargs) fi - if [ -z $version ] && [ "$GITHUB_REF" =~ "refs/tags/" ]; then + if [ -z $version ] && [[ "$GITHUB_REF" =~ "refs/tags/" ]]; then version=$(echo ${GITHUB_REF##*/} | xargs) fi if [ -z $version ] && [ -n $DRONE_BRANCH ] ; then version=$(echo $DRONE_BRANCH | xargs) fi - if [ -z $version ] && [ -n "$GITHUB_REF" =~ "refs/heads/"]; then + if [ -z $version ] && [[ "$GITHUB_REF" =~ "refs/heads/" ]]; then version=$(echo ${GITHUB_REF##*/} | xargs) fi if [ -z $version ] ; then From 4f4b99b9674271e9c24ff1bf46b9b81215377b05 Mon Sep 17 00:00:00 2001 From: scheetz Date: Sat, 6 Feb 2021 11:24:51 -0700 Subject: [PATCH 14/15] Remove leading dots and underscores from image name (#7) --- containerize.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/containerize.sh b/containerize.sh index e35457f..1b4416b 100755 --- a/containerize.sh +++ b/containerize.sh @@ -14,7 +14,7 @@ show_help() { } sanitize() { - echo $1 | sed -e 's/(//g' -e 's/#/__/g' -e 's/ /--/g' | tr '[:upper:]' '[:lower:]' | xargs + echo $1 | sed -e 's/(//g' -e 's/#/__/g' -e 's/ /--/g' -e 's/^[._]*//' -e 's|/[._]*|/|g' | tr '[:upper:]' '[:lower:]' | xargs } name_repo() { From cec13f894f107d5940c899704aa52212321bbff4 Mon Sep 17 00:00:00 2001 From: scheetz Date: Sat, 6 Feb 2021 14:19:00 -0700 Subject: [PATCH 15/15] Only publish on release (#9) --- .github/workflows/pr.yml | 22 +++++++++++++++++++ .../{dockerimage.yml => release.yml} | 3 --- 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/pr.yml rename .github/workflows/{dockerimage.yml => release.yml} (93%) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 0000000..ca8d302 --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,22 @@ +name: Docker Image CI + +on: + pull_request: + branches: [main] + push: + branches: '*' + + +jobs: + build: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Install jq + run: | + sudo apt-get update + sudo apt-get install --yes jq + - name: Build a local container image + run: | + ./containerize.sh + - run: ./containerize.sh -q diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/release.yml similarity index 93% rename from .github/workflows/dockerimage.yml rename to .github/workflows/release.yml index 61b42b0..0d56bfc 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/release.yml @@ -1,10 +1,7 @@ name: Docker Image CI on: - pull_request: - branches: [main] push: - branches: '*' tags: - 'v[0-9]+.[0-9]+.[0-9]+*'