feat!: add WASIX asset pipeline and protocol recovery #53
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: Set up Rust tooling | |
| uses: ./.github/actions/setup-rust-tools | |
| with: | |
| components: rustfmt | |
| tools: prek@${{ env.PREK_VERSION }} | |
| - name: Validate repository hygiene | |
| run: scripts/validate.sh repo | |
| - name: Verify asset inputs | |
| run: scripts/validate.sh artifacts | |
| 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: Set up Rust tooling | |
| uses: ./.github/actions/setup-rust-tools | |
| with: | |
| cache: "false" | |
| - 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: Set up Rust tooling | |
| uses: ./.github/actions/setup-rust-tools | |
| with: | |
| components: clippy | |
| - 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: Set up Rust tooling | |
| uses: ./.github/actions/setup-rust-tools | |
| with: | |
| tools: cargo-nextest | |
| - name: Validate test gates | |
| run: scripts/validate.sh test | |
| runtime-aot-tests: | |
| name: Runtime AOT tests (${{ matrix.target }}) | |
| needs: scope | |
| if: ${{ needs.scope.outputs.rust == 'true' && needs.scope.outputs.assets != 'true' }} | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 180 | |
| permissions: | |
| contents: read | |
| actions: read | |
| defaults: | |
| run: | |
| shell: bash | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: macos-15 | |
| target: aarch64-apple-darwin | |
| package: pglite-oxide-aot-aarch64-apple-darwin | |
| - os: macos-15-intel | |
| target: x86_64-apple-darwin | |
| package: pglite-oxide-aot-x86_64-apple-darwin | |
| - os: ubuntu-latest | |
| target: x86_64-unknown-linux-gnu | |
| package: pglite-oxide-aot-x86_64-unknown-linux-gnu | |
| - os: ubuntu-24.04-arm | |
| target: aarch64-unknown-linux-gnu | |
| package: pglite-oxide-aot-aarch64-unknown-linux-gnu | |
| - os: windows-latest | |
| target: x86_64-pc-windows-msvc | |
| package: pglite-oxide-aot-x86_64-pc-windows-msvc | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - name: Set up Rust tooling | |
| uses: ./.github/actions/setup-rust-tools | |
| with: | |
| tools: cargo-nextest | |
| - name: Download compatible runtime artifacts | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| cargo run -p xtask -- assets download \ | |
| --latest-compatible \ | |
| --target-triple "${{ matrix.target }}" | |
| - name: Check target AOT crate | |
| run: cargo check -p "${{ matrix.package }}" --locked | |
| - name: Run runtime tests against target AOT | |
| run: scripts/validate.sh runtime | |
| 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: Set up Rust tooling | |
| uses: ./.github/actions/setup-rust-tools | |
| with: | |
| cache-workspaces: | | |
| . -> target | |
| examples/tauri-sqlx-vanilla/src-tauri -> target | |
| - 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 | |
| - 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: Set up Rust tooling | |
| uses: ./.github/actions/setup-rust-tools | |
| - 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: Set up Rust tooling | |
| uses: ./.github/actions/setup-rust-tools | |
| with: | |
| tools: 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: Set up Rust tooling | |
| uses: ./.github/actions/setup-rust-tools | |
| - 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 | |
| - runtime-aot-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." |