Files
Memoh/.github/workflows/tauri-release.yml
T
Acbox fc1ef4ddb3 fix(ci): sync version from git tag to Tauri build artifacts
Tauri desktop artifacts were always named with hardcoded version 0.1.0
(from tauri.conf.json) instead of the actual release version. Extract
the version from the git tag and update tauri.conf.json and Cargo.toml
before building.
2026-03-29 18:50:56 +08:00

112 lines
3.1 KiB
YAML

name: Tauri Release
on:
push:
tags:
- "v*"
workflow_dispatch:
permissions:
contents: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-and-release:
name: Release (${{ matrix.platform }})
strategy:
fail-fast: false
matrix:
include:
- platform: macos-latest
target: aarch64-apple-darwin
- platform: macos-latest
target: x86_64-apple-darwin
- platform: ubuntu-22.04
target: x86_64-unknown-linux-gnu
- platform: windows-latest
target: x86_64-pc-windows-msvc
runs-on: ${{ matrix.platform }}
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Extract version from tag
id: version
shell: bash
run: |
TAG="${GITHUB_REF_NAME}"
VERSION="${TAG#v}"
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "Resolved version: $VERSION"
- name: Sync version to tauri.conf.json and Cargo.toml
shell: bash
run: |
VERSION="${{ steps.version.outputs.version }}"
TAURI_CONF="apps/desktop/src-tauri/tauri.conf.json"
CARGO_TOML="apps/desktop/src-tauri/Cargo.toml"
node -e "
const fs = require('fs');
const conf = JSON.parse(fs.readFileSync('$TAURI_CONF', 'utf8'));
conf.version = '$VERSION';
fs.writeFileSync('$TAURI_CONF', JSON.stringify(conf, null, 2) + '\n');
"
sed -i.bak "s/^version = \".*\"/version = \"$VERSION\"/" "$CARGO_TOML"
rm -f "$CARGO_TOML.bak"
echo "Updated $TAURI_CONF version to $VERSION"
echo "Updated $CARGO_TOML version to $VERSION"
- uses: pnpm/action-setup@v4
with:
version: 10
- uses: actions/setup-node@v4
with:
node-version: lts/*
cache: pnpm
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: apps/desktop/src-tauri -> target
- name: Install Linux dependencies
if: matrix.platform == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
libappindicator3-dev \
librsvg2-dev \
patchelf
- name: Install JS dependencies
run: pnpm install --frozen-lockfile
- name: Build and release Tauri app
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
projectPath: apps/desktop
args: --target ${{ matrix.target }}
tauriScript: pnpm tauri
tagName: ${{ github.ref_name }}
releaseName: "Memoh Desktop ${{ github.ref_name }}"
releaseBody: "See the [full changelog](https://github.com/${{ github.repository }}/blob/main/CHANGELOG.md) for details."
releaseDraft: true
prerelease: false