1e31f0860Sopenharmony_ciname: CI 2e31f0860Sopenharmony_ci 3e31f0860Sopenharmony_cion: 4e31f0860Sopenharmony_ci push: 5e31f0860Sopenharmony_ci pull_request: 6e31f0860Sopenharmony_ci workflow_dispatch: 7e31f0860Sopenharmony_ci schedule: [cron: "40 1 * * *"] 8e31f0860Sopenharmony_ci 9e31f0860Sopenharmony_cipermissions: 10e31f0860Sopenharmony_ci contents: read 11e31f0860Sopenharmony_ci 12e31f0860Sopenharmony_cienv: 13e31f0860Sopenharmony_ci RUSTFLAGS: -Dwarnings 14e31f0860Sopenharmony_ci 15e31f0860Sopenharmony_cijobs: 16e31f0860Sopenharmony_ci pre_ci: 17e31f0860Sopenharmony_ci uses: dtolnay/.github/.github/workflows/pre_ci.yml@master 18e31f0860Sopenharmony_ci 19e31f0860Sopenharmony_ci test: 20e31f0860Sopenharmony_ci name: Rust ${{matrix.rust}} 21e31f0860Sopenharmony_ci needs: pre_ci 22e31f0860Sopenharmony_ci if: needs.pre_ci.outputs.continue 23e31f0860Sopenharmony_ci runs-on: ubuntu-latest 24e31f0860Sopenharmony_ci strategy: 25e31f0860Sopenharmony_ci fail-fast: false 26e31f0860Sopenharmony_ci matrix: 27e31f0860Sopenharmony_ci rust: [nightly, stable, beta, 1.56.0] 28e31f0860Sopenharmony_ci timeout-minutes: 45 29e31f0860Sopenharmony_ci steps: 30e31f0860Sopenharmony_ci - uses: actions/checkout@v4 31e31f0860Sopenharmony_ci - uses: dtolnay/rust-toolchain@master 32e31f0860Sopenharmony_ci with: 33e31f0860Sopenharmony_ci toolchain: ${{matrix.rust}} 34e31f0860Sopenharmony_ci components: rust-src 35e31f0860Sopenharmony_ci - name: Enable type layout randomization 36e31f0860Sopenharmony_ci run: echo RUSTFLAGS=${RUSTFLAGS}\ -Zrandomize-layout >> $GITHUB_ENV 37e31f0860Sopenharmony_ci if: matrix.rust == 'nightly' 38e31f0860Sopenharmony_ci - run: cargo test 39e31f0860Sopenharmony_ci - run: cargo run --manifest-path benches/Cargo.toml 40e31f0860Sopenharmony_ci 41e31f0860Sopenharmony_ci minimal: 42e31f0860Sopenharmony_ci name: Minimal versions 43e31f0860Sopenharmony_ci needs: pre_ci 44e31f0860Sopenharmony_ci if: needs.pre_ci.outputs.continue 45e31f0860Sopenharmony_ci runs-on: ubuntu-latest 46e31f0860Sopenharmony_ci timeout-minutes: 45 47e31f0860Sopenharmony_ci steps: 48e31f0860Sopenharmony_ci - uses: actions/checkout@v4 49e31f0860Sopenharmony_ci - uses: dtolnay/rust-toolchain@nightly 50e31f0860Sopenharmony_ci - run: cargo generate-lockfile -Z minimal-versions 51e31f0860Sopenharmony_ci - run: cargo check --locked 52e31f0860Sopenharmony_ci 53e31f0860Sopenharmony_ci doc: 54e31f0860Sopenharmony_ci name: Documentation 55e31f0860Sopenharmony_ci needs: pre_ci 56e31f0860Sopenharmony_ci if: needs.pre_ci.outputs.continue 57e31f0860Sopenharmony_ci runs-on: ubuntu-latest 58e31f0860Sopenharmony_ci timeout-minutes: 45 59e31f0860Sopenharmony_ci env: 60e31f0860Sopenharmony_ci RUSTDOCFLAGS: -Dwarnings 61e31f0860Sopenharmony_ci steps: 62e31f0860Sopenharmony_ci - uses: actions/checkout@v4 63e31f0860Sopenharmony_ci - uses: dtolnay/rust-toolchain@nightly 64e31f0860Sopenharmony_ci with: 65e31f0860Sopenharmony_ci components: rust-src 66e31f0860Sopenharmony_ci - uses: dtolnay/install@cargo-docs-rs 67e31f0860Sopenharmony_ci - run: cargo docs-rs 68e31f0860Sopenharmony_ci 69e31f0860Sopenharmony_ci clippy: 70e31f0860Sopenharmony_ci name: Clippy 71e31f0860Sopenharmony_ci runs-on: ubuntu-latest 72e31f0860Sopenharmony_ci if: github.event_name != 'pull_request' 73e31f0860Sopenharmony_ci timeout-minutes: 45 74e31f0860Sopenharmony_ci steps: 75e31f0860Sopenharmony_ci - uses: actions/checkout@v4 76e31f0860Sopenharmony_ci - uses: dtolnay/rust-toolchain@nightly 77e31f0860Sopenharmony_ci with: 78e31f0860Sopenharmony_ci components: clippy, rust-src 79e31f0860Sopenharmony_ci - run: cargo clippy --tests --workspace -- -Dclippy::all -Dclippy::pedantic 80e31f0860Sopenharmony_ci 81e31f0860Sopenharmony_ci miri: 82e31f0860Sopenharmony_ci name: Miri 83e31f0860Sopenharmony_ci needs: pre_ci 84e31f0860Sopenharmony_ci if: needs.pre_ci.outputs.continue 85e31f0860Sopenharmony_ci runs-on: ubuntu-latest 86e31f0860Sopenharmony_ci timeout-minutes: 45 87e31f0860Sopenharmony_ci steps: 88e31f0860Sopenharmony_ci - uses: actions/checkout@v4 89e31f0860Sopenharmony_ci - uses: dtolnay/rust-toolchain@miri 90e31f0860Sopenharmony_ci - run: cargo miri setup 91e31f0860Sopenharmony_ci - run: cargo miri test 92e31f0860Sopenharmony_ci env: 93e31f0860Sopenharmony_ci MIRIFLAGS: -Zmiri-strict-provenance 94e31f0860Sopenharmony_ci 95e31f0860Sopenharmony_ci outdated: 96e31f0860Sopenharmony_ci name: Outdated 97e31f0860Sopenharmony_ci runs-on: ubuntu-latest 98e31f0860Sopenharmony_ci if: github.event_name != 'pull_request' 99e31f0860Sopenharmony_ci timeout-minutes: 45 100e31f0860Sopenharmony_ci steps: 101e31f0860Sopenharmony_ci - uses: actions/checkout@v4 102e31f0860Sopenharmony_ci - uses: dtolnay/install@cargo-outdated 103e31f0860Sopenharmony_ci - run: cargo outdated --workspace --exit-code 1 104