Release 11.0.2 #752
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build docker image | |
| permissions: | |
| contents: read | |
| on: | |
| # Backstop for a manually-created release: releases created by the Release | |
| # workflow itself never emit this event (see the workflow_call comment | |
| # below), so in the normal flow the push happens via workflow_call instead. | |
| release: | |
| types: | |
| - published | |
| push: | |
| branches: | |
| - master | |
| # Allow maintainers to build/validate the multi-arch image on demand | |
| # (e.g. from a feature branch) without pushing anything to the registry. | |
| workflow_dispatch: | |
| # Called directly by the Release workflow, since a GitHub Release created | |
| # with that workflow's own GITHUB_TOKEN does not emit a `release: | |
| # published` event (GitHub recursion prevention), so the trigger above | |
| # never fires for it. | |
| workflow_call: | |
| inputs: | |
| push_image: | |
| description: "Push the built image to ghcr.io (used by the Release workflow)" | |
| type: boolean | |
| default: false | |
| env: | |
| REGISTRY: ghcr.io | |
| IMAGE_NAME: ${{ github.repository }} | |
| jobs: | |
| build-and-push-image: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v7 | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v4 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v4 | |
| - name: Docker meta | |
| id: meta | |
| uses: docker/metadata-action@v6 | |
| with: | |
| images: | | |
| ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
| # generate Docker tags based on the following events/attributes | |
| tags: | | |
| type=ref,event=branch | |
| type=ref,event=pr | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| - name: Log in to the Container registry | |
| # Only authenticate when we will actually push: a published release | |
| # event, or the Release workflow calling this with push_image: true | |
| # (see the workflow_call comment above). The master push and | |
| # workflow_dispatch runs build for validation only and must never | |
| # touch the registry, so they skip the login entirely. | |
| if: github.event_name == 'release' || inputs.push_image == true | |
| uses: docker/login-action@v4 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build and push Docker image | |
| uses: docker/build-push-action@v7 | |
| with: | |
| context: . | |
| platforms: linux/amd64,linux/arm64 | |
| # Push on a published release event, or when the Release workflow | |
| # calls this with push_image: true. Every other trigger (push to | |
| # master, workflow_dispatch) builds both architectures for | |
| # validation but never pushes. | |
| push: ${{ github.event_name == 'release' || inputs.push_image == true }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} |