name: Development Image

on:
  workflow_run:
    workflows: ["unit test"]
    branches:
      - main
    types:
      - completed

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  build_and_push_image:
    name: build image and push to Docker Hub
    if: ${{ github.event.workflow_run.conclusion == 'success' && github.repository_owner == 'neodb-social' }}
    runs-on: ubuntu-latest
    steps:
      - name: Check out the repo
        uses: actions/checkout@v4
        with:
          submodules: 'true'

      - name: Check git version
        id: version
        run: |
          echo "neodb=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
          cd neodb-takahe
          echo "takahe=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT

      - name: Overwrite version in code
        env:
          REF_NAME: ${{ github.ref_name }}
        run: |
          echo '__version__ = "'$REF_NAME'"' > boofilsic/__init__.py
          echo '__version__ = "'$REF_NAME'"' > neodb-takahe/takahe/neodb.py

      - name: Send Discord notification
        uses: appleboy/discord-action@master
        with:
          webhook_id: ${{ secrets.DISCORD_WEBHOOK_ID }}
          webhook_token: ${{ secrets.DISCORD_WEBHOOK_TOKEN }}
          color: "#1857a4"
          message: Building development image ${{ github.ref_name }}-${{ steps.version.outputs.neodb }}-${{ steps.version.outputs.takahe }}

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2

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

      - name: Docker metadata
        id: meta
        uses: docker/metadata-action@v4
        with:
          images: neodb/neodb
          tags: |
            type=edge,branch=main

      - name: Login to DockerHub
        if: github.event_name != 'pull_request'
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Build and push
        uses: docker/build-push-action@v4
        with:
          context: .
          platforms: "linux/amd64,linux/arm64"
          push: ${{ github.event_name != 'pull_request' }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}

      - name: Send Discord notification complete
        uses: appleboy/discord-action@master
        with:
          webhook_id: ${{ secrets.DISCORD_WEBHOOK_ID }}
          webhook_token: ${{ secrets.DISCORD_WEBHOOK_TOKEN }}
          color: "#1857a4"
          message: Published development image ${{ github.ref_name }}-${{ steps.version.outputs.neodb }}-${{ steps.version.outputs.takahe }}
