name: Build Docker fast
run-name: Build Docker Images fast
on:
  push:

jobs:
  BuildImage:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2
      
      - name: Login to Docker Registry
        uses: docker/login-action@v2
        with:
          registry: git.woodburn.au
          username: nathanwoodburn
          password: ${{ secrets.DOCKERGIT_TOKEN }}
      
      - name: Extract metadata
        id: meta
        run: |
          echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
          tag=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}
          tag=${tag//\//-}
          echo "tag=$tag" >> $GITHUB_OUTPUT
          tag_num=${GITHUB_RUN_NUMBER}
          echo "tag_num=$tag_num" >> $GITHUB_OUTPUT
          
          if [[ "$tag" == "main" ]]; then
            echo "final_tag=latest" >> $GITHUB_OUTPUT
          else
            echo "final_tag=${tag}-${tag_num}" >> $GITHUB_OUTPUT
          fi
          
          repo=$GITHUB_REPOSITORY
          repo=${repo#*/}
          repo=$(echo $repo | tr '[:upper:]' '[:lower:]')
          echo "repo=$repo" >> $GITHUB_OUTPUT
      
      - name: Build and push
        uses: docker/build-push-action@v4
        with:
          context: .
          push: true
          tags: |
            git.woodburn.au/nathanwoodburn/${{ steps.meta.outputs.repo }}:${{ steps.meta.outputs.final_tag }}
            git.woodburn.au/nathanwoodburn/${{ steps.meta.outputs.repo }}:${{ steps.meta.outputs.tag_num }}
            git.woodburn.au/nathanwoodburn/${{ steps.meta.outputs.repo }}:${{ steps.meta.outputs.tag }}
          cache-from: type=gha
          cache-to: type=gha,mode=max