name: "Release Binaries"

on:
  release:
    types: [created]

jobs:
  build_binaries:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        goos: [linux]
        goarch: [amd64, arm64]

    steps:
      - name: Check out source code
        uses: actions/checkout@v4

      - name: setup NodeJS
        uses: actions/setup-node@v4
        with:
          node-version: "20"
          registry-url: "https://registry.npmjs.org"

      - name: Setup Go
        uses: actions/setup-go@v5
        with:
          go-version: 1.22.x

      # Need to build the UI here before build the server binary with go-release-action
      - name: Build UI
        run: make ui

      - name: Build server binary
        uses: wangyoucao577/go-release-action@v1
        with:
          github_token: ${{ secrets.ACTION_TOKEN }}
          goos: ${{ matrix.goos }}
          goarch: ${{ matrix.goarch }}
          overwrite: true
          pre_command: export CGO_ENABLED=0
          ldflags: -s -w
          build_flags: -tags server
          project_path: .
          binary_name: server
          extra_files: LICENSE README.md

      - name: Build client binary
        uses: wangyoucao577/go-release-action@v1
        with:
          github_token: ${{ secrets.ACTION_TOKEN }}
          goos: ${{ matrix.goos }}
          goarch: ${{ matrix.goarch }}
          overwrite: true
          pre_command: export CGO_ENABLED=0
          ldflags: -s -w
          binary_name: client
          project_path: .
          extra_files: LICENSE README.md
