on: push: tags: - 'v*.*.*' name: 🚀 Release on GitHub jobs: release: permissions: contents: write strategy: fail-fast: false matrix: include: - platform: 'macos-latest' args: '--target aarch64-apple-darwin --config ./src-tauri/tauri.macos-aarch64.conf.json' arch: 'aarch64-apple-darwin' - platform: 'macos-latest' args: '--target x86_64-apple-darwin' arch: 'x86_64-apple-darwin' - platform: 'ubuntu-22.04' args: '' arch: '' - platform: 'windows-latest' args: '' arch: '' runs-on: ${{ matrix.platform }} steps: - name: 🚚 Checkout repository uses: actions/checkout@v4 - name: 🛠️ Install 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: 📦 Setup node uses: actions/setup-node@v4 with: node-version: 'lts/*' cache: 'npm' - name: 🛠️ install Rust stable uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} - name: 🛠️ Rust cache uses: swatinem/rust-cache@v2 with: workspaces: './src-tauri -> target' - name: 🛠️ Install frontend dependencies run: npm install - name: 📄 Read and Process CHANGELOG (Unix) if: matrix.platform != 'windows-latest' id: changelog_unix shell: bash run: | if [ -f CHANGELOG.md ]; then # Extract version number from tag VERSION_NUM=$(echo "${{ github.ref_name }}" | sed -E 's/^v([0-9]+\.[0-9]+\.[0-9]+)(-.*)?$/\1/') # Read and replace placeholders CONTENT=$(cat CHANGELOG.md) CONTENT=${CONTENT///${{ github.ref_name }}} CONTENT=${CONTENT///$VERSION_NUM} echo "content<> $GITHUB_OUTPUT echo "$CONTENT" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT else echo "content=No changelog found" >> $GITHUB_OUTPUT fi - name: 📄 Read and Process CHANGELOG (Windows) if: matrix.platform == 'windows-latest' id: changelog_windows shell: pwsh run: | if (Test-Path "CHANGELOG.md") { # Extract version number from tag $version_num = "${{ github.ref_name }}" -replace '^v([0-9]+\.[0-9]+\.[0-9]+)(-.*)?$','$1' # Read and replace placeholders $content = Get-Content -Path CHANGELOG.md -Raw $content = $content -replace '', "${{ github.ref_name }}" $content = $content -replace '', "$version_num" "content<> $env:GITHUB_OUTPUT $content >> $env:GITHUB_OUTPUT "EOF" >> $env:GITHUB_OUTPUT } else { "content=No changelog found" >> $env:GITHUB_OUTPUT } - name: 🚀 Build and publish uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} TARGET_ARCH: ${{ matrix.arch }} TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} with: tagName: ${{ github.ref_name }} releaseName: ${{ github.event.repository.name }}-${{ github.ref_name }} releaseBody: ${{ matrix.platform == 'windows-latest' && steps.changelog_windows.outputs.content || steps.changelog_unix.outputs.content }} releaseDraft: true prerelease: false includeUpdaterJson: true updaterJsonPreferNsis: true args: ${{ matrix.args }}