name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
ci:
strategy:
fail-fast: false
matrix:
platform: [macos-latest, ubuntu-latest, windows-latest]
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Install dependencies
if: matrix.platform == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev
- name: Rust setup
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Formatting tools setup
run: |
rustup toolchain install nightly --component rustfmt --profile minimal --no-self-update
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: ./ -> target
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Node setup and cache
uses: actions/setup-node@v6
with:
node-version-file: .node-version
cache: pnpm
- name: Build
run: |
pnpm install --frozen-lockfile
pnpm build
- name: Build examples
run: |
pnpm -C examples/desktop-clock/ install --frozen-lockfile
pnpm -C examples/desktop-clock/ tauri build
- name: Check formatting
run: pnpm format:check
- name: Check linting
run: pnpm lint:check