1313permissions :
1414 contents : read
1515jobs :
16+ build :
17+ runs-on : windows-latest
18+ timeout-minutes : 45
19+ steps :
20+ - uses : actions/checkout@v4
21+ - uses : actions/setup-python@v5
22+ with :
23+ python-version : ' 3.13'
24+ - uses : actions/setup-node@v4
25+ with :
26+ node-version : ' 22'
27+ - name : Build frozen engine
28+ shell : pwsh
29+ run : |
30+ python -m pip install . pyinstaller
31+ if ($LASTEXITCODE -ne 0) { throw 'Python installation failed' }
32+ python -m PyInstaller --noconfirm packaging/formslang-engine.spec
33+ if ($LASTEXITCODE -ne 0) { throw 'Engine build failed' }
34+ New-Item -ItemType Directory -Force desktop/src-tauri/binaries | Out-Null
35+ Copy-Item dist/formslang-engine.exe desktop/src-tauri/binaries/formslang-engine-x86_64-pc-windows-msvc.exe
36+ - name : Build Windows installers
37+ shell : pwsh
38+ run : |
39+ npm --prefix desktop ci
40+ if ($LASTEXITCODE -ne 0) { throw 'Desktop dependencies failed' }
41+ $env:CI='true'
42+ npm --prefix desktop run tauri -- build
43+ if ($LASTEXITCODE -ne 0) { throw 'Installer build failed' }
44+ - uses : actions/upload-artifact@v4
45+ with :
46+ name : candidate-installers
47+ path : |
48+ desktop/src-tauri/target/release/bundle/nsis/*.exe
49+ desktop/src-tauri/target/release/bundle/msi/*.msi
50+ retention-days : 7
1651 upgrade :
52+ needs : build
1753 runs-on : windows-latest
1854 timeout-minutes : 20
1955 strategy :
@@ -29,14 +65,18 @@ jobs:
2965 - uses : actions/setup-python@v5
3066 with :
3167 python-version : ' 3.13'
68+ - uses : actions/download-artifact@v4
69+ with :
70+ name : candidate-installers
71+ path : installer-assets/built
3272 - name : Download exact release installers
3373 shell : pwsh
3474 run : |
3575 if ($env:BASELINE -notmatch '^\d+\.\d+\.\d+$' -or $env:CANDIDATE -notmatch '^\d+\.\d+\.\d+$') { throw 'Invalid version' }
3676 gh release download "v$env:BASELINE" --dir installer-assets/baseline --pattern '*.exe' --pattern '*.msi'
3777 if ($LASTEXITCODE -ne 0) { throw 'Baseline download failed' }
38- gh release download "v$env:CANDIDATE" --dir installer-assets/candidate --pattern '*.exe' --pattern '*.msi'
39- if ($LASTEXITCODE -ne 0) { throw 'Candidate download failed' }
78+ New-Item -ItemType Directory -Force installer-assets/candidate | Out-Null
79+ Get-ChildItem installer-assets/built -Recurse -File | Copy-Item -Destination installer-assets/candidate
4080 - name : Install, save review, upgrade, verify
4181 shell : pwsh
4282 run : ./examples/verify/installer_upgrade.ps1 -Kind '${{ matrix.kind }}' -BaselineVersion $env:BASELINE -CandidateVersion $env:CANDIDATE
0 commit comments