name: Container Image on: pull_request: branches: - main push: branches: - main tags: - 'v*' workflow_dispatch: {} env: REGISTRY: ghcr.io IMAGE_NAME: "${{ github.repository }}" jobs: build: runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to GHCR if: "${{ github.event_name != 'pull_request' }}" uses: docker/login-action@v3 with: registry: "${{ env.REGISTRY }}" username: "${{ github.actor }}" password: "${{ secrets.GITHUB_TOKEN }}" - name: Extract image metadata id: meta uses: docker/metadata-action@v5 with: images: "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" tags: | type=ref,event=branch type=ref,event=tag type=sha type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }} - name: Build and publish image uses: docker/build-push-action@v6 with: context: . file: ./Dockerfile platforms: linux/amd64 push: "${{ github.event_name != 'pull_request' }}" tags: "${{ steps.meta.outputs.tags }}" labels: "${{ steps.meta.outputs.labels }}" cache-from: type=gha cache-to: type=gha,mode=max