Split ci job into multiple jobs running on github runners #7264
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: {} | |
| merge_group: {} | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| # Fast linting job on GitHub runner | |
| web-lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 📥 Clone and checkout repository | |
| uses: actions/checkout@v3 | |
| - name: 🚦 Check if CI can be skipped | |
| id: skip-check | |
| uses: cariad-tech/merge-queue-ci-skipper@main | |
| - name: 🟢 Install the latest Node.js | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 'latest' | |
| - name: 🚧 Install dependencies | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| run: | | |
| cd frontend | |
| npm ci | |
| - name: 👕 Lint Graphite web formatting | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| env: | |
| NODE_ENV: production | |
| run: | | |
| cd frontend | |
| npm run lint | |
| # Rust format check on GitHub runner | |
| rust-fmt: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 📥 Clone and checkout repository | |
| uses: actions/checkout@v3 | |
| - name: 🚦 Check if CI can be skipped | |
| id: skip-check | |
| uses: cariad-tech/merge-queue-ci-skipper@main | |
| - name: 🦀 Install the latest Rust | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt | |
| - name: 🔬 Check Rust formatting | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| run: cargo fmt --all -- --check | |
| # License compatibility check on GitHub runner | |
| cargo-deny: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 📥 Clone and checkout repository | |
| uses: actions/checkout@v3 | |
| - name: 📜 Check crate license compatibility for root workspace | |
| uses: EmbarkStudios/cargo-deny-action@v2 | |
| with: | |
| command: check bans licenses sources | |
| - name: 📜 Check crate license compatibility for /libraries/rawkit | |
| uses: EmbarkStudios/cargo-deny-action@v2 | |
| with: | |
| command: check bans licenses sources | |
| manifest-path: libraries/rawkit/Cargo.toml | |
| # Web build on GitHub runner (only compiles WASM crate) | |
| web-build: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| deployments: write | |
| steps: | |
| - name: 📥 Clone and checkout repository | |
| uses: actions/checkout@v3 | |
| - name: 🚦 Check if CI can be skipped | |
| id: skip-check | |
| uses: cariad-tech/merge-queue-ci-skipper@main | |
| - name: 🟢 Install the latest Node.js | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 'latest' | |
| - name: 🦀 Install the latest Rust | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - name: 📦 Install wasm-pack | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh | |
| - name: 📦 Install cargo-about | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| run: cargo install cargo-about | |
| - name: 🚧 Install build dependencies | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| run: | | |
| cd frontend | |
| npm run setup | |
| - name: 🌐 Build Graphite web code | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| env: | |
| NODE_ENV: production | |
| run: | | |
| cd frontend | |
| npm run build | |
| - name: 📤 Publish to Cloudflare Pages | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| uses: cloudflare/pages-action@1 | |
| continue-on-error: true | |
| with: | |
| apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
| accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | |
| gitHubToken: ${{ secrets.GITHUB_TOKEN }} | |
| projectName: graphite-dev | |
| directory: frontend/dist | |
| # Full Rust build and tests on self-hosted runner | |
| rust-build-and-test: | |
| runs-on: self-hosted | |
| env: | |
| RUSTC_WRAPPER: /usr/bin/sccache | |
| CARGO_INCREMENTAL: 0 | |
| SCCACHE_DIR: /var/lib/github-actions/.cache | |
| steps: | |
| - name: 📥 Clone and checkout repository | |
| uses: actions/checkout@v3 | |
| - name: 🚦 Check if CI can be skipped | |
| id: skip-check | |
| uses: cariad-tech/merge-queue-ci-skipper@main | |
| - name: 🦀 Install the latest Rust | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| run: | | |
| rustup update stable | |
| - name: 🦀 Fetch Rust dependencies | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| run: | | |
| cargo fetch --locked | |
| - name: 🦀 Build Rust code | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| env: | |
| RUSTFLAGS: -Dwarnings | |
| run: | | |
| mold -run cargo build --all-features | |
| - name: 🧪 Run Rust tests | |
| if: steps.skip-check.outputs.skip-check != 'true' | |
| run: | | |
| mold -run cargo test --all-features |