Skip to content

Commit 8db5001

Browse files
committed
Add Ubuntu desktop release job
Signed-off-by: benthecarman <benthecarman@live.com>
1 parent 7d4c129 commit 8db5001

1 file changed

Lines changed: 95 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,3 +184,98 @@ jobs:
184184
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
185185
ARCHIVE_PATH: ${{ steps.artifacts.outputs.archive }}
186186
SIG_PATH: ${{ steps.artifacts.outputs.sig }}
187+
188+
release-linux:
189+
name: Release Linux
190+
runs-on: ubuntu-latest
191+
needs: release
192+
timeout-minutes: 60
193+
permissions:
194+
contents: write
195+
env:
196+
VERSION: ${{ inputs.version }}
197+
steps:
198+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
199+
with:
200+
ref: ${{ inputs.ref }}
201+
persist-credentials: false
202+
203+
- uses: cashapp/activate-hermit@e49f5cb4dd64ff0b0b659d1d8df499595451155a # v1
204+
205+
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
206+
with:
207+
workspaces: desktop/src-tauri
208+
209+
- name: Install Tauri dependencies (Linux)
210+
env:
211+
DEBIAN_FRONTEND: noninteractive
212+
run: |
213+
sudo apt-get update \
214+
-o Acquire::Retries=3 \
215+
-o Acquire::http::Timeout=30 \
216+
-o Acquire::https::Timeout=30
217+
sudo apt-get install -y --no-install-recommends \
218+
-o Acquire::Retries=3 \
219+
-o Acquire::http::Timeout=30 \
220+
-o Acquire::https::Timeout=30 \
221+
-o DPkg::Lock::Timeout=120 \
222+
build-essential \
223+
curl \
224+
file \
225+
libasound2-dev \
226+
libayatana-appindicator3-dev \
227+
libgtk-3-dev \
228+
librsvg2-dev \
229+
libssl-dev \
230+
libwebkit2gtk-4.1-dev \
231+
libxdo-dev \
232+
patchelf \
233+
wget
234+
235+
- name: Install desktop dependencies
236+
run: just desktop-install-ci
237+
238+
- name: Patch version
239+
run: |
240+
cd desktop && node scripts/set-version-from-tag.mjs "$VERSION"
241+
cd src-tauri && cargo update --workspace
242+
243+
- name: Build sidecars
244+
run: |
245+
cargo build --release -p sprout-acp -p sprout-mcp -p sprout-agent -p sprout-dev-mcp -p git-credential-nostr -p sprout-cli
246+
./scripts/bundle-sidecars.sh
247+
248+
- name: Build Linux Tauri app
249+
run: cd desktop && pnpm tauri build --verbose --ci --bundles deb,appimage
250+
env:
251+
CMAKE_POLICY_VERSION_MINIMUM: "3.5"
252+
253+
- name: Locate Linux build artifacts
254+
id: linux-artifacts
255+
run: |
256+
BUNDLE_DIR="desktop/src-tauri/target/release/bundle"
257+
258+
DEB=$(find "$BUNDLE_DIR/deb" -name '*.deb' -type f | head -1)
259+
if [[ -z "$DEB" ]]; then
260+
echo "::error::No DEB found in $BUNDLE_DIR/deb"
261+
exit 1
262+
fi
263+
echo "deb=$DEB" >> "$GITHUB_OUTPUT"
264+
265+
APPIMAGE=$(find "$BUNDLE_DIR/appimage" -name '*.AppImage' -type f | head -1)
266+
if [[ -z "$APPIMAGE" ]]; then
267+
echo "::error::No AppImage found in $BUNDLE_DIR/appimage"
268+
exit 1
269+
fi
270+
echo "appimage=$APPIMAGE" >> "$GITHUB_OUTPUT"
271+
272+
- name: Upload Linux artifacts to versioned GitHub release
273+
run: |
274+
gh release upload "v${VERSION}" \
275+
"$DEB_PATH" \
276+
"$APPIMAGE_PATH" \
277+
--clobber
278+
env:
279+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
280+
DEB_PATH: ${{ steps.linux-artifacts.outputs.deb }}
281+
APPIMAGE_PATH: ${{ steps.linux-artifacts.outputs.appimage }}

0 commit comments

Comments
 (0)