name: 'Build: Windows' on: workflow_dispatch: inputs: notify_on_failure: description: 'Send Slack notification on build failure' required: false type: boolean default: false workflow_call: inputs: notify_on_failure: description: 'Send Slack notification on build failure' required: false type: boolean default: false secrets: QBOT_SLACK_TOKEN: required: false pull_request: branches: [master] paths: - '**/package.json' - '**/turbo.json' - '.github/workflows/build-windows.yml' - '.github/actions/setup-nodejs/**' jobs: build: runs-on: windows-latest steps: - name: Checkout code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup Node.js and Build uses: ./.github/actions/setup-nodejs with: build-command: pnpm build - name: Smoke test pnpm start -- -- --version shell: pwsh run: | Write-Host "Running smoke test: pnpm start -- -- --version" pnpm start -- -- --version if ($LASTEXITCODE -ne 0) { Write-Host "`n❌ Smoke test failed (exit code: $LASTEXITCODE)" exit $LASTEXITCODE } Write-Host "`n✓ Smoke test passed" - name: Send Slack notification on failure if: failure() && inputs.notify_on_failure == true uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a # v2.1.1 with: method: chat.postMessage token: ${{ secrets.QBOT_SLACK_TOKEN }} payload: | { "channel": "C035KBDA917", "text": "🚨 Windows build failed for `${{ github.repository }}` on branch `${{ github.ref_name }}`", "blocks": [ { "type": "header", "text": { "type": "plain_text", "text": "🚨 Windows Build Failed" } }, { "type": "section", "fields": [ { "type": "mrkdwn", "text": "*Repository:*\n<${{ github.server_url }}/${{ github.repository }}|${{ github.repository }}>" }, { "type": "mrkdwn", "text": "*Branch:*\n`${{ github.ref_name }}`" }, { "type": "mrkdwn", "text": "*Commit:*\n`${{ github.sha }}`" }, { "type": "mrkdwn", "text": "*Trigger:*\n${{ github.event_name }}" } ] }, { "type": "section", "text": { "type": "mrkdwn", "text": ":warning: *Cross-platform compatibility issue detected*\nThis likely indicates Unix-specific commands in package.json scripts or build configuration that don't work on Windows." } }, { "type": "actions", "elements": [ { "type": "button", "text": { "type": "plain_text", "text": ":github: View Workflow Run" }, "style": "danger", "url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" } ] } ] }