name: "Build: Docker"

permissions:
  contents: read
  packages: write

on:
  workflow_call:
  workflow_dispatch:

env:
  PLATFORMS: ${{ var.PLATFORMS }}

jobs:
  docker-build:
    name: Build Swarm Load Balancer
    runs-on: ubuntu-latest
    steps:
      - uses: benzine-framework/action-setup-php@main
      - uses: benzine-framework/action-get-datetime@main
      - uses: benzine-framework/action-setup-docker@main
        with:
          ghcr_user: ${{ vars.SERVICE_ACCOUNT_USERNAME }}
          ghcr_token: ${{ secrets.SERVICE_ACCOUNT_TOKEN }}
      - name: "Build & Push Candidate Image as ${{ env.CANDIDATE_IMAGE }}"
        uses: docker/build-push-action@v5
        with:
          context: .
          target: bouncer
          build-args: |
            GIT_SHA=${{ github.sha }}
            GIT_BUILD_ID=${{ github.ref_name }}
            GIT_COMMIT_MESSAGE=${{ github.event.head_commit.message }}
            BUILD_DATE=${{ env.ATOM }}
          platforms: ${{ github.actor != 'nektos/act' && env.PLATFORMS || 'linux/amd64' }}
          pull: true
          push: ${{ github.ref == 'refs/heads/main' }}
          tags: |
            ${{ vars.LOADBALANCER_DOCKER_IMAGE }}:latest
            ${{ vars.LOADBALANCER_DOCKER_IMAGE }}:sha-${{ github.sha }}
          cache-from: ${{ env.DOCKER_CACHE_FROM }}
          cache-to: ${{ env.DOCKER_CACHE_TO }}