From c65ac0dadae06f86db109b87da24a48086c7c8c7 Mon Sep 17 00:00:00 2001 From: Christoph Kepler Date: Thu, 28 Oct 2021 14:11:30 +0200 Subject: [PATCH 1/8] Remove prefix from bleeding build tags Directly use the short-sha without sha- prefix --- .github/workflows/docker.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index df65b4bd..e7e4ac56 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -24,7 +24,6 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 - - name: Build image uses: docker/build-push-action@v2 with: @@ -32,8 +31,6 @@ jobs: context: . file: dev/build/Dockerfile - - # Build image and push image to GitHub Packages. # See also https://docs.docker.com/docker-hub/builds/ build-and-push-image: @@ -71,7 +68,7 @@ jobs: with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | - type=sha + type=sha,prefix= - name: Disable dev flag if: startsWith(github.ref, 'refs/tags/v') From 21c65bd5db7d14eb819cf31b7b54558564bc1c20 Mon Sep 17 00:00:00 2001 From: Christoph Kepler Date: Thu, 28 Oct 2021 17:05:38 +0200 Subject: [PATCH 2/8] Rewrite docker worklfow to use action for json Use microsoft/variable-substitution instead of manual jq manipulation --- .github/workflows/docker.yml | 40 +++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index e7e4ac56..227439ce 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -70,29 +70,31 @@ jobs: tags: | type=sha,prefix= - - name: Disable dev flag - if: startsWith(github.ref, 'refs/tags/v') - run: | - sudo apt-get install jq -y - mv package.json pkg-temp.json - jq -r '.dev |= false' pkg-temp.json > package.json - rm pkg-temp.json + - name: Rewrite entries in package.json to repository + uses: microsoft/variable-substitution@v1 + with: + files: "package.json" + env: + repository.url: "git+${{ github.server_url }}/${{ github.repository }}.git" + bugs.url: "${{ github.server_url }}/${{ github.repository }}/issues" + homepage: "${{ github.server_url }}/${{ github.repository }}#readme" - - name: Set Package Version (tag) + - name: Disable dev flag and set package version (tag) if: startsWith(github.ref, 'refs/tags/v') - run: | - mv package.json pkg-temp.json - jq -r '.version |= "${{ steps.meta_tag.outputs.version }}"' pkg-temp.json > package.json - rm pkg-temp.json - cat package.json + uses: microsoft/variable-substitution@v1 + with: + files: "package.json" + env: + dev: "false" + version: ${{ steps.meta_tag.outputs.version }} - - name: Set Package Version (bleeding) + - name: Set package version (bleeding) if: false == startsWith(github.ref, 'refs/tags/v') - run: | - mv package.json pkg-temp.json - jq -r '.version |= "${{ steps.meta_bleeding.outputs.version }}"' pkg-temp.json > package.json - rm pkg-temp.json - cat package.json + uses: microsoft/variable-substitution@v1 + with: + files: "package.json" + env: + version: ${{ steps.meta_bleeding.outputs.version }} - name: Build and push Docker image (tag) if: startsWith(github.ref, 'refs/tags/v') From 7b24acf99419ff3b9a201e69ef8f3c2d96d94254 Mon Sep 17 00:00:00 2001 From: Christoph Kepler Date: Thu, 28 Oct 2021 17:09:17 +0200 Subject: [PATCH 3/8] Add build time to package.json in workflow Use gerred/actions/current-time to get ISO8061 timestamp and replace releaseDate in package.json --- .github/workflows/docker.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 227439ce..1affe83e 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -70,11 +70,16 @@ jobs: tags: | type=sha,prefix= + - name: Get build time + uses: gerred/actions/current-time@master + id: build_time + - name: Rewrite entries in package.json to repository uses: microsoft/variable-substitution@v1 with: files: "package.json" env: + releaseDate: ${{ steps.build_time.outputs.time }} repository.url: "git+${{ github.server_url }}/${{ github.repository }}.git" bugs.url: "${{ github.server_url }}/${{ github.repository }}/issues" homepage: "${{ github.server_url }}/${{ github.repository }}#readme" From 2337de30099f6383f5340fc8cfd2dc1db50ea637 Mon Sep 17 00:00:00 2001 From: Christoph Kepler Date: Thu, 28 Oct 2021 17:16:36 +0200 Subject: [PATCH 4/8] Use type raw for bleeding instead of manual insert --- .github/workflows/docker.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 1affe83e..0720a238 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -68,7 +68,8 @@ jobs: with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | - type=sha,prefix= + type=sha,prefix=,priority=200 + type=raw,value=bleeding,priority=100 - name: Get build time uses: gerred/actions/current-time@master @@ -117,4 +118,4 @@ jobs: push: true context: . file: dev/build/Dockerfile - tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:bleeding,${{ steps.meta_bleeding.outputs.tags }} + tags: ${{ steps.meta_bleeding.outputs.tags }} From 3eb43927b4ea7d7390843154093c5facbcaa1925 Mon Sep 17 00:00:00 2001 From: Christoph Kepler Date: Thu, 28 Oct 2021 17:17:28 +0200 Subject: [PATCH 5/8] Add opencollective labels on build --- .github/workflows/docker.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 0720a238..6a7feddf 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -110,6 +110,8 @@ jobs: context: . file: dev/build/Dockerfile tags: ${{ steps.meta_tag.outputs.tags }} + labels: ${{ steps.meta_tag.outputs.labels }} + - name: Build and push Docker image (bleeding) if: false == startsWith(github.ref, 'refs/tags/v') @@ -119,3 +121,4 @@ jobs: context: . file: dev/build/Dockerfile tags: ${{ steps.meta_bleeding.outputs.tags }} + labels: ${{ steps.meta_bleeding.outputs.labels }} From 37c1dca3c1ae0fe62ce40a39bf05029b6b4f5085 Mon Sep 17 00:00:00 2001 From: Christoph Kepler Date: Thu, 28 Oct 2021 17:19:08 +0200 Subject: [PATCH 6/8] Remove IMAGE_NAME because of indirection IMAGE_NAME points to github.repository so use this instead --- .github/workflows/docker.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6a7feddf..e56906fb 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -13,7 +13,6 @@ on: env: REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} jobs: # Test building the docker image on pull requests @@ -57,7 +56,7 @@ jobs: if: startsWith(github.ref, 'refs/tags/v') uses: docker/metadata-action@v3 with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + images: ${{ env.REGISTRY }}/${{ github.repository }} tags: | type=ref,event=tag @@ -66,7 +65,7 @@ jobs: if: false == startsWith(github.ref, 'refs/tags/v') uses: docker/metadata-action@v3 with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + images: ${{ env.REGISTRY }}/${{ github.repository }} tags: | type=sha,prefix=,priority=200 type=raw,value=bleeding,priority=100 From 2eae4b46a8b37dcbf1a28beb897dc1e217c75671 Mon Sep 17 00:00:00 2001 From: Christoph Kepler Date: Thu, 28 Oct 2021 17:23:10 +0200 Subject: [PATCH 7/8] Use edge instead of bleeding type=edge is provided by the docker metadata extractor --- .github/workflows/docker.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index e56906fb..c9fd08a3 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -51,7 +51,7 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Extract metadata for Docker (tag) + - name: Extract metadata for Docker for tag id: meta_tag if: startsWith(github.ref, 'refs/tags/v') uses: docker/metadata-action@v3 @@ -60,21 +60,21 @@ jobs: tags: | type=ref,event=tag - - name: Extract metadata for Docker (bleeding) - id: meta_bleeding + - name: Extract metadata for Docker on branch + id: meta_edge if: false == startsWith(github.ref, 'refs/tags/v') uses: docker/metadata-action@v3 with: images: ${{ env.REGISTRY }}/${{ github.repository }} tags: | type=sha,prefix=,priority=200 - type=raw,value=bleeding,priority=100 + type=edge,priority=100 - name: Get build time uses: gerred/actions/current-time@master id: build_time - - name: Rewrite entries in package.json to repository + - name: Rewrite entries in package.json to match repository uses: microsoft/variable-substitution@v1 with: files: "package.json" @@ -84,7 +84,7 @@ jobs: bugs.url: "${{ github.server_url }}/${{ github.repository }}/issues" homepage: "${{ github.server_url }}/${{ github.repository }}#readme" - - name: Disable dev flag and set package version (tag) + - name: Disable dev flag and set package version for tag if: startsWith(github.ref, 'refs/tags/v') uses: microsoft/variable-substitution@v1 with: @@ -93,15 +93,15 @@ jobs: dev: "false" version: ${{ steps.meta_tag.outputs.version }} - - name: Set package version (bleeding) + - name: Set package version for branch if: false == startsWith(github.ref, 'refs/tags/v') uses: microsoft/variable-substitution@v1 with: files: "package.json" env: - version: ${{ steps.meta_bleeding.outputs.version }} + version: ${{ steps.meta_edge.outputs.version }} - - name: Build and push Docker image (tag) + - name: Build and push Docker image for tag if: startsWith(github.ref, 'refs/tags/v') uses: docker/build-push-action@v2 with: @@ -112,12 +112,12 @@ jobs: labels: ${{ steps.meta_tag.outputs.labels }} - - name: Build and push Docker image (bleeding) + - name: Build and push Docker image on branch if: false == startsWith(github.ref, 'refs/tags/v') uses: docker/build-push-action@v2 with: push: true context: . file: dev/build/Dockerfile - tags: ${{ steps.meta_bleeding.outputs.tags }} - labels: ${{ steps.meta_bleeding.outputs.labels }} + tags: ${{ steps.meta_edge.outputs.tags }} + labels: ${{ steps.meta_edge.outputs.labels }} From e231831dead37d61eb6ada05c2c6ac78294ccbb3 Mon Sep 17 00:00:00 2001 From: Christoph Kepler Date: Thu, 28 Oct 2021 19:17:18 +0200 Subject: [PATCH 8/8] Run separate steps for tags on the end This enables the json manipulation to be run only once for rolling releases. Another run or metadata and the dev flag disabling is done extra --- .github/workflows/docker.yml | 59 +++++++++++++++--------------------- 1 file changed, 25 insertions(+), 34 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index c9fd08a3..4d6521ec 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -51,22 +51,13 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Extract metadata for Docker for tag - id: meta_tag - if: startsWith(github.ref, 'refs/tags/v') - uses: docker/metadata-action@v3 - with: - images: ${{ env.REGISTRY }}/${{ github.repository }} - tags: | - type=ref,event=tag - - - name: Extract metadata for Docker on branch - id: meta_edge - if: false == startsWith(github.ref, 'refs/tags/v') + - name: Extract metadata for Docker + id: meta uses: docker/metadata-action@v3 with: images: ${{ env.REGISTRY }}/${{ github.repository }} tags: | + type=ref,event=tag,priority=400 type=sha,prefix=,priority=200 type=edge,priority=100 @@ -79,27 +70,38 @@ jobs: with: files: "package.json" env: + version: ${{ steps.meta.outputs.version }} releaseDate: ${{ steps.build_time.outputs.time }} repository.url: "git+${{ github.server_url }}/${{ github.repository }}.git" bugs.url: "${{ github.server_url }}/${{ github.repository }}/issues" homepage: "${{ github.server_url }}/${{ github.repository }}#readme" - - name: Disable dev flag and set package version for tag + - name: Build and push Docker image on branch + if: false == startsWith(github.ref, 'refs/tags/v') + uses: docker/build-push-action@v2 + with: + push: true + context: . + file: dev/build/Dockerfile + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + - name: Extract metadata for Docker for tag + id: metatag if: startsWith(github.ref, 'refs/tags/v') - uses: microsoft/variable-substitution@v1 + uses: docker/metadata-action@v3 with: - files: "package.json" - env: - dev: "false" - version: ${{ steps.meta_tag.outputs.version }} + images: ${{ env.REGISTRY }}/${{ github.repository }} + tags: | + type=ref,event=tag - - name: Set package version for branch - if: false == startsWith(github.ref, 'refs/tags/v') + - name: Set dev flag to false in package.json for tag + if: startsWith(github.ref, 'refs/tags/v') uses: microsoft/variable-substitution@v1 with: files: "package.json" env: - version: ${{ steps.meta_edge.outputs.version }} + dev: "false" - name: Build and push Docker image for tag if: startsWith(github.ref, 'refs/tags/v') @@ -108,16 +110,5 @@ jobs: push: true context: . file: dev/build/Dockerfile - tags: ${{ steps.meta_tag.outputs.tags }} - labels: ${{ steps.meta_tag.outputs.labels }} - - - - name: Build and push Docker image on branch - if: false == startsWith(github.ref, 'refs/tags/v') - uses: docker/build-push-action@v2 - with: - push: true - context: . - file: dev/build/Dockerfile - tags: ${{ steps.meta_edge.outputs.tags }} - labels: ${{ steps.meta_edge.outputs.labels }} + tags: ${{ steps.metatag.outputs.tags }} + labels: ${{ steps.metatag.outputs.labels }}