name: Build Docker Images

on:
  workflow_run:
    workflows:
      - Invariant gateway testing CI
    types:
      - completed
    branches:
      - main
      - v*

jobs:
  build-explorer-local-images:
    runs-on: ubuntu-latest
    # check that this is a tag or the 'main' branch but not a pull request
    # if: ${{ github.event.workflow_run.conclusion == 'success' && (github.ref_type == 'tag' || github.ref == 'refs/heads/main') }}

    steps:
      - name: Checkout Code
        uses: actions/checkout@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2

      - name: Login to GitHub Container Registry
        run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

      # based on whether this is a version tag or a branch, we will set the tags for the pushed images
      - name: Set Docker Tags
        id: set-tags
        run: |
          if [[ "${{ github.event.workflow_run.head_branch }}" == "main" ]]; then
            echo "tags=ghcr.io/${{ github.repository }}/gateway:latest" >> $GITHUB_ENV
          # starts with v* and only contains numbers and dots
          elif [[ "${{ github.event.workflow_run.head_branch }}" =~ ^v[0-9.]+$ ]]; then
            # get tag name from the event
            version=${{ github.event.workflow_run.head_branch }}
            # remove the refs/tags/ prefix
            echo "version string is $version"
            echo "tags=ghcr.io/${{ github.repository }}/gateway:latest,ghcr.io/${{ github.repository }}/gateway:${version}" >> $GITHUB_ENV
          else
            echo "Failed to determine the tags for the Docker images for branch ${{ github.event.workflow_run.head_branch }}"
            exit 1
          fi

      - name: build gateway image
        uses: docker/build-push-action@v5
        with:
          context: ./gateway
          file: ./gateway/Dockerfile.gateway
          platforms: linux/amd64
          push: true
          tags: ${{ env.tags }}
