name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
env:
CARGO_TERM_COLOR: always
jobs:
test:
name: Test
runs-on: ${{ matrix.platform }}
strategy:
matrix:
platform: [ubuntu-22.04]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Cache system dependencies
if: matrix.platform == 'ubuntu-22.04'
uses: actions/cache@v4
with:
path: /var/cache/apt
key: ${{ runner.os }}-apt-cache-${{ hashFiles('**/Cargo.toml') }}
restore-keys: |
${{ runner.os }}-apt-cache-
- name: Install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Cache Rust dependencies
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: latest
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Check Rust formatting
run: cargo fmt -- --check
- name: Run Rust clippy
run: cargo clippy -- -D warnings
- name: Run Rust tests
run: cargo test --verbose
- name: Build Rust package
run: cargo build --verbose
- name: Build JavaScript package
run: pnpm build
- name: Check JavaScript build output
run: |
test -f dist-js/index.js
test -f dist-js/index.cjs
test -f dist-js/index.d.ts
test-example:
name: Test Example App
runs-on: ${{ matrix.platform }}
needs: test
strategy:
matrix:
platform: [ubuntu-22.04]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Cache system dependencies
if: matrix.platform == 'ubuntu-22.04'
uses: actions/cache@v4
with:
path: /var/cache/apt
key: ${{ runner.os }}-apt-cache-${{ hashFiles('**/Cargo.toml') }}
restore-keys: |
${{ runner.os }}-apt-cache-
- name: Install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: latest
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-example-${{ hashFiles('examples/tauri-app/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-example-
${{ runner.os }}-pnpm-store-
- name: Install main package dependencies
run: pnpm install --frozen-lockfile
- name: Build main package
run: pnpm build
- name: Install example dependencies
run: |
cd examples/tauri-app
pnpm install --frozen-lockfile
- name: Check Tauri Rust code
run: |
cd examples/tauri-app/src-tauri
cargo check