[WIP] Implement enum
variants
#826
Workflow file for this run
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: | |
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 --features full | |
Package: | |
strategy: | |
matrix: | |
package: [ | |
examples/actix-web-app, fuzzing, rinja, rinja_derive, rinja_derive_standalone, | |
rinja_parser, testing, | |
] | |
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 | |
- 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 | |
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 fuzzing rinja rinja_derive rinja_derive_standalone rinja_parser testing | |
do | |
cd "$PKG" | |
echo "Testing: $PKG" | |
cargo +nightly fmt -- --check | |
cd - > /dev/null | |
done | |
MSRV: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: "1.80.0" | |
- run: cargo check --lib -p rinja --all-features | |
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 | |
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: | | |
set -eu | |
for PKG in \ | |
examples/actix-web-app fuzzing rinja rinja_derive rinja_derive_standalone rinja_parser testing | |
do | |
cd "$PKG" | |
cargo sort --check --check-format --grouped | |
cd - > /dev/null | |
done | |
Fuzz: | |
strategy: | |
matrix: | |
fuzz_target: | |
- all | |
- filters | |
- html | |
- parser | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- 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 | |
working-directory: fuzzing | |
env: | |
RUSTFLAGS: '-Ctarget-feature=-crt-static' | |
Cluster-Fuzz: | |
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 | |
Typos: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: crate-ci/typos@master |