forked from ge9/IddSampleDriver
-
-
Notifications
You must be signed in to change notification settings - Fork 366
140 lines (122 loc) · 4.73 KB
/
ci-validation.yml
File metadata and controls
140 lines (122 loc) · 4.73 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
131
132
133
134
135
136
137
138
139
140
name: Fast CI Validation
on:
pull_request:
branches: [ main, master ]
push:
branches: [ main, master ]
paths-ignore:
- '**.md'
- 'docs/**'
- 'LICENSE*'
env:
BUILD_CONFIGURATION: Release
jobs:
# Quick validation - runs for all PRs and pushes
validate:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v1
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '6.0.x'
# Quick compilation check for VDD
- name: Quick VDD Compilation Check
run: |
Write-Output "Performing quick VDD compilation check..."
$vddSln = "Virtual Display Driver (HDR)/MTTVDD.sln"
if (Test-Path $vddSln) {
Write-Output "Building VDD for syntax/compilation validation..."
msbuild $vddSln /p:Configuration=$env:BUILD_CONFIGURATION /p:Platform=x64 /verbosity:minimal /target:Build
if ($LASTEXITCODE -eq 0) {
Write-Output "✅ VDD compilation check passed"
} else {
Write-Output "❌ VDD compilation check failed"
exit 1
}
} else {
Write-Output "❌ VDD solution file not found"
exit 1
}
# Quick compilation check for VAD
- name: Quick VAD Compilation Check
run: |
Write-Output "Performing quick VAD compilation check..."
$vadSln = "Virtual-Audio-Driver (Latest Stable)/VirtualAudioDriver.sln"
if (Test-Path $vadSln) {
Write-Output "Building VAD for syntax/compilation validation..."
msbuild $vadSln /p:Configuration=$env:BUILD_CONFIGURATION /p:Platform=x64 /verbosity:minimal /target:Build
if ($LASTEXITCODE -eq 0) {
Write-Output "✅ VAD compilation check passed"
} else {
Write-Output "❌ VAD compilation check failed"
exit 1
}
} else {
Write-Output "❌ VAD solution file not found"
exit 1
}
# Checkout and validate Control App
- name: Checkout Virtual Driver Control Repository
uses: actions/checkout@v4
with:
repository: 'VirtualDrivers/Virtual-Driver-Control'
path: 'control-app-repo'
token: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true
- name: Control App Dependencies and Lint Check
run: |
$controlAppPath = ""
if (Test-Path "control-app-repo/VirtualDriverControl/package.json") {
$controlAppPath = "control-app-repo/VirtualDriverControl"
Write-Output "Found control app in separate repository"
}
if ($controlAppPath -ne "") {
Write-Output "Validating Control App dependencies and syntax..."
Push-Location $controlAppPath
# Install dependencies (fast check)
Write-Output "Installing npm dependencies..."
npm ci
# Run linting if available
$packageJson = Get-Content "package.json" | ConvertFrom-Json
if ($packageJson.scripts.lint) {
Write-Output "Running lint checks..."
npm run lint
} else {
Write-Output "No lint script found, skipping lint check"
}
# Basic syntax check - try to require main files
if (Test-Path "main.js") {
Write-Output "✅ Main files exist and are readable"
}
Pop-Location
Write-Output "✅ Control App validation completed"
} else {
Write-Output "⚠️ Control App not found - skipping validation"
}
# Validation Summary
- name: CI Validation Summary
if: always()
run: |
Write-Output "=== Fast CI Validation Summary ==="
Write-Output "Configuration: $env:BUILD_CONFIGURATION"
Write-Output "Event: ${{ github.event_name }}"
Write-Output "Branch: ${{ github.ref }}"
Write-Output "Commit: ${{ github.sha }}"
Write-Output ""
Write-Output "This validation workflow checks:"
Write-Output "✅ VDD compilation syntax and dependencies"
Write-Output "✅ VAD compilation syntax and dependencies"
Write-Output "✅ Control App dependencies and linting"
Write-Output "✅ Basic project structure validation"
Write-Output ""
Write-Output "⚡ Fast feedback in ~3-5 minutes vs full build ~30-45 minutes"
Write-Output "💰 Saves compute resources for quick validation"
Write-Output "🚀 Enables rapid iteration on pull requests"