feat!: add WASIX asset pipeline and protocol recovery #36
Workflow file for this run
This file contains hidden or 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: CI | |
| on: | |
| pull_request: | |
| push: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| PREK_VERSION: 0.3.10 | |
| ZIZMOR_VERSION: 1.24.1 | |
| jobs: | |
| scope: | |
| name: Determine changed surfaces | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| outputs: | |
| repo: ${{ steps.scope.outputs.repo }} | |
| rust: ${{ steps.scope.outputs.rust }} | |
| examples: ${{ steps.scope.outputs.examples }} | |
| package: ${{ steps.scope.outputs.package }} | |
| assets: ${{ steps.scope.outputs.assets }} | |
| ci: ${{ steps.scope.outputs.ci }} | |
| docs: ${{ steps.scope.outputs.docs }} | |
| docs_only: ${{ steps.scope.outputs.docs_only }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - name: Classify changed paths | |
| id: scope | |
| env: | |
| BASE_SHA: ${{ github.event.pull_request.base.sha || github.event.before }} | |
| HEAD_SHA: ${{ github.event.pull_request.head.sha || github.sha }} | |
| run: scripts/ci-scope.sh "$BASE_SHA" "$HEAD_SHA" | |
| repo-hygiene: | |
| name: Repository hygiene | |
| needs: scope | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 | |
| with: | |
| toolchain: 1.92 | |
| components: rustfmt | |
| - name: Install prek | |
| uses: taiki-e/install-action@1f2425cdb59f8fffb99ee16a5968edf6f57a2b93 | |
| with: | |
| tool: prek@${{ env.PREK_VERSION }} | |
| - name: Validate repository hygiene | |
| run: scripts/validate.sh repo | |
| workflow-lint: | |
| name: Workflow lint | |
| needs: scope | |
| if: ${{ github.event_name == 'push' || needs.scope.outputs.ci == 'true' }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| persist-credentials: false | |
| - name: Lint GitHub Actions workflows | |
| uses: raven-actions/actionlint@205b530c5d9fa8f44ae9ed59f341a0db994aa6f8 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 | |
| with: | |
| toolchain: 1.92 | |
| - name: Install zizmor | |
| run: cargo install zizmor --version "$ZIZMOR_VERSION" --locked | |
| - name: Audit GitHub Actions workflows | |
| run: zizmor .github/workflows | |
| rust-lint: | |
| name: Rust lint | |
| needs: scope | |
| if: ${{ github.event_name == 'push' || needs.scope.outputs.rust == 'true' }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 | |
| with: | |
| toolchain: 1.92 | |
| components: clippy | |
| - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 | |
| - name: Validate lint gates | |
| run: scripts/validate.sh lint | |
| rust-tests: | |
| name: Rust tests | |
| needs: scope | |
| if: ${{ github.event_name == 'push' || needs.scope.outputs.rust == 'true' }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 | |
| with: | |
| toolchain: 1.92 | |
| - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 | |
| - name: Install cargo-nextest | |
| uses: taiki-e/install-action@1f2425cdb59f8fffb99ee16a5968edf6f57a2b93 | |
| with: | |
| tool: cargo-nextest | |
| - name: Validate test gates | |
| run: scripts/validate.sh test | |
| examples: | |
| name: Examples | |
| needs: scope | |
| if: ${{ github.event_name == 'push' || needs.scope.outputs.examples == 'true' }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - name: Install Tauri Linux dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libayatana-appindicator3-dev \ | |
| libssl-dev \ | |
| libwebkit2gtk-4.1-dev \ | |
| librsvg2-dev \ | |
| patchelf \ | |
| pkg-config | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 | |
| with: | |
| toolchain: 1.92 | |
| - name: Install Node.js | |
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| cache-dependency-path: examples/tauri-sqlx-vanilla/package-lock.json | |
| - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 | |
| with: | |
| workspaces: | | |
| . -> target | |
| examples/tauri-sqlx-vanilla/src-tauri -> target | |
| - name: Validate examples | |
| run: scripts/validate.sh examples | |
| package: | |
| name: Package checks | |
| needs: scope | |
| if: ${{ github.event_name == 'push' || needs.scope.outputs.package == 'true' }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 | |
| with: | |
| toolchain: 1.92 | |
| - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 | |
| - name: Validate package checks | |
| run: scripts/validate.sh package | |
| feature-powerset: | |
| name: Feature powerset | |
| needs: scope | |
| if: ${{ github.event_name == 'push' || needs.scope.outputs.rust == 'true' }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 45 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| persist-credentials: false | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 | |
| with: | |
| toolchain: 1.92 | |
| - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 | |
| - name: Install cargo-hack | |
| uses: taiki-e/install-action@1f2425cdb59f8fffb99ee16a5968edf6f57a2b93 | |
| with: | |
| tool: cargo-hack | |
| - name: Check feature combinations | |
| run: cargo hack check --workspace --feature-powerset --no-dev-deps | |
| semver: | |
| name: Public API compatibility | |
| needs: scope | |
| if: ${{ github.event_name == 'push' || needs.scope.outputs.package == 'true' }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| persist-credentials: false | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 | |
| - name: Check semver compatibility | |
| uses: obi1kenobi/cargo-semver-checks-action@6b69fcf40e9b5fb17adeb57e4b6ecd020649a239 | |
| supply-chain: | |
| name: Supply chain | |
| needs: scope | |
| if: ${{ github.event_name == 'push' || needs.scope.outputs.rust == 'true' || needs.scope.outputs.ci == 'true' }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| persist-credentials: false | |
| - uses: EmbarkStudios/cargo-deny-action@91bf2b620e09e18d6eb78b92e7861937469acedb | |
| required: | |
| name: Required checks | |
| if: always() | |
| needs: | |
| - scope | |
| - repo-hygiene | |
| - workflow-lint | |
| - rust-lint | |
| - rust-tests | |
| - examples | |
| - package | |
| - feature-powerset | |
| - semver | |
| - supply-chain | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Fail if any required job failed | |
| if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') | |
| run: exit 1 | |
| - name: All required jobs passed | |
| run: echo "All required CI jobs passed or were intentionally skipped." |