name: Publishes the test-ubuntu-git Container Image

on:
  # Use an on demand workflow trigger.  
  # (Forked copies of actions/checkout won't have permission to update GHCR.io/actions, 
  #  so avoid trigger events that run automatically.)
  workflow_dispatch:
    inputs:
      publish:
        description:  'Publish to ghcr.io?'
        type: boolean
        required: true
        default: false

env:
  REGISTRY: ghcr.io
  IMAGE_NAME: actions/test-ubuntu-git

jobs:
  build-and-push-image:
    runs-on: ubuntu-latest
    # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
    permissions:
      contents: read
      packages: write
 
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      # Use `docker/login-action` to log in to GHCR.io. 
      # Once published, the packages are scoped to the account defined here.
      - name: Log in to the ghcr.io container registry
        uses: docker/login-action@v3.0.0
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      # Use `docker/metadata-action` to preserve tags and labels that exist on the GHCR.io container image. 
      # - name: Extract metadata (tags, labels) for Docker
      #   id: meta
      #   uses: docker/metadata-action@v5.5.1
      #   with:
      #     images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

      # Use `docker/build-push-action` to build (and optionally publish) the image. 
      - name: Build and push Docker image
        uses: docker/build-push-action@v5.1.0
        with:
          context: .
          file: images/test-ubuntu-git.Dockerfile
          push: ${{ inputs.publish }}
          tags:  ${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA }}
          # tags: ${{ steps.meta.outputs.tags }}
          # labels: ${{ steps.meta.outputs.labels }}