Add initial networking support #279
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: Rust checks | |
permissions: {} | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
env: | |
CARGO_TERM_COLOR: always | |
RUSTDOCFLAGS: -D warnings | |
RUSTFLAGS: -D warnings | |
LANDLOCK_TEST_TOOLS_COMMIT: a7b4192147a84f4cd5207a83a574ddea6d76ffa0 # v1.1.0 | |
# Ubuntu versions: https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources | |
jobs: | |
commit_list: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Get commit list (push) | |
id: get_commit_list_push | |
if: ${{ github.event_name == 'push' }} | |
run: | | |
echo "id0=$GITHUB_SHA" > $GITHUB_OUTPUT | |
echo "List of tested commits:" > $GITHUB_STEP_SUMMARY | |
sed -n 's,^id[0-9]\+=\(.*\),- https://github.com/landlock-lsm/rust-landlock/commit/\1,p' -- $GITHUB_OUTPUT >> $GITHUB_STEP_SUMMARY | |
- name: Get commit list (PR) | |
id: get_commit_list_pr | |
if: ${{ github.event_name == 'pull_request' }} | |
run: | | |
git rev-list --reverse refs/remotes/origin/${{ github.base_ref }}..${{ github.event.pull_request.head.sha }} | awk '{ print "id" NR "=" $1 }' > $GITHUB_OUTPUT | |
git diff --quiet ${{ github.event.pull_request.head.sha }} ${{ github.sha }} || echo "id0=$GITHUB_SHA" >> $GITHUB_OUTPUT | |
echo "List of tested commits:" > $GITHUB_STEP_SUMMARY | |
sed -n 's,^id[0-9]\+=\(.*\),- https://github.com/landlock-lsm/rust-landlock/commit/\1,p' -- $GITHUB_OUTPUT >> $GITHUB_STEP_SUMMARY | |
outputs: | |
commits: ${{ toJSON(steps.*.outputs.*) }} | |
ubuntu_22_rust_msrv: | |
runs-on: ubuntu-22.04 | |
needs: commit_list | |
strategy: | |
fail-fast: false | |
matrix: | |
commit: ${{ fromJSON(needs.commit_list.outputs.commits) }} | |
env: | |
LANDLOCK_CRATE_TEST_ABI: 3 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: ${{ matrix.commit }} | |
- name: Clone Landlock test tools | |
uses: actions/checkout@v3 | |
with: | |
repository: landlock-lsm/landlock-test-tools | |
fetch-depth: 0 | |
ref: ${{ env.LANDLOCK_TEST_TOOLS_COMMIT }} | |
path: landlock-test-tools | |
- name: Get MSRV | |
run: sed -n 's/^rust-version = "\([0-9.]\+\)"$/RUST_TOOLCHAIN=\1/p' Cargo.toml >> $GITHUB_ENV | |
- name: Install Rust MSRV | |
run: | | |
rm ~/.cargo/bin/{cargo-fmt,rustfmt} || : | |
rustup default ${{ env.RUST_TOOLCHAIN }} | |
rustup update ${{ env.RUST_TOOLCHAIN }} | |
- name: Build | |
run: rustup run ${{ env.RUST_TOOLCHAIN }} cargo build --verbose | |
- name: Build tests | |
run: rustup run ${{ env.RUST_TOOLCHAIN }} cargo build --tests --verbose | |
- name: Run tests against the local kernel (Landlock ABI ${{ env.LANDLOCK_CRATE_TEST_ABI }}) | |
run: rustup run ${{ env.RUST_TOOLCHAIN }} cargo test --verbose | |
- name: Run tests against Linux 6.1 | |
run: CARGO="rustup run ${{ env.RUST_TOOLCHAIN }} cargo" ./landlock-test-tools/test-rust.sh linux-6.1 2 | |
ubuntu_20_rust_stable: | |
runs-on: ubuntu-20.04 | |
needs: commit_list | |
strategy: | |
fail-fast: false | |
matrix: | |
commit: ${{ fromJSON(needs.commit_list.outputs.commits) }} | |
env: | |
LANDLOCK_CRATE_TEST_ABI: 1 | |
steps: | |
- name: Install Rust stable | |
run: | | |
rm ~/.cargo/bin/{cargo-fmt,rustfmt} || : | |
rustup default stable | |
rustup component add rustfmt clippy | |
rustup update | |
- uses: actions/checkout@v3 | |
with: | |
ref: ${{ matrix.commit }} | |
- name: Build | |
run: rustup run stable cargo build --verbose | |
- name: Run tests against the local kernel (Landlock ABI ${{ env.LANDLOCK_CRATE_TEST_ABI }}) | |
run: rustup run stable cargo test --verbose | |
- name: Check format | |
run: rustup run stable cargo fmt --all -- --check | |
- name: Check source with Clippy | |
run: rustup run stable cargo clippy -- --deny warnings | |
- name: Check tests with Clippy | |
run: rustup run stable cargo clippy --tests -- --deny warnings | |
- name: Check documentation | |
run: rustup run stable cargo doc --no-deps | |
ubuntu_22_rust_stable: | |
runs-on: ubuntu-22.04 | |
needs: commit_list | |
strategy: | |
fail-fast: false | |
matrix: | |
commit: ${{ fromJSON(needs.commit_list.outputs.commits) }} | |
env: | |
LANDLOCK_CRATE_TEST_ABI: 3 | |
# $CARGO is used by landlock-test-tools/test-rust.sh | |
CARGO: rustup run stable cargo | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
ref: ${{ matrix.commit }} | |
- name: Clone Landlock test tools | |
uses: actions/checkout@v3 | |
with: | |
repository: landlock-lsm/landlock-test-tools | |
fetch-depth: 0 | |
ref: ${{ env.LANDLOCK_TEST_TOOLS_COMMIT }} | |
path: landlock-test-tools | |
- name: Install Rust stable | |
run: | | |
rm ~/.cargo/bin/{cargo-fmt,rustfmt} || : | |
rustup default stable | |
rustup update | |
- name: Run tests against the local kernel (Landlock ABI ${{ env.LANDLOCK_CRATE_TEST_ABI }}) | |
run: $CARGO test --verbose | |
- name: Run tests against Linux 5.10 | |
run: ./landlock-test-tools/test-rust.sh linux-5.10 0 | |
- name: Run tests against Linux 5.15 | |
run: ./landlock-test-tools/test-rust.sh linux-5.15 1 | |
- name: Run tests against Linux 6.1 | |
run: ./landlock-test-tools/test-rust.sh linux-6.1 2 | |
- name: Run tests against Linux 6.4 | |
run: ./landlock-test-tools/test-rust.sh linux-6.4 3 | |
- name: Run tests against Linux 6.7 | |
run: ./landlock-test-tools/test-rust.sh linux-6.7 4 |