name: Build image

on:
  push:
    # Publish semver tags as releases.
    tags: ["v*.*.*"]

env:
  REGISTRY: docker.io
  IMAGE_NAME: zepai/graphiti

jobs:
  build_and_start_svc:
    uses: ./.github/workflows/build-and-start-svc.yml
    permissions:
      contents: read
      id-token: write
  docker-image:
    needs: build_and_start_svc
    environment:
      name: release
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
    steps:
      - name: Checkout repo for tag push
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.inputs.tag || github.ref  }}

      - name: Set up Depot CLI
        uses: depot/setup-action@v1

      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Extract Docker metadata
        id: meta
        uses: docker/metadata-action@v4.4.0
        with:
          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
          tags: |
            type=semver,pattern={{version}}
            type=semver,pattern={{major}}.{{minor}}
            type=match,pattern=v(.*-beta),group=1
            type=match,pattern=v.*-(beta),group=1

      - name: Depot build and push image
        uses: depot/build-push-action@v1
        with:
          context: .
          platforms: linux/amd64,linux/arm64
          push: ${{ github.event_name != 'pull_request' }}
          tags: ${{ steps.meta.outputs.tags || env.TAGS }}
          labels: ${{ steps.meta.outputs.labels }}
