chore: Upgrade to Winnow 0.7 (#330) #1028
This file contains 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: | |
push: | |
branches: ['master'] | |
pull_request: | |
schedule: | |
- cron: "32 4 * * 5" | |
jobs: | |
#################################################################################################### | |
# STEP 1: FASTEST | |
# ["Rustfmt", "Docs", "Audit", "Book", "Typos", "Jinja2-Assumptions", "DevSkim", "CargoSort"] | |
#################################################################################################### | |
Rustfmt: | |
runs-on: ubuntu-latest | |
steps: | |
# No need to test `rinja_derive_standalone`. It has same the `src` folder as `rinja_derive`. | |
# No need to run the checks in parallel. They are fast enough. | |
# No need for caching. No code is compiled at all. | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rustfmt | |
- run: | | |
set -eu | |
for PKG in \ | |
examples/actix-web-app examples/axum-app examples/poem-app examples/rocket-app examples/salvo-app examples/warp-app fuzzing \ | |
rinja rinja_derive rinja_derive_standalone rinja_parser \ | |
testing testing-alloc testing-no-std | |
do | |
cd "$PKG" | |
echo "Testing: $PKG" | |
cargo +nightly fmt -- --check | |
cd - > /dev/null | |
done | |
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 | |
Audit: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: EmbarkStudios/cargo-deny-action@v2 | |
Book: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Generate "book/theme/index.hbs" as "skeleton" of the generated pages. | |
run: ./update-theme.py | |
working-directory: book | |
- name: Install mdbook | |
run: | | |
mkdir -p $HOME/bin | |
curl --location --silent --show-error --fail https://github.com/cargo-bins/cargo-quickinstall/releases/download/mdbook-0.4.40/mdbook-0.4.40-x86_64-unknown-linux-gnu.tar.gz | tar -xzvvf - -C $HOME/bin | |
- name: Convert the book to HTML | |
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 | |
permissions: | |
actions: read | |
contents: read | |
security-events: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run DevSkim scanner | |
uses: microsoft/DevSkim-Action@v1 | |
- name: Upload DevSkim scan results to GitHub Security tab | |
uses: github/codeql-action/upload-sarif@v3 | |
with: | |
sarif_file: devskim-results.sarif | |
CargoSort: | |
name: Check order in Cargo.toml | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-sort | |
- run: | | |
cargo sort --check --check-format --grouped | |
set -eu | |
for PKG in \ | |
examples/actix-web-app examples/axum-app examples/poem-app examples/rocket-app examples/salvo-app examples/warp-app fuzzing \ | |
rinja rinja_derive rinja_derive_standalone rinja_parser \ | |
testing testing-alloc testing-no-std | |
do | |
cd "$PKG" | |
cargo sort --check --check-format --grouped | |
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, examples/axum-app, examples/poem-app, examples/rocket-app, examples/salvo-app, examples/warp-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 build --all-targets | |
- run: cd ${{ matrix.package }} && cargo nextest run --all-targets --no-fail-fast --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: | |
- all | |
- filters | |
- html | |
- parser | |
runs-on: ubuntu-latest | |
steps: | |
- 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=240 | |
working-directory: fuzzing | |
env: | |
RUSTFLAGS: '-Ctarget-feature=-crt-static' | |
Cluster-Fuzz: | |
needs: ["Test", "Package", "MSRV"] | |
runs-on: ubuntu-latest | |
permissions: | |
security-events: write | |
steps: | |
- name: Build Fuzzers | |
id: build | |
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master | |
with: | |
oss-fuzz-project-name: rinja | |
language: rust | |
- name: Run Fuzzers | |
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master | |
with: | |
oss-fuzz-project-name: rinja | |
language: rust | |
fuzz-seconds: 600 | |
output-sarif: true | |
- name: Upload Crash | |
uses: actions/upload-artifact@v4 | |
if: failure() && steps.build.outcome == 'success' | |
with: | |
name: artifacts | |
path: ./out/artifacts | |
- name: Upload Sarif | |
if: always() && steps.build.outcome == 'success' | |
uses: github/codeql-action/upload-sarif@v3 | |
with: | |
sarif_file: cifuzz-sarif/results.sarif | |
checkout_path: cifuzz-sarif |