name: Build and Publish Docker Image on: push: branches: - '*' tags: - '*' jobs: build-and-publish: runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Check Out Repository uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to GitHub Container Registry if: startsWith(github.ref, 'refs/tags/') uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract Tag Name if: startsWith(github.ref, 'refs/tags/') id: tag_name run: echo "::set-output name=TAG_NAME::${GITHUB_REF##*/}" - name: Build Docker Image uses: docker/build-push-action@v5 with: context: . file: Dockerfile push: ${{ startsWith(github.ref, 'refs/tags/') }} tags: | ghcr.io/${{ github.repository }}:latest ghcr.io/${{ github.repository }}:1 ${{ steps.tag_name.outputs.TAG_NAME != '' && format('ghcr.io/{0}:{1}', github.repository, steps.tag_name.outputs.TAG_NAME) }}