name: Build and Distribute

on:
  pull_request:
  push:
    branches:
      - master
    paths:
      - "**"
  workflow_dispatch:

concurrency:
  group: ${{ github.head_ref || github.ref }}

jobs:
  deb:
    name: 'DEB'
    permissions:
      id-token: write
      contents: read
    uses: signalwire/actions-template/.github/workflows/cicd-docker-build-and-distribute.yml@main
    strategy:
      # max-parallel: 1
      fail-fast: false
      matrix:
        os:
          - debian
        version:
          - bookworm
          - bullseye
        platform:
          - name: amd64
            runner: ubuntu-latest
          - name: arm32v7
            runner: ubuntu-latest
          - name: arm64v8
            runner: ubuntu-latest
    with:
      RUNNER: ${{ matrix.platform.runner }}
      ARTIFACTS_PATTERN: '.*\.(deb)$'
      DOCKERFILE: .github/docker/${{ matrix.os }}/${{ matrix.version }}/${{ matrix.platform.name }}/Dockerfile
      MAINTAINER: 'Andrey Volk <andrey@signalwire.com>'
      META_FILE_PATH_PREFIX: /var/www/sofia-sip/public/unstable/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}
      PLATFORM: ${{ matrix.platform.name }}
      TARGET_ARTIFACT_NAME: ${{ matrix.os }}-${{ matrix.version }}-${{ matrix.platform.name }}-public-unstable-artifact
      UPLOAD_BUILD_ARTIFACTS: ${{ github.event_name != 'pull_request' }}
    secrets:
      GH_BOT_DEPLOY_TOKEN: ${{ secrets.PAT }}
      HOSTNAME: ${{ secrets.HOSTNAME }}
      PROXY_URL: ${{ secrets.PROXY_URL }}
      USERNAME: ${{ secrets.USERNAME }}
      TELEPORT_TOKEN: ${{ secrets.TELEPORT_TOKEN }}

  deb-mirror:
    name: 'DEB-MIRROR'
    if: ${{ github.event_name != 'pull_request' }}
    needs:
      - deb
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    strategy:
      # max-parallel: 1
      fail-fast: false
      matrix:
        os:
          - debian
        version:
          - bookworm
          - bullseye
        platform:
          - name: amd64
            runner: ubuntu-latest
          - name: arm32v7
            runner: ubuntu-latest
          - name: arm64v8
            runner: ubuntu-latest
        release:
          - release
          - unstable
    steps:
      - name: Checkout reusable actions
        uses: actions/checkout@v4
        with:
          repository: signalwire/actions-template
          ref: main
          fetch-depth: 1
          path: actions
          sparse-checkout: |
            .github/actions/teleport-local-copy/action.yml
          sparse-checkout-cone-mode: false

      - name: Mirror artifacts on remote server behind Teleport (public)
        uses: ./actions/.github/actions/teleport-local-copy
        with:
          SRC: '/var/www/sofia-sip/public/unstable/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}/${{ matrix.os }}-${{ matrix.version }}-${{ matrix.platform.name }}-public-unstable-artifact.tar.gz'
          DST: '/var/www/sofia-sip/public/${{ matrix.release }}/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}/${{ matrix.os }}-${{ matrix.version }}-${{ matrix.platform.name }}-public-${{ matrix.release }}-artifact.tar.gz'
        env:
          HOSTNAME: ${{ secrets.HOSTNAME }}
          PROXY_URL: ${{ secrets.PROXY_URL }}
          TOKEN: ${{ secrets.TELEPORT_TOKEN }}
          USERNAME: ${{ secrets.USERNAME }}

      - name: Mirror artifacts on remote server behind Teleport (fsa)
        uses: ./actions/.github/actions/teleport-local-copy
        with:
          SRC: '/var/www/sofia-sip/public/unstable/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}/${{ matrix.os }}-${{ matrix.version }}-${{ matrix.platform.name }}-public-unstable-artifact.tar.gz'
          DST: '/var/www/sofia-sip/fsa/${{ matrix.release }}/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}/${{ matrix.os }}-${{ matrix.version }}-${{ matrix.platform.name }}-fsa-${{ matrix.release }}-artifact.tar.gz'
        env:
          HOSTNAME: ${{ secrets.HOSTNAME }}
          PROXY_URL: ${{ secrets.PROXY_URL }}
          TOKEN: ${{ secrets.TELEPORT_TOKEN }}
          USERNAME: ${{ secrets.USERNAME }}

  meta:
    name: 'Publish build data to meta-repo'
    if: ${{ github.event_name != 'pull_request' }}
    needs:
      - deb
      - deb-mirror
    permissions:
      id-token: write
      contents: read
    uses: signalwire/actions-template/.github/workflows/meta-repo-content.yml@main
    with:
      META_CONTENT: '/var/www/sofia-sip/{fsa,public}/{release,unstable}/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}'
      META_REPO: signalwire/bamboo_gha_trigger
      META_REPO_BRANCH: trigger/sofia-sip/${{ github.ref_name }}
    secrets:
      GH_BOT_DEPLOY_TOKEN: ${{ secrets.PAT }}
