Release v0.4.2: Windows cross-compile via cargo-xwin + updater trampoline
Some checks failed
Release / build-and-release (push) Failing after 15m4s

- Add Windows cross-compile (cargo-xwin) to Forgejo CI workflow
- Add libsqlite3-sys bundled for cross-compile compatibility
- Switch updater endpoint from GitHub to self-hosted Forgejo
- Collect Windows NSIS assets and include windows-x86_64 in latest.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
le king fu 2026-02-27 20:23:25 -05:00
parent 21c4c73a62
commit b97a80d8b9
5 changed files with 43 additions and 4 deletions

View file

@ -29,6 +29,13 @@ jobs:
sudo apt-get update sudo apt-get update
sudo apt-get install -y build-essential libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf jq libssl-dev xdg-utils sudo apt-get install -y build-essential libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf jq libssl-dev xdg-utils
- name: Install Windows cross-compile dependencies
run: |
sudo apt-get install -y lld llvm clang nsis
source "$HOME/.cargo/env"
rustup target add x86_64-pc-windows-msvc
cargo install --locked cargo-xwin
- name: Install frontend dependencies - name: Install frontend dependencies
run: npm ci run: npm ci
@ -40,6 +47,14 @@ jobs:
source "$HOME/.cargo/env" source "$HOME/.cargo/env"
npx tauri build npx tauri build
- name: Build Tauri Windows
env:
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
run: |
source "$HOME/.cargo/env"
npx tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc --bundles nsis
- name: Collect release files - name: Collect release files
run: | run: |
mkdir -p release-assets mkdir -p release-assets
@ -48,6 +63,8 @@ jobs:
cp src-tauri/target/release/bundle/appimage/*.AppImage.tar.gz release-assets/ 2>/dev/null || true cp src-tauri/target/release/bundle/appimage/*.AppImage.tar.gz release-assets/ 2>/dev/null || true
cp src-tauri/target/release/bundle/appimage/*.AppImage.tar.gz.sig release-assets/ 2>/dev/null || true cp src-tauri/target/release/bundle/appimage/*.AppImage.tar.gz.sig release-assets/ 2>/dev/null || true
cp src-tauri/target/release/bundle/rpm/*.rpm release-assets/ 2>/dev/null || true cp src-tauri/target/release/bundle/rpm/*.rpm release-assets/ 2>/dev/null || true
cp src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/*.exe release-assets/ 2>/dev/null || true
cp src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/*.exe.sig release-assets/ 2>/dev/null || true
ls -la release-assets/ ls -la release-assets/
- name: Extract changelog - name: Extract changelog
@ -73,6 +90,8 @@ jobs:
LINUX_SIG="" LINUX_SIG=""
APPIMAGE_TAR="" APPIMAGE_TAR=""
WINDOWS_SIG=""
WINDOWS_EXE=""
for f in release-assets/*.AppImage.tar.gz.sig; do for f in release-assets/*.AppImage.tar.gz.sig; do
[ -f "$f" ] && LINUX_SIG=$(cat "$f") [ -f "$f" ] && LINUX_SIG=$(cat "$f")
@ -80,6 +99,12 @@ jobs:
for f in release-assets/*.AppImage.tar.gz; do for f in release-assets/*.AppImage.tar.gz; do
[ -f "$f" ] && APPIMAGE_TAR=$(basename "$f") [ -f "$f" ] && APPIMAGE_TAR=$(basename "$f")
done done
for f in release-assets/*-setup.exe.sig; do
[ -f "$f" ] && WINDOWS_SIG=$(cat "$f")
done
for f in release-assets/*-setup.exe; do
[ -f "$f" ] && WINDOWS_EXE=$(basename "$f")
done
PLATFORMS="{}" PLATFORMS="{}"
if [ -n "$LINUX_SIG" ] && [ -n "$APPIMAGE_TAR" ]; then if [ -n "$LINUX_SIG" ] && [ -n "$APPIMAGE_TAR" ]; then
@ -88,6 +113,12 @@ jobs:
--arg url "${BASE_URL}/${APPIMAGE_TAR}" \ --arg url "${BASE_URL}/${APPIMAGE_TAR}" \
'. + {"linux-x86_64": {"signature": $sig, "url": $url}}') '. + {"linux-x86_64": {"signature": $sig, "url": $url}}')
fi fi
if [ -n "$WINDOWS_SIG" ] && [ -n "$WINDOWS_EXE" ]; then
PLATFORMS=$(echo "$PLATFORMS" | jq \
--arg sig "$WINDOWS_SIG" \
--arg url "${BASE_URL}/${WINDOWS_EXE}" \
'. + {"windows-x86_64": {"signature": $sig, "url": $url}}')
fi
jq -n \ jq -n \
--arg version "$TAG" \ --arg version "$TAG" \
@ -115,6 +146,7 @@ jobs:
## Installation ## Installation
**Windows** : Téléchargez le fichier `.exe` ci-dessous.
**Linux** : Téléchargez le fichier `.deb` ou `.AppImage` ci-dessous. **Linux** : Téléchargez le fichier `.deb` ou `.AppImage` ci-dessous.
BODY_EOF BODY_EOF
) )

View file

@ -2,6 +2,12 @@
## [Unreleased] ## [Unreleased]
## [0.4.2]
### Changed
- Auto-updater now points to self-hosted Forgejo instance
- Windows builds now cross-compiled via cargo-xwin
## [0.4.1] ## [0.4.1]
### Fixed ### Fixed

View file

@ -1,7 +1,7 @@
{ {
"name": "simpl_result_scaffold", "name": "simpl_result_scaffold",
"private": true, "private": true,
"version": "0.4.1", "version": "0.4.2",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",

View file

@ -1,6 +1,6 @@
[package] [package]
name = "simpl-result" name = "simpl-result"
version = "0.4.1" version = "0.4.2"
description = "Personal finance management app" description = "Personal finance management app"
authors = ["you"] authors = ["you"]
edition = "2021" edition = "2021"
@ -24,6 +24,7 @@ tauri-plugin-sql = { version = "2", features = ["sqlite"] }
tauri-plugin-dialog = "2" tauri-plugin-dialog = "2"
tauri-plugin-updater = "2" tauri-plugin-updater = "2"
tauri-plugin-process = "2" tauri-plugin-process = "2"
libsqlite3-sys = { version = "0.30", features = ["bundled"] }
serde = { version = "1", features = ["derive"] } serde = { version = "1", features = ["derive"] }
serde_json = "1" serde_json = "1"
sha2 = "0.10" sha2 = "0.10"

View file

@ -1,7 +1,7 @@
{ {
"$schema": "https://schema.tauri.app/config/2", "$schema": "https://schema.tauri.app/config/2",
"productName": "Simpl Resultat", "productName": "Simpl Resultat",
"version": "0.4.1", "version": "0.4.2",
"identifier": "com.simpl.resultat", "identifier": "com.simpl.resultat",
"build": { "build": {
"beforeDevCommand": "npm run dev", "beforeDevCommand": "npm run dev",
@ -37,7 +37,7 @@
"updater": { "updater": {
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDgyRDc4MDEyQjQ0MzAxRTMKUldUakFVTzBFb0RYZ3NRNmFxMHdnTzBMZzFacTlCbTdtMEU3Ym5pZWNSN3FRZk43R3lZSUM2OHQK", "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDgyRDc4MDEyQjQ0MzAxRTMKUldUakFVTzBFb0RYZ3NRNmFxMHdnTzBMZzFacTlCbTdtMEU3Ym5pZWNSN3FRZk43R3lZSUM2OHQK",
"endpoints": [ "endpoints": [
"https://github.com/Le-King-Fu/simpl-resultat/releases/latest/download/latest.json" "https://git.lacompagniemaximus.com/maximus/simpl-resultat/releases/latest/download/latest.json"
], ],
"windows": { "windows": {
"installMode": "basicUi" "installMode": "basicUi"