77 workflow_dispatch :
88 inputs :
99 tag :
10- description : ' Release tag (e.g. v2.1.3-beta )'
10+ description : ' Release tag (e.g. v4.0.0 )'
1111 required : true
12- default : ' v2.3 .0'
12+ default : ' v4.0 .0'
1313
1414jobs :
1515 verify :
1616 runs-on : ubuntu-latest
1717 steps :
18- # Pin to latest stable — verify at https://github.com/actions/checkout/releases if builds break
19- - uses : actions/checkout@v6
20- # Pin to latest stable — verify at https://github.com/actions/setup-node/releases if builds break
21- - uses : actions/setup-node@v6
18+ - uses : actions/checkout@v4
19+ - uses : actions/setup-node@v4
2220 with :
2321 node-version : 20
2422 cache : npm
2523 - run : npm ci
26- - name : Verify renderer types
27- run : npm run lint
28- - name : Verify Electron types
29- run : npx tsc -p electron/tsconfig.json --noEmit
24+ - name : Type check frontend
25+ run : npx tsc --noEmit
3026 - name : Run tests
3127 run : npm test
32- - name : Build application bundles
33- run : npm run build
3428
3529 build-linux :
3630 needs : verify
37- runs-on : ubuntu-latest
31+ runs-on : ubuntu-22.04
3832 steps :
39- # Pin to latest stable — verify at https://github.com/actions/checkout/releases if builds break
40- - uses : actions/checkout@v6
41- # Pin to latest stable — verify at https://github.com/actions/setup-node/releases if builds break
42- - uses : actions/setup-node@v6
33+ - uses : actions/checkout@v4
34+ - uses : actions/setup-node@v4
4335 with :
4436 node-version : 20
4537 cache : npm
46- - run : npm ci
38+ - uses : dtolnay/rust-toolchain@stable
4739 - name : Install Linux build dependencies
48- run : sudo apt-get install -y rpm fakeroot dpkg
49- - name : Build application bundles
50- run : npm run build
51- - name : Package Linux targets
52- run : npx electron-builder --linux AppImage deb --x64 --publish never
53- # Pin to latest stable — verify at https://github.com/actions/upload-artifact/releases if builds break
54- - uses : actions/upload-artifact@v7
40+ run : |
41+ sudo apt-get update
42+ sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
43+ - run : npm ci
44+ - name : Build Tauri app
45+ run : npx tauri build
46+ - uses : actions/upload-artifact@v4
5547 with :
5648 name : linux-packages
5749 path : |
58- release/*.AppImage
59- release/*.deb
60-
61- build-macos :
62- needs : verify
63- runs-on : macos-latest
64- steps :
65- # Pin to latest stable — verify at https://github.com/actions/checkout/releases if builds break
66- - uses : actions/checkout@v6
67- # Pin to latest stable — verify at https://github.com/actions/setup-node/releases if builds break
68- - uses : actions/setup-node@v6
69- with :
70- node-version : 20
71- cache : npm
72- - run : npm ci
73- - name : Build application bundles
74- run : npm run build
75- - name : Package macOS
76- run : npx electron-builder --mac dmg --publish never
77- # Pin to latest stable — verify at https://github.com/actions/upload-artifact/releases if builds break
78- - uses : actions/upload-artifact@v7
79- with :
80- name : macos-installer
81- path : release/*.dmg
50+ src-tauri/target/release/bundle/appimage/*.AppImage
51+ src-tauri/target/release/bundle/deb/*.deb
8252
8353 build-windows :
8454 needs : verify
8555 runs-on : windows-latest
8656 steps :
87- # Pin to latest stable — verify at https://github.com/actions/checkout/releases if builds break
88- - uses : actions/checkout@v6
89- # Pin to latest stable — verify at https://github.com/actions/setup-node/releases if builds break
90- - uses : actions/setup-node@v6
57+ - uses : actions/checkout@v4
58+ - uses : actions/setup-node@v4
9159 with :
9260 node-version : 20
9361 cache : npm
62+ - uses : dtolnay/rust-toolchain@stable
9463 - run : npm ci
95- - name : Build application bundles
96- run : npm run build
97- - name : Package Windows
98- run : npx electron-builder --win nsis --x64 --publish never
99- # Pin to latest stable — verify at https://github.com/actions/upload-artifact/releases if builds break
100- - uses : actions/upload-artifact@v7
64+ - name : Build Tauri app
65+ run : npx tauri build
66+ - uses : actions/upload-artifact@v4
10167 with :
10268 name : windows-installer
103- path : release/*.exe
69+ path : src-tauri/target/ release/bundle/nsis /*.exe
10470
10571 publish-release :
106- needs : [build-linux, build-macos, build- windows]
107- if : needs.build-linux.result == 'success' && needs.build-macos.result == 'success' && needs.build- windows.result == 'success'
72+ needs : [build-linux, build-windows]
73+ if : needs.build-linux.result == 'success' && needs.build-windows.result == 'success'
10874 runs-on : ubuntu-latest
10975 permissions :
11076 contents : write
11177 steps :
112- # Pin to latest stable — verify at https://github.com/actions/download-artifact/releases if builds break
113- - uses : actions/download-artifact@v8
78+ - uses : actions/download-artifact@v4
11479 with :
11580 path : release-artifacts
11681 merge-multiple : true
@@ -129,14 +94,11 @@ jobs:
12994 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
13095 run : |
13196 tag="${{ steps.tag.outputs.name }}"
132- mapfile -t files < <(find release-artifacts -type f | sort)
97+ mapfile -t files < <(find release-artifacts -type f \( -name "*.AppImage" -o -name "*.deb" -o -name "*.exe" \) | sort)
13398 if [ "${#files[@]}" -eq 0 ]; then
13499 echo "No release artifacts found."
135100 exit 1
136101 fi
137- # Upload assets to existing release, or create new release if none exists.
138- # This avoids the --clobber flag (unsupported in older gh) and the
139- # delete+create race condition.
140102 if gh release view "$tag" --repo "$GITHUB_REPOSITORY" &>/dev/null; then
141103 echo "Release $tag already exists — uploading artifacts"
142104 gh release upload "$tag" "${files[@]}" \
0 commit comments