name: Build and push a branch image to ghcr

on:
  workflow_dispatch:
  push:
    branches:
      - dev
      - master
  repository_dispatch:
    types: [benchmark-trigger-image-build]

jobs:
  branch-build-and-push:
    if: ${{ !github.event.client_payload.triggered }}
    runs-on: [self-hosted, linux, x64]
    steps:
        - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
          with:
            ref: ${{ github.ref_name }}
        - uses: ./.github/actions/branch-build-and-push
          with:
            ghcr-password: ${{ secrets.GITHUB_TOKEN }}
            dockerhub-password: ${{ secrets.DOCKERHUB_TOKEN }}
            push-to-ghcr: true
            # Only push 'dev' and 'master' branch to Docker Hub
            push-to-dockerhub: ${{ github.ref_name == 'dev' || github.ref_name == 'master' }}
            # Enable `staging` feature for all branches except master (tags are excluded by ref_type check)
            staging-build: ${{ github.ref_type == 'branch' && github.ref_name != 'master' }}

  triggered-branch-build-and-push:
    if: ${{ github.event.client_payload.triggered }}
    runs-on: [self-hosted, linux, x64]
    steps:
        - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
          with:
            ref: ${{ github.event.client_payload.version }}
        - uses: ./.github/actions/branch-build-and-push
          with:
            ghcr-password: ${{ secrets.GITHUB_TOKEN }}
            push-to-ghcr: true
