1+ name : Build Project
2+
3+ on :
4+ push :
5+ branches : [ 'main', 'stable' ]
6+ tags : [ 'v*' ] # <-- Tells GitHub to listen for version tags
7+ pull_request :
8+ branches : [ 'main', 'stable' ]
9+ workflow_dispatch :
10+
11+ defaults :
12+ run :
13+ shell : pwsh
14+
15+ jobs :
16+ build :
17+ name : Build Application
18+ runs-on : windows-latest # <-- Provisions the VS 2026 / v145 toolset
19+ if : |
20+ !contains(github.event.head_commit.message, '***NO_CI***') &&
21+ !contains(github.event.head_commit.message, '[skip ci]')
22+ steps :
23+ - name : Set up build environment
24+ uses : microsoft/setup-msbuild@v2
25+
26+ - name : Set up NuGet
27+ uses : nuget/setup-nuget@v2
28+
29+ - name : Checkout repository
30+ uses : actions/checkout@v4
31+ with :
32+ submodules : recursive
33+ fetch-depth : 0
34+
35+ - name : Build Core Application
36+ run : |
37+ msbuild fenestra.sln -t:'restore;build' -p:configuration=release -p:PlatformToolset=v143 -p:TreatWarningsAsErrors=false -p:RunCodeAnalysis=false -p:ReleaseBuild=true -m -nowarn:NU1503
38+
39+ - name : Build Installer
40+ run : |
41+ nuget restore installer.sln
42+ msbuild installer.sln -t:'build' -p:configuration=release -m -nowarn:NU1503
43+
44+ - name : Upload build artifacts
45+ uses : actions/upload-artifact@v4
46+ with :
47+ name : compiled-binaries
48+ path : build/bin/release/
49+
50+ # --- UPDATED: Automated Release Pipeline ---
51+ - name : Publish to GitHub Releases
52+ if : startsWith(github.ref, 'refs/tags/v')
53+ uses : softprops/action-gh-release@v2
54+ with :
55+ files : |
56+ build/bin/release/windower.msi
57+ build/bin/release/windower.zip
58+ build/bin/release/windower.portable.zip
59+ generate_release_notes : true
0 commit comments