| name: Publish Docker image |
| |
| permissions: read-all |
| |
| on: |
| # For initial testing and we can remove it later. |
| workflow_dispatch: |
| inputs: |
| tag: |
| description: 'Tag for the container image' |
| required: true |
| type: string |
| |
| jobs: |
| docker-publish: |
| name: Publish Docker image |
| runs-on: ubuntu-24.04 |
| permissions: |
| contents: read |
| packages: write |
| env: |
| REGISTRY: ghcr.io |
| IMAGE_NAME: ${{ github.repository }} |
| steps: |
| - name: Check out repository |
| uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 |
| # Based on https://docs.github.com/en/actions/publishing-packages/publishing-docker-images. |
| - name: Log in to the Container registry |
| uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 |
| with: |
| registry: ${{ env.REGISTRY }} |
| username: ${{ github.actor }} |
| password: ${{ secrets.GITHUB_TOKEN }} |
| - name: Extract metadata (tags, labels) for Docker |
| id: meta |
| uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 |
| with: |
| images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} |
| tags: | |
| latest |
| type=raw,value=${{ inputs.tag }} |
| - name: Build and push the Docker image |
| uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 |
| with: |
| context: ./tools/docker |
| push: true |
| tags: ${{ steps.meta.outputs.tags }} |
| labels: ${{ steps.meta.outputs.labels }} |