Merge pull request #76 from Rust-for-Linux/dev/ci-fix #156
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
permissions: | |
contents: read | |
on: | |
push: | |
branches: [main, kernel, next] | |
pull_request: | |
workflow_dispatch: | |
schedule: | |
- cron: '7 7 * * *' | |
name: CI | |
jobs: | |
fmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{github.event.pull_request.commits}} | |
ref: ${{github.event.pull_request.head.sha}} | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rustfmt | |
- run: git config user.name "github-runner" && git config user.email "<>" | |
- run: git rebase --exec 'cargo fmt --check --all' --root | |
readme: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{github.event.pull_request.commits}} | |
ref: ${{github.event.pull_request.head.sha}} | |
- uses: dtolnay/rust-toolchain@nightly | |
- run: cargo install cargo-rdme | |
- run: git config user.name "github-runner" && git config user.email "<>" | |
- run: git rebase --exec 'cargo rdme --check' --root | |
docs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{github.event.pull_request.commits}} | |
ref: ${{github.event.pull_request.head.sha}} | |
- uses: dtolnay/rust-toolchain@nightly | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rust-src | |
- run: git config user.name "github-runner" && git config user.email "<>" | |
- run: git rebase --exec 'cargo doc --all-features --no-deps' --root | |
env: | |
RUSTFLAGS: "-Dwarnings" | |
clippy: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{github.event.pull_request.commits}} | |
ref: ${{github.event.pull_request.head.sha}} | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: clippy | |
- run: cargo install cargo-hack | |
- run: git config user.name "github-runner" && git config user.email "<>" | |
# examples and tests require `alloc`, since they make extensive use of `Box` etc. | |
- run: git rebase --exec 'cargo hack --clean-per-run --feature-powerset clippy --all-targets --locked --features alloc' --exec 'cargo clean' --root | |
env: | |
RUSTFLAGS: "-Dwarnings" | |
# the core lib does not, so also check that without the alloc feature. | |
- run: git rebase --exec 'cargo hack --clean-per-run --feature-powerset clippy --lib --locked' --exec 'cargo clean' --root | |
env: | |
RUSTFLAGS: "-Dwarnings" | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{github.event.pull_request.commits}} | |
ref: ${{github.event.pull_request.head.sha}} | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rust-src | |
- run: cargo install cargo-expand | |
- run: git config user.name "github-runner" && git config user.email "<>" | |
- run: git rebase --exec 'cargo test --locked --all-targets' --root | |
env: | |
RUSTFLAGS: "-Dwarnings" | |
# doctests are strangely not included in --all-targets | |
- run: git rebase --exec 'cargo test --locked --doc' --root | |
env: | |
RUSTFLAGS: "-Dwarnings" | |
miri: | |
runs-on: ubuntu-latest | |
name: "miri (${{matrix.MIRIFLAGS}})" | |
strategy: | |
matrix: | |
MIRIFLAGS: ["", "-Zmiri-tree-borrows", "-Zmiri-strict-provenance", "-Zmiri-tree-borrows -Zmiri-strict-provenance"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{github.event.pull_request.commits}} | |
ref: ${{github.event.pull_request.head.sha}} | |
- run: | | |
echo "NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)" >> $GITHUB_ENV | |
- name: Install ${{env.NIGHTLY}} | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{env.NIGHTLY}} | |
components: miri, rust-src | |
- run: cargo install cargo-expand | |
- run: git config user.name "github-runner" && git config user.email "<>" | |
- run: git rebase --exec 'cargo miri test --locked --all-targets' --root | |
env: | |
RUSTFLAGS: "-Dwarnings" | |
MIRIFLAGS: ${{matrix.MIRIFLAGS}} | |
# doctests are strangely not included in --all-targets | |
- run: git rebase --exec 'cargo miri test --locked --doc' --root | |
env: | |
RUSTFLAGS: "-Dwarnings" | |
MIRIFLAGS: ${{matrix.MIRIFLAGS}} | |
sanitizers: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
targets: ["--doc", "--all-targets"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{github.event.pull_request.commits}} | |
ref: ${{github.event.pull_request.head.sha}} | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rust-src | |
- name: enable debug symbols | |
run: | | |
sudo apt install llvm | |
- run: git config user.name "github-runner" && git config user.email "<>" | |
# sed because of https://github.com/japaric/rust-san#unrealiable-leaksanitizer | |
- run: git rebase --exec "sed -i '/\[features\]/i [profile.dev]' Cargo.toml && sed -i '/profile.dev/a opt-level = 1' Cargo.toml && cargo test --lib --tests --target x86_64-unknown-linux-gnu && git restore Cargo.toml" --root | |
env: | |
ASAN_OPTIONS: "detect_odr_violation=0:detect_leaks=0" | |
RUSTFLAGS: "--cfg NO_UI_TESTS --cfg NO_ALLOC_FAIL_TESTS -Z sanitizer=address -Dwarnings" | |
# sed because of https://github.com/japaric/rust-san#unrealiable-leaksanitizer | |
# doctests are strangely not included in --all-targets | |
- run: git rebase --exec "sed -i '/\[features\]/i [profile.dev]' Cargo.toml && sed -i '/profile.dev/a opt-level = 1' Cargo.toml && cargo test --doc --target x86_64-unknown-linux-gnu && git restore Cargo.toml" --root | |
env: | |
ASAN_OPTIONS: "detect_odr_violation=0:detect_leaks=0" | |
RUSTFLAGS: "--cfg NO_UI_TESTS --cfg NO_ALLOC_FAIL_TESTS -Z sanitizer=address -Dwarnings" | |
- run: git rebase --exec 'cargo test --all-targets --target x86_64-unknown-linux-gnu' --root | |
env: | |
RUSTFLAGS: "--cfg NO_UI_TESTS --cfg NO_ALLOC_FAIL_TESTS -Z sanitizer=leak -Dwarnings" | |
# doctests are strangely not included in --all-targets | |
- run: git rebase --exec 'cargo test --doc --target x86_64-unknown-linux-gnu' --root | |
env: | |
RUSTFLAGS: "--cfg NO_UI_TESTS --cfg NO_ALLOC_FAIL_TESTS -Z sanitizer=leak -Dwarnings" | |
msrv: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{github.event.pull_request.commits}} | |
ref: ${{github.event.pull_request.head.sha}} | |
- uses: dtolnay/rust-toolchain@stable | |
- run: cargo install cargo-hack | |
- run: git config user.name "github-runner" && git config user.email "<>" | |
- run: git rebase --exec 'cargo hack --clean-per-run --feature-powerset --exclude-features alloc --exclude-features default --version-range 1.82.. --clean-per-version check --locked --all-targets' --exec 'cargo clean' --root | |
env: | |
RUSTFLAGS: "-Dwarnings" | |
nightly-msrv: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{github.event.pull_request.commits}} | |
ref: ${{github.event.pull_request.head.sha}} | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rust-src | |
- run: cargo install cargo-hack | |
- run: cargo install cargo-expand | |
- run: git config user.name "github-runner" && git config user.email "<>" | |
- run: git rebase --exec 'cargo hack --clean-per-run --feature-powerset --version-range 1.78.. --clean-per-version check --locked --all-targets' --exec 'cargo clean' --root | |
env: | |
RUSTC_BOOTSTRAP: 1 | |
RUSTFLAGS: "-Dwarnings" | |
os-check: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, windows-latest] | |
runs-on: ${{matrix.os}} | |
name: "os-check (${{matrix.os}})" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{github.event.pull_request.commits}} | |
ref: ${{github.event.pull_request.head.sha}} | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rust-src | |
- run: cargo install cargo-expand | |
- run: git config user.name "github-runner" && git config user.email "<>" | |
- run: git rebase --exec 'cargo test --all-targets --locked' --root | |
env: | |
RUSTFLAGS: "-Dwarnings" | |
# doctests are strangely not included in --all-targets | |
- run: git rebase --exec 'cargo test --doc --locked' --root | |
env: | |
RUSTFLAGS: "-Dwarnings" | |
signed-off-by: | |
if: github.event_name != 'schedule' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{github.event.pull_request.commits}} | |
ref: ${{github.event.pull_request.head.sha}} | |
- run: git config user.name "github-runner" && git config user.email "<>" | |
- run: git rebase --exec 'git log --no-merges -1 --pretty=format:%B | grep -q "^Signed-off-by:"' --root | |
apply: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: Rust-for-Linux/linux | |
path: "kernel" | |
ref: pin-init-next | |
- uses: actions/checkout@v4 | |
with: | |
path: "pin-init" | |
fetch-depth: 0 | |
ref: ${{github.event.pull_request.head.sha}} | |
- run: | | |
pushd kernel | |
git config user.name "github-runner" && git config user.email "<>" | |
popd # kernel | |
pushd pin-init | |
git config user.name "github-runner" && git config user.email "<>" | |
git fetch | |
if ! yes | bash ./to-kernel.sh ../kernel origin/next; then | |
if ! git am --3way; then | |
git am --show-current-patch=diff | |
false | |
fi | |
false | |
fi | |
link-heartbeat: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{github.event.pull_request.commits}} | |
ref: ${{github.event.pull_request.head.sha}} | |
- uses: dtolnay/rust-toolchain@nightly | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rust-src | |
- run: sudo apt-get install -y linkchecker | |
- run: git config user.name "github-runner" && git config user.email "<>" | |
- run: git rebase --exec 'cargo doc --all-features --no-deps && linkchecker target/doc/*/*.html' --root | |
env: | |
RUSTFLAGS: "-Dwarnings" | |
update: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rust-src | |
- run: cargo install cargo-expand | |
- run: cargo update | |
- run: cargo test --locked | |
env: | |
RUSTFLAGS: "-Ddeprecated -Dwarnings" |