@@ -3,15 +3,18 @@ name: Release & Publish
3
3
on :
4
4
push :
5
5
tags :
6
- - ' v* '
6
+ - " v* "
7
7
8
8
jobs :
9
9
release :
10
- runs-on : ubuntu-latest
10
+ name : ${{ matrix.os }}
11
+ runs-on : ${{ matrix.os }}
12
+ strategy :
13
+ fail-fast : false
14
+ matrix :
15
+ os : [ubuntu-22.04, macos-13, macos-14, windows-2025]
11
16
permissions :
12
17
contents : write
13
- id-token : write
14
-
15
18
steps :
16
19
- name : Checkout code
17
20
uses : actions/checkout@v4
@@ -26,18 +29,80 @@ jobs:
26
29
with :
27
30
node-version : 22.x
28
31
cache : pnpm
29
- cache-dependency-path : ' frontend/pnpm-lock.yaml'
30
- registry-url : https://registry.npmjs.org
32
+ cache-dependency-path : " frontend/pnpm-lock.yaml"
33
+
34
+ - name : Setup Rust
35
+ uses : dtolnay/rust-toolchain@stable
36
+
37
+ - uses : Swatinem/rust-cache@v2
38
+ with :
39
+ cache-on-failure : " true"
40
+
41
+ - uses : taiki-e/install-action@just
42
+
43
+ - name : Install build dependencies
44
+ if : matrix.os == 'ubuntu-22.04'
45
+ run : |
46
+ sudo apt-get update
47
+ sudo apt-get install -y libgdk-pixbuf-2.0-dev \
48
+ libpango1.0-dev \
49
+ libjavascriptcoregtk-4.1-dev \
50
+ libatk1.0-dev \
51
+ libsoup-3.0-dev \
52
+ libwebkit2gtk-4.1-dev \
53
+ librsvg2-dev
31
54
32
55
- name : Install dependencies
33
- working-directory : frontend
34
- run : pnpm install --frozen-lockfile
56
+ run : just deps
35
57
36
58
- name : Build project
37
- working-directory : frontend
38
- run : pnpm tauri build
59
+ run : just build-all
60
+
61
+ - name : Archive `gemini-desktop-web` executable (macOS/Linux)
62
+ if : matrix.os != 'windows-2025'
63
+ run : |
64
+ cd target/release
65
+ case "${{ matrix.os }}" in
66
+ ubuntu-22.04) PLATFORM="linux-x64-gnu";;
67
+ macos-13) PLATFORM="macos-x64";;
68
+ macos-14) PLATFORM="macos-arm64";;
69
+ *) echo "Invalid OS: ${{ matrix.os }}"; exit 1;;
70
+ esac
71
+ tar -czf gemini-desktop-web-${PLATFORM}.tar.gz gemini-desktop-web
72
+
73
+ - name : Archive `gemini-desktop-web` executable (Windows)
74
+ if : matrix.os == 'windows-2025'
75
+ run : |
76
+ cd target/release
77
+ 7z a -tzip gemini-desktop-web-windows-x64-msvc.zip gemini-desktop-web.exe
78
+
79
+ - name : Build Windows installer
80
+ if : matrix.os == 'windows-2025'
81
+ run : |
82
+ winget install --id JRSoftware.InnoSetup --disable-interactivity --accept-source-agreements --accept-package-agreements
83
+ & "$env:LOCALAPPDATA\Programs\Inno Setup 6\ISCC.exe" installer.iss
84
+
85
+ - name : Remove spaces from installer names
86
+ if : matrix.os != 'windows-2025'
87
+ run : |
88
+ cd target/release/bundle
89
+
90
+ find appimage rpm deb dmg -maxdepth 1 -type f -name 'Gemini Desktop*' 2>/dev/null \
91
+ -exec bash -c '
92
+ for f; do
93
+ mv "$f" "$(dirname "$f")/$(basename "$f" | sed "s/^Gemini Desktop/GeminiDesktop/")"
94
+ done
95
+ ' _ {} + || true
39
96
40
97
- name : Create GitHub Release
41
98
uses : softprops/action-gh-release@v2
42
99
with :
43
- generate_release_notes : true
100
+ files : |
101
+ target/release/bundle/dmg/*.dmg
102
+ target/release/bundle/deb/*.deb
103
+ target/release/bundle/rpm/*.rpm
104
+ target/release/bundle/appimage/*.AppImage
105
+ target/release/GeminiDesktopSetup.exe
106
+ target/release/gemini-desktop-web-*.tar.gz
107
+ target/release/gemini-desktop-web-*.zip
108
+ generate_release_notes : true
0 commit comments