name: Build Test
on:
push:
branches:
- develop
paths:
- "**/*.rs"
- "**/*.swift"
- "**/*.kt"
- "**/Cargo.toml"
- "**/Package.swift"
- "**/build.gradle.kts"
- ".github/workflows/build.yml"
pull_request:
branches:
- develop
paths:
- "**/*.rs"
- "**/*.swift"
- "**/*.kt"
- "**/Cargo.toml"
- "**/Package.swift"
- "**/build.gradle.kts"
- ".github/workflows/build.yml"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
desktop:
strategy:
fail-fast: false
matrix:
include:
- platform: ubuntu-latest
target: x86_64-unknown-linux-gnu
- platform: macos-latest
target: aarch64-apple-darwin
- platform: macos-latest
target: x86_64-apple-darwin
- platform: windows-latest
target: x86_64-pc-windows-msvc
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install dependencies (Ubuntu)
if: matrix.platform == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev
- uses: Swatinem/rust-cache@v2
with:
workspaces: |
. -> target
examples/tauri-app/src-tauri -> target
- name: Build JS API
run: |
bun install
bun run build
- name: Install example dependencies
working-directory: examples/tauri-app
shell: bash
run: |
# Use npm on Windows to avoid bun ENOENT bug with local file: packages
if [[ "$RUNNER_OS" == "Windows" ]]; then
npm install
else
bun install
fi
- name: Build example app
working-directory: examples/tauri-app
shell: bash
env:
RUSTFLAGS: "-D warnings"
run: |
if [[ "$RUNNER_OS" == "Windows" ]]; then
npm run tauri -- build --target ${{ matrix.target }} --debug
else
bun tauri build --target ${{ matrix.target }} --debug
fi
android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-linux-android,armv7-linux-androideabi,i686-linux-android,x86_64-linux-android
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: "21"
distribution: "temurin"
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Setup Android NDK
uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r27
link-to-sdk: true
- uses: Swatinem/rust-cache@v2
with:
workspaces: |
. -> target
examples/tauri-app/src-tauri -> target
- name: Build JS API
run: |
bun install
bun run build
- name: Install example dependencies
working-directory: examples/tauri-app
run: bun install
- name: Initialize Android project
working-directory: examples/tauri-app
run: bun tauri android init
- name: Build Android app
working-directory: examples/tauri-app
env:
NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
RUSTFLAGS: "-D warnings"
run: bun tauri android build --target aarch64 --debug
ios:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-ios,aarch64-apple-ios-sim,x86_64-apple-ios
- uses: Swatinem/rust-cache@v2
with:
workspaces: |
. -> target
examples/tauri-app/src-tauri -> target
- name: Build JS API
run: |
bun install
bun run build
- name: Install example dependencies
working-directory: examples/tauri-app
run: bun install
- name: Initialize iOS project
working-directory: examples/tauri-app
run: bun tauri ios init
- name: Build iOS app (Simulator)
working-directory: examples/tauri-app
env:
RUSTFLAGS: "-D warnings"
run: bun tauri ios build --target aarch64-sim --debug