ci: only run what a change affects, consolidate jobs (#3674)

* ci: only run what a change affects, consolidate jobs

- detect affected plugins from changed files and Cargo.lock dependency trees
- test/lint Rust per platform in shards instead of one job per plugin
- fold check-generated-files into lint-javascript, fmt into a single job
- skip fat LTO in integration test builds, single ABI in test-android

* ci: run e2e on bumps, use published tauri CLI, PR-safe pnpm cache

- trigger e2e on Cargo/pnpm lockfile and manifest changes
- install the latest 2.x tauri-cli with cargo-binstall in integration tests
- add setup-pnpm action: restore the store everywhere, save only on v2/v3

* fix clippy, ios build

* fix bumps [skip ci]
This commit is contained in:
Lucas Fernandes Nogueira authored and GitHub committed 2026-10-09 12:57:12 -03:00
1 parent 974af951a5
commit 9a74a78c71
18 files changed
+600 -630

No files matched your search

+41 -26
View File
@@ -7,49 +7,64 @@ name: check formatting
on:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
rustfmt:
# A single job whose checks only run when files they cover changed: the checks themselves take
# seconds, so a runner each would mostly be spent waiting for and setting up runners.
fmt:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read # to list the changed files
steps:
- uses: actions/checkout@v7
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
rust:
- .github/workflows/fmt.yml
- '**/*.rs'
prettier:
- .github/workflows/fmt.yml
- .prettierrc
- .prettierignore
- pnpm-lock.yaml
- '**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx,json,json5,jsonc,md,mdx,yml,yaml,css,scss,less,html,vue,svelte}'
toml:
- .github/workflows/fmt.yml
- '**/*.toml'
- name: install Rust stable and rustfmt
if: steps.filter.outputs.rust == 'true'
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: run cargo fmt
- name: rustfmt
if: steps.filter.outputs.rust == 'true'
run: cargo fmt --all -- --check
prettier:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: 'lts/*'
- uses: pnpm/action-setup@v6
with:
run_install: true
cache: true # the pnpm store, keyed by OS and lockfile hash and shared by every workflow
- run: pnpm format:check
taplo:
name: taplo (.toml files)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: install taplo-cli
if: ${{ !cancelled() && steps.filter.outputs.toml == 'true' }}
uses: taiki-e/install-action@v2
with:
tool: taplo-cli
- run: taplo fmt --check --diff
- name: taplo (.toml files)
if: ${{ !cancelled() && steps.filter.outputs.toml == 'true' }}
run: taplo fmt --check --diff
- uses: ./.github/actions/setup-pnpm
if: ${{ !cancelled() && steps.filter.outputs.prettier == 'true' }}
- name: prettier
if: ${{ !cancelled() && steps.filter.outputs.prettier == 'true' }}
run: pnpm format:check