From 5b4df98ff6b3d1aef11bc97282d46d7ea1b100a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Kijewski?= Date: Sat, 4 Jan 2025 18:50:19 +0100 Subject: [PATCH] ci: group checks in fast, avg and slow --- .github/workflows/rust.yml | 175 +++++++++++++++++++++---------------- 1 file changed, 98 insertions(+), 77 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index c4e944ff..9a5f1237 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -8,61 +8,10 @@ on: - cron: "32 4 * * 5" jobs: - Test: - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - rust: [stable, beta] - exclude: - - os: macos-latest - rust: beta - - os: windows-latest - rust: beta - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@master - with: - toolchain: ${{ matrix.rust }} - - uses: taiki-e/install-action@v2 - with: - tool: cargo-nextest - - uses: Swatinem/rust-cache@v2 - - run: cargo build --all-targets --features full - - run: cargo nextest run --all-targets --no-tests=warn --features full - - Package: - strategy: - matrix: - package: [ - examples/actix-web-app, fuzzing, rinja, rinja_derive, rinja_derive_standalone, - rinja_parser, testing, testing-alloc, testing-no-std, - ] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - with: - components: clippy - - uses: taiki-e/install-action@v2 - with: - tool: cargo-nextest - - uses: Swatinem/rust-cache@v2 - - run: cd ${{ matrix.package }} && cargo nextest run --no-tests=warn - - run: cd ${{ matrix.package }} && cargo clippy --all-targets -- -D warnings - - Docs: - strategy: - matrix: - package: [rinja, rinja_derive, rinja_parser] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@nightly - - uses: Swatinem/rust-cache@v2 - - run: cd ${{ matrix.package }} && cargo doc --all-features --no-deps - env: - RUSTDOCFLAGS: -Z unstable-options --generate-link-to-definition --cfg=docsrs -D warnings +#################################################################################################### +# STEP 1: FASTEST +# ["Rustfmt", "Docs", "Audit", "Book", "Typos", "Jinja2-Assumptions", "DevSkim", "CargoSort"] +#################################################################################################### Rustfmt: runs-on: ubuntu-latest @@ -85,14 +34,18 @@ jobs: cd - > /dev/null done - MSRV: + Docs: + strategy: + matrix: + package: [rinja, rinja_derive, rinja_parser] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@master - with: - toolchain: "1.81.0" - - run: cargo check --lib -p rinja --all-features + - uses: dtolnay/rust-toolchain@nightly + - uses: Swatinem/rust-cache@v2 + - run: cd ${{ matrix.package }} && cargo doc --all-features --no-deps + env: + RUSTDOCFLAGS: -Z unstable-options --generate-link-to-definition --cfg=docsrs -D warnings Audit: runs-on: ubuntu-latest @@ -115,6 +68,22 @@ jobs: run: $HOME/bin/mdbook build working-directory: book + Typos: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: crate-ci/typos@master + + Jinja2-Assumptions: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.13' + - uses: astral-sh/setup-uv@v5 + - run: testing/jinja2-assumptions/test.sh + DevSkim: name: DevSkim runs-on: ubuntu-latest @@ -151,7 +120,73 @@ jobs: cd - > /dev/null done +#################################################################################################### +# STEP 2: INTERMEDIATE +# ["Test", "Package", "MSRV"] +#################################################################################################### + + Test: + needs: ["Rustfmt", "Docs", "Audit", "Book", "Typos", "Jinja2-Assumptions", "DevSkim", "CargoSort"] + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + rust: [stable, beta] + exclude: + - os: macos-latest + rust: beta + - os: windows-latest + rust: beta + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ matrix.rust }} + - uses: taiki-e/install-action@v2 + with: + tool: cargo-nextest + - uses: Swatinem/rust-cache@v2 + - run: cargo build --all-targets --features full + - run: cargo nextest run --all-targets --no-tests=warn --features full + + Package: + needs: ["Rustfmt", "Docs", "Audit", "Book", "Typos", "Jinja2-Assumptions", "DevSkim", "CargoSort"] + strategy: + matrix: + package: [ + examples/actix-web-app, fuzzing, rinja, rinja_derive, rinja_derive_standalone, + rinja_parser, testing, testing-alloc, testing-no-std, + ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + with: + components: clippy + - uses: taiki-e/install-action@v2 + with: + tool: cargo-nextest + - uses: Swatinem/rust-cache@v2 + - run: cd ${{ matrix.package }} && cargo nextest run --no-tests=warn + - run: cd ${{ matrix.package }} && cargo clippy --all-targets -- -D warnings + + MSRV: + needs: ["Rustfmt", "Docs", "Audit", "Book", "Typos", "Jinja2-Assumptions", "DevSkim", "CargoSort"] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@master + with: + toolchain: "1.81.0" + - run: cargo check --lib -p rinja --all-features + +#################################################################################################### +# STEP 2: SLOW +# ["Fuzz", "Cluster-Fuzz"] +#################################################################################################### + Fuzz: + needs: ["Test", "Package", "MSRV"] strategy: matrix: fuzz_target: @@ -164,18 +199,20 @@ jobs: - uses: actions/checkout@v4 with: submodules: recursive + - run: git submodule update --remote - uses: dtolnay/rust-toolchain@master with: toolchain: nightly components: rust-src - run: curl --location --silent --show-error --fail https://github.com/cargo-bins/cargo-quickinstall/releases/download/cargo-fuzz-0.12.0/cargo-fuzz-0.12.0-x86_64-unknown-linux-gnu.tar.gz | tar -xzvvf - -C $HOME/.cargo/bin - uses: Swatinem/rust-cache@v2 - - run: cargo fuzz run ${{ matrix.fuzz_target }} --jobs 4 -- -max_total_time=120 + - run: cargo fuzz run ${{ matrix.fuzz_target }} --jobs 4 -- -max_total_time=240 working-directory: fuzzing env: RUSTFLAGS: '-Ctarget-feature=-crt-static' Cluster-Fuzz: + needs: ["Test", "Package", "MSRV"] runs-on: ubuntu-latest permissions: security-events: write @@ -205,19 +242,3 @@ jobs: with: sarif_file: cifuzz-sarif/results.sarif checkout_path: cifuzz-sarif - - Typos: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: crate-ci/typos@master - - Jinja2-Assumptions: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: '3.13' - - uses: astral-sh/setup-uv@v5 - - run: testing/jinja2-assumptions/test.sh