diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9de72ce..99c4e5c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -102,7 +102,7 @@ jobs: uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_TOKEN }} + password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to GHCR uses: docker/login-action@v3 @@ -126,10 +126,20 @@ jobs: *.cache-to=type=gha,scope=build-${{ env.PLATFORM_PAIR }} *.output=type=image,"name=${{ env.DOCKERHUB_SLUG }},${{ env.GHCR_SLUG }}",push-by-digest=true,name-canonical=true,push=true - - name: Export digest + - name: Export digest (amd64) + if: ${{ matrix.platform }} == "linux/amd64" run: | mkdir -p /tmp/digests - digest="${{ fromJSON(steps.bake.outputs.metadata).image['containerimage.digest'] }}" + if + digest="${{ fromJSON(steps.bake.outputs.metadata).image-amd64['containerimage.digest'] }}" + touch "/tmp/digests/${digest#sha256:}" + + - name: Export digest (arm64) + if: ${{ matrix.platform }} == "linux/arm64" + run: | + mkdir -p /tmp/digests + if + digest="${{ fromJSON(steps.bake.outputs.metadata).image-arm64['containerimage.digest'] }}" touch "/tmp/digests/${digest#sha256:}" - name: Upload digest @@ -139,3 +149,51 @@ jobs: path: /tmp/digests/* if-no-files-found: error retention-days: 1 + + merge: + runs-on: ubuntu-latest + needs: + - build + steps: + - name: Download meta bake definition + uses: actions/download-artifact@v4 + with: + name: bake-meta + path: /tmp + + - name: Download digests + uses: actions/download-artifact@v4 + with: + path: /tmp/digests + pattern: digests-* + merge-multiple: true + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Login to GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Create manifest list and push + working-directory: /tmp/digests + run: | + docker buildx imagetools create $(jq -cr '.target."docker-metadata-action".tags | map(select(startswith("${{ env.DOCKERHUB_SLUG }}")) | "-t " + .) | join(" ")' /tmp/bake-meta.json) \ + $(printf '${{ env.DOCKERHUB_SLUG }}@sha256:%s ' *) + docker buildx imagetools create $(jq -cr '.target."docker-metadata-action".tags | map(select(startswith("${{ env.GHCR_SLUG }}")) | "-t " + .) | join(" ")' /tmp/bake-meta.json) \ + $(printf '${{ env.GHCR_SLUG }}@sha256:%s ' *) + + - name: Inspect image + run: | + tag=$(jq -r '.target."docker-metadata-action".args.DOCKER_META_VERSION' /tmp/bake-meta.json) + docker buildx imagetools inspect ${{ env.DOCKERHUB_SLUG }}:${tag} + docker buildx imagetools inspect ${{ env.GHCR_SLUG }}:${tag}