Skip to content

chore: explicitly set tauri cli version (#658) #170

chore: explicitly set tauri cli version (#658)

chore: explicitly set tauri cli version (#658) #170

Workflow file for this run

name: Build Tauri
on:
push:
branches:
- master
paths-ignore:
- "website"
- "CHANGELOG.md"
workflow_call:
workflow_dispatch:
jobs:
build:
name: "Test Build"
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-22.04
name: linux
# https://tauri.app/v1/guides/building/linux#cross-compiling-tauri-applications-for-arm-based-devices
# Cross Compiling is also more of a pain it seems for linux atm, explore later
targets: "x86_64-unknown-linux-gnu"
tauri_target: ["x86_64-unknown-linux-gnu"]
- os: macos-latest
name: mac
targets: "aarch64-apple-darwin,x86_64-apple-darwin"
tauri_target: ["universal-apple-darwin"]
- os: windows-latest
name: win
targets: "aarch64-pc-windows-msvc,x86_64-pc-windows-msvc"
# The MSI installer is better integrated with the Add/Remove menu and feels more modern.
# The only real added benefit of NSIS is that the installer can have a custom logo.
# Also, nsis is the only one that currently works on arm64
# Another note is embedBootstrapper is enabled to improve support on window 7. Though windows 7 doesn't support arm64.
tauri_target:
[
"'aarch64-pc-windows-msvc --bundles nsis,updater'",
"'x86_64-pc-windows-msvc --bundles msi,updater'",
]
steps:
- uses: actions/checkout@v4
- name: Use Node.js 18.x
uses: actions/setup-node@v4
with:
node-version: 18.x
cache: "yarn"
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.targets }}
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: "./app/tauri -> target"
- name: install dependencies (ubuntu only)
if: matrix.os == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1 build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev javascriptcoregtk-4.1
- name: Install NPM Packages
run: |
yarn install --immutable --network-timeout 120000
- name: Prepare for app notarization
if: startsWith(matrix.os, 'macos')
# Import Apple API key for app notarization on macOS
run: |
mkdir -p ~/private_keys/
echo '${{ secrets.APPLE_API_KEY_FILE }}' > ~/private_keys/AuthKey_${{ secrets.APPLE_API_KEY }}.p8
- name: Build
shell: bash
run: |
for target in ${{ join(matrix.tauri_target, ' ') }}; do
yarn build:tauri --target $target --config ./app/tauri/release.conf.json
done
env:
APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}
APPLE_API_KEY_PATH: ~/private_keys/AuthKey_${{ secrets.APPLE_API_KEY }}.p8
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
APPLE_PROVIDER_SHORT_NAME: ${{ secrets.APPLE_PROVIDER_SHORT_NAME }}
# Possibly set up some basic unit testing just to make sure parts render and none of the libraries are straight up breaking
- uses: actions/upload-artifact@v3
with:
name: tauri-${{ matrix.name }}
path: |
app/tauri/target/*/release/bundle/**/*.AppImage
app/tauri/target/*/release/bundle/**/*.dmg
app/tauri/target/*/release/bundle/**/*.deb
app/tauri/target/*/release/bundle/**/msi/*.msi
app/tauri/target/*/release/bundle/**/nsis/*.exe
app/tauri/target/*/release/bundle/appimage/**/*.tar.gz
app/tauri/target/*/release/bundle/macos/**/*.tar.gz
app/tauri/target/*/release/bundle/**/*.zip
app/tauri/target/*/release/bundle/**/*.sig
generate-updater-file:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
# Download-artifact cannot do a wildcard and if all are downloaded it can download the results from the electron stage
# We could filter that but this is faster to avoid unneeded downloads.
- name: Download Win
uses: actions/download-artifact@v3
with:
name: tauri-win
path: artifacts/tauri-win
- name: Download Mac
uses: actions/download-artifact@v3
with:
name: tauri-mac
path: artifacts/tauri-mac
- name: Download Linux
uses: actions/download-artifact@v3
with:
name: tauri-linux
path: artifacts/tauri-linux
- name: Use Node.js 18.x
uses: actions/setup-node@v3
with:
node-version: 18.x
cache: "yarn"
- name: Generate updater file
run: node app/tauri/release-prep/release-prep.js
- uses: actions/upload-artifact@v3
with:
name: tauri-release
path: |
release/*