name: Release Tauri App on: push: tags: # Accepte les tags en minuscule (v1.1.0) comme en majuscule (V1.1.0), # pour éviter qu'une faute de casse empêche le déclenchement du build. - 'v*' - 'V*' workflow_dispatch: jobs: release: permissions: contents: write strategy: fail-fast: false matrix: platform: [windows-latest] runs-on: ${{ matrix.platform }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - name: Rust cache uses: swatinem/rust-cache@v2 with: workspaces: './widget/src-tauri -> target' - name: Install app dependencies run: | cd widget npm install - name: Update version in tauri.conf.json shell: bash run: | # Retire un préfixe v/V puis ne garde que les 3 premiers segments # (ex. "V1.1.0.0" -> "1.1.0") afin de produire une version semver valide. TAG_VERSION=$(echo "${{ github.ref_name }}" | sed 's/^[vV]//' | cut -d. -f1-3) if [[ ! "$TAG_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then TAG_VERSION="1.0.0" fi echo "Updating tauri.conf.json version to $TAG_VERSION" node -e " const fs = require('fs'); const file = './widget/src-tauri/tauri.conf.json'; const config = JSON.parse(fs.readFileSync(file, 'utf8')); config.package.version = '$TAG_VERSION'; fs.writeFileSync(file, JSON.stringify(config, null, 2), 'utf8'); " - name: Build the Tauri app uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tagName: ${{ github.ref_name }} releaseName: 'TodoFlow ${{ github.ref_name }}' releaseBody: | Installeur Windows de TodoFlow ${{ github.ref_name }}. Téléchargez le fichier `.exe` (NSIS) ou `.msi` ci-dessous pour installer l'application. # Publier directement la release (et non en brouillon) afin qu'elle soit visible # publiquement et marquée automatiquement comme "Latest" sur la page GitHub. releaseDraft: false prerelease: false projectPath: './widget'