name: build-and-test

on:
  workflow_call:

jobs:
  with-go:
    strategy:
      matrix:
        go-version: [1.24.2]
        platform: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.platform }}
    steps:
      - name: Check out code
        uses: actions/checkout@v4

      - name: Set up Go ${{ matrix.go-version }}
        uses: actions/setup-go@v5
        with:
          go-version: ${{ matrix.go-version }}

      - name: Build
        run: make

      - name: Test
        run: make test
        env:
          GITHUB_TEST_USER: ${{ secrets._GITHUB_TEST_USER }}
          GITHUB_TOKEN_ADMIN: ${{ secrets._GITHUB_TOKEN_ADMIN }}
          GITHUB_TOKEN_PRIVATE: ${{ secrets._GITHUB_TOKEN_PRIVATE }}
          GITHUB_TOKEN_PUBLIC: ${{ secrets._GITHUB_TOKEN_PUBLIC }}
          GITLAB_API_TOKEN: ${{ secrets.GITLAB_API_TOKEN }}
          GITLAB_PROJECT_ID: ${{ secrets.GITLAB_PROJECT_ID }}

  with-node:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [16.x, 18.x, 20.x]
    defaults:
      run:
        working-directory: webui
    steps:
      - name: Setup Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}

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

      - name: Install
        run: make install

      - name: Build
        run: make build

      - name: Test
        run: make test
