chore: explicitly set tauri cli version (#658) #170
This file contains 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: 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/* |