Improve CLI failure status messages #20
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| tags: | |
| - "v*.*.*" | |
| permissions: | |
| contents: write | |
| jobs: | |
| build: | |
| name: Build installers (${{ matrix.name }}) | |
| runs-on: ${{ matrix.os }} | |
| environment: macos-signing | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: ubuntu-x64 | |
| os: ubuntu-latest | |
| arch: x64 | |
| - name: windows-x64 | |
| os: windows-latest | |
| arch: x64 | |
| - name: macos-arm64 | |
| os: macos-15 | |
| arch: arm64 | |
| target: aarch64-apple-darwin | |
| - name: macos-intel | |
| os: macos-15-intel | |
| arch: x64 | |
| target: x86_64-apple-darwin | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Add macOS Rust target | |
| if: runner.os == 'macOS' | |
| run: rustup target add ${{ matrix.target }} | |
| - name: Install Linux dependencies | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libwebkit2gtk-4.1-dev \ | |
| build-essential \ | |
| curl \ | |
| wget \ | |
| file \ | |
| libxdo-dev \ | |
| libssl-dev \ | |
| libayatana-appindicator3-dev \ | |
| librsvg2-dev | |
| - name: Install npm dependencies | |
| run: npm ci | |
| - name: Import Apple signing certificate | |
| if: runner.os == 'macOS' | |
| env: | |
| APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} | |
| APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} | |
| run: | | |
| CERTIFICATE_PATH="$RUNNER_TEMP/apple-signing-certificate.p12" | |
| KEYCHAIN_PATH="$RUNNER_TEMP/apple-signing.keychain-db" | |
| echo -n "$APPLE_CERTIFICATE" | base64 --decode -o "$CERTIFICATE_PATH" | |
| security create-keychain -p "$APPLE_CERTIFICATE_PASSWORD" "$KEYCHAIN_PATH" | |
| security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH" | |
| security unlock-keychain -p "$APPLE_CERTIFICATE_PASSWORD" "$KEYCHAIN_PATH" | |
| security import "$CERTIFICATE_PATH" -P "$APPLE_CERTIFICATE_PASSWORD" -A -t cert -f pkcs12 -k "$KEYCHAIN_PATH" | |
| security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$APPLE_CERTIFICATE_PASSWORD" "$KEYCHAIN_PATH" | |
| security list-keychains -d user -s "$KEYCHAIN_PATH" | |
| - name: Run tests | |
| run: npm test | |
| - name: Build frontend | |
| run: npm run build | |
| - name: Build Tauri bundle | |
| if: runner.os != 'macOS' | |
| run: npm run tauri:build | |
| - name: Build signed and notarized macOS bundle | |
| if: runner.os == 'macOS' | |
| run: npm run tauri:build -- --target ${{ matrix.target }} | |
| env: | |
| CI: true | |
| APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} | |
| APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} | |
| APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} | |
| APPLE_ID: ${{ secrets.APPLE_ID }} | |
| APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} | |
| APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
| - name: Add macOS architecture suffix | |
| if: runner.os == 'macOS' | |
| env: | |
| ARCH_SUFFIX: ${{ matrix.arch }} | |
| TARGET_TRIPLE: ${{ matrix.target }} | |
| run: | | |
| for file in src-tauri/target/${TARGET_TRIPLE}/release/bundle/dmg/*.dmg; do | |
| [ -e "$file" ] || continue | |
| mv "$file" "${file%.dmg}-${ARCH_SUFFIX}.dmg" | |
| done | |
| for file in src-tauri/target/${TARGET_TRIPLE}/release/bundle/macos/*.app.tar.gz; do | |
| [ -e "$file" ] || continue | |
| mv "$file" "${file%.app.tar.gz}-${ARCH_SUFFIX}.app.tar.gz" | |
| done | |
| - name: Upload release assets | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: | | |
| src-tauri/target/release/bundle/msi/*.msi | |
| src-tauri/target/release/bundle/nsis/*.exe | |
| src-tauri/target/release/bundle/deb/*.deb | |
| src-tauri/target/release/bundle/rpm/*.rpm | |
| src-tauri/target/release/bundle/appimage/*.AppImage | |
| src-tauri/target/release/bundle/dmg/*.dmg | |
| src-tauri/target/release/bundle/macos/*.app.tar.gz | |
| src-tauri/target/*/release/bundle/dmg/*.dmg | |
| src-tauri/target/*/release/bundle/macos/*.app.tar.gz | |
| fail_on_unmatched_files: false |