-
Notifications
You must be signed in to change notification settings - Fork 1
130 lines (111 loc) · 3.75 KB
/
nodejs-ci.yml
File metadata and controls
130 lines (111 loc) · 3.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Node.js CI (Windows) 🪟
# Modeled after the Lemonade SDK CI pattern:
# - Self-hosted Windows runners
# - Process cleanup before/after (critical for persistent self-hosted state)
# - Single consolidated job for efficiency on self-hosted
on:
push:
branches: [main, develop]
paths:
- 'src/**'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- 'tsconfig.electron.json'
- '.github/workflows/nodejs-ci.yml'
pull_request:
branches: [main, develop]
paths:
- 'src/**'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- 'tsconfig.electron.json'
- '.github/workflows/nodejs-ci.yml'
workflow_dispatch:
permissions:
contents: read
jobs:
# ========================================================================
# BUILD & TEST - Self-hosted Windows runner
# ========================================================================
build-and-test:
name: Build & Test (Windows)
runs-on: [self-hosted, Windows]
env:
NODE_ENV: production
PYTHONIOENCODING: utf-8
steps:
- uses: actions/checkout@v4
with:
clean: true
- name: Cleanup processes (pre-build)
uses: ./.github/actions/cleanup-processes-windows
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
shell: PowerShell
run: |
$ErrorActionPreference = "Stop"
Write-Host "Installing npm dependencies..." -ForegroundColor Cyan
npm ci
if ($LASTEXITCODE -ne 0) {
Write-Host "ERROR: npm ci failed!" -ForegroundColor Red
exit $LASTEXITCODE
}
Write-Host "Dependencies installed successfully!" -ForegroundColor Green
- name: Run ESLint
shell: PowerShell
run: |
Write-Host "Running ESLint..." -ForegroundColor Cyan
npm run lint
if ($LASTEXITCODE -ne 0) {
Write-Host "WARNING: ESLint found issues" -ForegroundColor Yellow
} else {
Write-Host "ESLint passed!" -ForegroundColor Green
}
continue-on-error: true
- name: TypeScript compilation check
shell: PowerShell
run: |
$ErrorActionPreference = "Stop"
Write-Host "Running TypeScript type check..." -ForegroundColor Cyan
npx tsc --noEmit
if ($LASTEXITCODE -ne 0) {
Write-Host "ERROR: TypeScript compilation failed!" -ForegroundColor Red
exit $LASTEXITCODE
}
Write-Host "TypeScript compilation passed!" -ForegroundColor Green
- name: Run tests
shell: PowerShell
run: |
Write-Host "Running tests..." -ForegroundColor Cyan
npm test
if ($LASTEXITCODE -ne 0) {
Write-Host "WARNING: Tests had failures" -ForegroundColor Yellow
} else {
Write-Host "All tests passed!" -ForegroundColor Green
}
continue-on-error: true
- name: Build application
shell: PowerShell
run: |
$ErrorActionPreference = "Stop"
Write-Host "Building application..." -ForegroundColor Cyan
npm run build
if ($LASTEXITCODE -ne 0) {
Write-Host "ERROR: Build failed!" -ForegroundColor Red
exit $LASTEXITCODE
}
Write-Host "Build successful!" -ForegroundColor Green
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: dist/
retention-days: 7
- name: Cleanup processes (post-build)
if: always()
uses: ./.github/actions/cleanup-processes-windows