name: TestDriver.ai Build

on:
    push:
        branches:
            - main
        tags:
            - "v[0-9]+.[0-9]+.[0-9]+*"
    pull_request:
        # branches:
        #     - main
        # paths-ignore:
        #     - "docs/**"
        #     - ".storybook/**"
        #     - ".vscode/**"
        #     - ".editorconfig"
        #     - ".gitignore"
        #     - ".prettierrc"
        #     - ".eslintrc.js"
        #     - "**/*.md"
        types:
            - opened
            - synchronize
            - reopened
            - ready_for_review
    schedule:
        - cron: 0 21 * * *
    workflow_dispatch: null

env:
    GO_VERSION: "1.23"
    NODE_VERSION: 22

permissions:
    contents: read # To allow the action to read repository contents
    pull-requests: write # To allow the action to create/update pull request comments

jobs:
    build_and_upload:
        name: Build for TestDriver.ai
        runs-on: windows-latest
        if: github.event.pull_request.draft == false
        steps:
            - uses: actions/checkout@v4

            # General build dependencies
            - uses: actions/setup-go@v5
              with:
                  go-version: ${{env.GO_VERSION}}
            - uses: actions/setup-node@v4
              with:
                  node-version: ${{env.NODE_VERSION}}
            - name: Install Yarn
              uses: nick-fields/retry@v3
              with:
                  command: |
                      corepack enable
                      yarn install
                  timeout_minutes: 5
                  max_attempts: 3
            - name: Install Task
              uses: arduino/setup-task@v2
              with:
                  version: 3.x
                  repo-token: ${{ secrets.GITHUB_TOKEN }}
            - name: Install Zig
              uses: mlugg/setup-zig@v1

            - name: Build
              run: task package
              env:
                  USE_SYSTEM_FPM: true # Ensure that the installed version of FPM is used rather than the bundled one.
                  CSC_IDENTITY_AUTO_DISCOVERY: false # disable codesign
              shell: powershell # electron-builder's Windows code signing package has some compatibility issues with pwsh, so we need to use Windows Powershell

            # Upload .exe as an artifact
            - name: Upload .exe artifact
              id: upload
              uses: actions/upload-artifact@v4
              with:
                  name: windows-exe
                  path: make/*.exe
