# Build Constellation binaries as quality control
name: Build Constellation binaries

on:
  workflow_dispatch:
  push:
    branches:
      - main
      - "release/**"
    paths:
      - "**.go"
      - "**/go.mod"
      - "**/go.sum"
  pull_request:
    paths:
      - "**.go"
      - "**/go.mod"
      - "**/go.sum"

jobs:
  build-bootstrapper:
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout
        uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Setup Go environment
        uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
        with:
          go-version: "1.19.4"

      - name: Build the bootstrapper
        uses: ./.github/actions/build_bootstrapper

  build-debugd:
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout
        uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Setup Go environment
        uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
        with:
          go-version: "1.19.4"

      - name: Build debugd
        uses: ./.github/actions/build_debugd

  build-cdbg-linux:
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout
        uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Setup Go environment
        uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
        with:
          go-version: "1.19.4"

      - name: Build cdbg (Linux, amd64)
        uses: ./.github/actions/build_cdbg
        with:
          targetOS: "linux"
          targetArch: "amd64"

      - name: Build cdbg (Linux, arm64)
        uses: ./.github/actions/build_cdbg
        with:
          targetOS: "linux"
          targetArch: "arm64"

  build-cdbg-macos:
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout
        uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Setup Go environment
        uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
        with:
          go-version: "1.19.4"
      - name: Build cdbg (macOS, amd64)
        uses: ./.github/actions/build_cdbg
        with:
          targetOS: "darwin"
          targetArch: "amd64"

      - name: Build cdbg (macOS, arm64)
        uses: ./.github/actions/build_cdbg
        with:
          targetOS: "darwin"
          targetArch: "arm64"

  build-disk-mapper:
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout
        uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Setup Go environment
        uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
        with:
          go-version: "1.19.4"
      - name: Build disk-mapper
        uses: ./.github/actions/build_disk_mapper

  build-cli-linux:
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout
        uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Setup Go environment
        uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
        with:
          go-version: "1.19.4"

      - name: Build CLI (Linux, amd64)
        uses: ./.github/actions/build_cli
        with:
          targetOS: linux
          targetArch: amd64

      - name: Build CLI (Linux, arm64)
        uses: ./.github/actions/build_cli
        with:
          targetOS: linux
          targetArch: arm64

  build-cli-macos:
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout
        uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Setup Go environment
        uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
        with:
          go-version: "1.19.4"

      - name: Build CLI (macOS, amd64)
        uses: ./.github/actions/build_cli
        with:
          targetOS: darwin
          targetArch: amd64

      - name: Build CLI (macOS, arm64)
        uses: ./.github/actions/build_cli
        with:
          targetOS: darwin
          targetArch: arm64
