diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 51a0453c1..ea915e508 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -20,22 +20,31 @@ on: env: REGISTRY: ghcr.io REGISTRY_IMAGE: ghcr.io/op-rs/kona - TARGET_NAME: ${{ inputs.target || fromJson(format('["{}"]', github.ref_name))[0].split('/')[0] }} GIT_REF_NAME: ${{ github.ref_name }} jobs: prepare: - name: Prepare Bake ($TARGET_NAME) + name: Prepare Bake runs-on: ubuntu-latest outputs: matrix: ${{ steps.platforms.outputs.matrix }} + target: ${{ steps.target-spec.outputs.target }}} steps: - name: Checkout uses: actions/checkout@v4 + - name: Specify Target + id: target-spec + run: | + export TARGET="${{ inputs.target }}" + if [[ -z $TARGET ]]; then + export TARGET="${GIT_REF_NAME%/*}" + fi + echo "Target: $TARGET" + echo "target=$TARGET" >> $GITHUB_OUTPUT - name: Create matrix id: platforms run: | - echo "matrix=$(docker buildx bake -f docker/docker-bake.hcl ${{ env.TARGET_NAME }} --print | jq -cr '.target."${{ env.TARGET_NAME }}".platforms')" >> ${GITHUB_OUTPUT} + echo "matrix=$(docker buildx bake -f docker/docker-bake.hcl ${{ steps.target-spec.outputs.target }} --print | jq -cr '.target."${{ steps.target-spec.outputs.target }}".platforms')" >> ${GITHUB_OUTPUT} - name: Show matrix run: | echo ${{ steps.platforms.outputs.matrix }} @@ -43,7 +52,7 @@ jobs: id: meta uses: docker/metadata-action@v5 with: - images: ${{ env.REGISTRY_IMAGE }}/${{ env.TARGET_NAME }} + images: ${{ env.REGISTRY_IMAGE }}/${{ steps.target-spec.outputs.target }} - name: Rename meta bake definition file run: | mv "${{ steps.meta.outputs.bake-file }}" "${{ runner.temp }}/bake-meta.json" @@ -56,7 +65,7 @@ jobs: retention-days: 1 build: - name: Build Image (${{ env.TARGET_NAME }} - ${{ matrix.platform }}) + name: Build Image (${{ needs.prepare.outputs.target }} - ${{ matrix.platform }}) runs-on: ${{ matrix.platform == 'linux/amd64' && 'ubuntu-latest' || 'ubuntu-22.04-arm' }} needs: - prepare @@ -89,15 +98,15 @@ jobs: files: | ./docker/docker-bake.hcl cwd://${{ runner.temp }}/bake-meta.json - targets: ${{ env.TARGET_NAME }} + targets: ${{ needs.prepare.outputs.target }} set: | *.tags= *.platform=${{ matrix.platform }} - *.output=type=image,"name=${{ env.REGISTRY_IMAGE }}/${{ env.TARGET_NAME }}",push-by-digest=true,name-canonical=true,push=true + *.output=type=image,"name=${{ env.REGISTRY_IMAGE }}/${{ needs.prepare.outputs.target }}",push-by-digest=true,name-canonical=true,push=true - name: Export digest run: | mkdir -p ${{ runner.temp }}/digests - digest="${{ fromJSON(steps.bake.outputs.metadata)[env.TARGET_NAME]['containerimage.digest'] }}" + digest="${{ fromJSON(steps.bake.outputs.metadata)[needs.prepare.outputs.target]['containerimage.digest'] }}" touch "${{ runner.temp }}/digests/${digest#sha256:}" - name: Upload digest uses: actions/upload-artifact@v4 @@ -108,7 +117,7 @@ jobs: retention-days: 1 merge: - name: Publish Manifest (${{ env.TARGET_NAME }}) + name: Publish Manifest (${{ needs.prepare.outputs.target }}) runs-on: ubuntu-latest needs: - build @@ -135,9 +144,9 @@ jobs: - name: Create manifest list and push working-directory: ${{ runner.temp }}/digests run: | - docker buildx imagetools create $(jq -cr '.target."docker-metadata-action".tags | map(select(startswith("${{ env.REGISTRY_IMAGE }}/${{ env.TARGET_NAME }}")) | "-t " + .) | join(" ")' ${{ runner.temp }}/bake-meta.json) \ - $(printf '${{ env.REGISTRY_IMAGE }}/${{ env.TARGET_NAME }}@sha256:%s ' *) + docker buildx imagetools create $(jq -cr '.target."docker-metadata-action".tags | map(select(startswith("${{ env.REGISTRY_IMAGE }}/${{ needs.prepare.outputs.target }}")) | "-t " + .) | join(" ")' ${{ runner.temp }}/bake-meta.json) \ + $(printf '${{ env.REGISTRY_IMAGE }}/${{ needs.prepare.outputs.target }}@sha256:%s ' *) - name: Inspect image run: | - docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}/${{ env.TARGET_NAME }}:$(jq -r '.target."docker-metadata-action".args.DOCKER_META_VERSION' ${{ runner.temp }}/bake-meta.json) + docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}/${{ needs.prepare.outputs.target }}:$(jq -r '.target."docker-metadata-action".args.DOCKER_META_VERSION' ${{ runner.temp }}/bake-meta.json)