Skip to content

Improve CLI failure status messages #20

Improve CLI failure status messages

Improve CLI failure status messages #20

Workflow file for this run

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