@@ -11,34 +11,16 @@ concurrency:
1111 cancel-in-progress : false
1212
1313jobs :
14- build :
15- strategy :
16- fail-fast : false
17- matrix :
18- include :
19- - os : macos-latest
20- platform : darwin/universal
21- artifact_name : csvops-desktop-macos-universal
22- artifact_glob : ' desktop/build/bin/*.app'
23- archive_cmd : ' cd desktop/build/bin && zip -r ../../../csvops-desktop-macos-universal.zip *.app'
24- archive_path : csvops-desktop-macos-universal.zip
25- - os : windows-latest
26- platform : windows/amd64
27- artifact_name : csvops-desktop-windows-amd64
28- artifact_glob : ' desktop/build/bin/*.exe'
29- archive_cmd : ' powershell Compress-Archive -Path desktop/build/bin/*.exe -DestinationPath csvops-desktop-windows-amd64.zip'
30- archive_path : csvops-desktop-windows-amd64.zip
31- runs-on : ${{ matrix.os }}
32-
14+ build-macos :
15+ runs-on : macos-latest
3316 steps :
3417 - uses : actions/checkout@v4
3518 with :
3619 fetch-depth : 0
3720
3821 - uses : actions/setup-go@v5
3922 with :
40- # The desktop module pins go 1.23 in its go.mod but Wails needs the
41- # Darwin LC_UUID fix from Go 1.24+; pin explicitly here.
23+ # Wails needs the Darwin LC_UUID fix from Go 1.24+.
4224 go-version : ' 1.24'
4325
4426 - uses : actions/setup-node@v4
@@ -47,35 +29,90 @@ jobs:
4729
4830 - name : Install Wails
4931 run : go install github.com/wailsapp/wails/v2/cmd/wails@latest
50- shell : bash
5132
52- - name : Add GOPATH/bin to PATH (unix)
53- if : runner.os != 'Windows'
33+ - name : Add GOPATH/bin to PATH
5434 run : echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
35+
36+ - name : Build .app
37+ working-directory : desktop
38+ run : wails build -platform darwin/universal -clean
39+
40+ - name : Build .dmg
41+ run : |
42+ mkdir -p dmg-staging
43+ cp -R desktop/build/bin/csvops-desktop.app dmg-staging/
44+ ln -s /Applications dmg-staging/Applications
45+ hdiutil create \
46+ -volname "csvops" \
47+ -srcfolder dmg-staging \
48+ -ov -format UDZO \
49+ csvops-desktop-macos-universal.dmg
50+
51+ - name : Also produce a plain zip
52+ run : |
53+ cd desktop/build/bin && zip -r ../../../csvops-desktop-macos-universal.zip csvops-desktop.app
54+
55+ - name : Upload artifacts
56+ uses : actions/upload-artifact@v4
57+ with :
58+ name : macos
59+ path : |
60+ csvops-desktop-macos-universal.dmg
61+ csvops-desktop-macos-universal.zip
62+
63+ build-windows :
64+ runs-on : windows-latest
65+ steps :
66+ - uses : actions/checkout@v4
67+ with :
68+ fetch-depth : 0
69+
70+ - uses : actions/setup-go@v5
71+ with :
72+ go-version : ' 1.24'
73+
74+ - uses : actions/setup-node@v4
75+ with :
76+ node-version : ' 20'
77+
78+ - name : Install Wails
79+ run : go install github.com/wailsapp/wails/v2/cmd/wails@latest
5580 shell : bash
5681
57- - name : Add GOPATH/bin to PATH (windows)
58- if : runner.os == 'Windows'
82+ - name : Add GOPATH/bin to PATH
5983 run : echo "$(go env GOPATH)\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
6084 shell : pwsh
6185
62- - name : Build
86+ - name : Install NSIS
87+ run : choco install -y nsis
88+ shell : pwsh
89+
90+ - name : Build .exe + NSIS installer
6391 working-directory : desktop
64- run : wails build -platform ${{ matrix.platform }} -clean
92+ run : wails build -platform windows/amd64 -clean -nsis
6593 shell : bash
6694
67- - name : Archive
68- run : ${{ matrix.archive_cmd }}
95+ - name : Stage Windows artifacts
6996 shell : bash
97+ run : |
98+ # The plain exe (portable)
99+ powershell Compress-Archive -Path desktop/build/bin/*.exe -DestinationPath csvops-desktop-windows-amd64.zip
100+ # The NSIS installer (created under build/bin/)
101+ if ls desktop/build/bin/*-installer.exe 1> /dev/null 2>&1; then
102+ cp desktop/build/bin/*-installer.exe csvops-desktop-windows-amd64-installer.exe
103+ fi
70104
71- - name : Upload artifact
105+ - name : Upload artifacts
72106 uses : actions/upload-artifact@v4
73107 with :
74- name : ${{ matrix.artifact_name }}
75- path : ${{ matrix.archive_path }}
108+ name : windows
109+ path : |
110+ csvops-desktop-windows-amd64.zip
111+ csvops-desktop-windows-amd64-installer.exe
112+ if-no-files-found : warn
76113
77114 release :
78- needs : build
115+ needs : [ build-macos, build-windows]
79116 runs-on : ubuntu-latest
80117 permissions :
81118 contents : write
0 commit comments