Skip to content

.appveyor.yml: Use 'stable' channel for Rust version #136

.appveyor.yml: Use 'stable' channel for Rust version

.appveyor.yml: Use 'stable' channel for Rust version #136

Workflow file for this run

name: CI
on:
pull_request: {}
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.event.after }}
cancel-in-progress: true
jobs:
build_and_test:
name: Build and test package
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- toolchain: stable
- toolchain: beta
- toolchain: nightly
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install toolchain (${{ matrix.toolchain }})
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
override: true
components: clippy
- name: Build with ${{ matrix.toolchain }}
run: |
cargo +${{ matrix.toolchain }} build \
--release --all-features --all-targets
- name: Test with ${{ matrix.toolchain }}
run: |
if [[ "${{ matrix.toolchain }}" == 'nightly' ]]; then
export RUSTDOCFLAGS='-Zsanitizer=address'
export RUSTFLAGS='-Zsanitizer=address'
export ASAN_OPTIONS='detect_leaks=1'
fi
cargo +${{ matrix.toolchain }} test \
--target=x86_64-unknown-linux-gnu \
--all-features
- name: Lint with ${{ matrix.toolchain }}
run: |
cargo +${{ matrix.toolchain }} clippy
conformance_and_coverage:
name: Check eBPF conformance and code coverage
runs-on: ubuntu-latest
env:
# Exclude features not supported by rbpf yet.
# atomic operations - https://github.com/qmonnet/rbpf/issues/47
# mem-len - Tests assume r2 contains the length of the memory.
KNOWN_FAILURES: "(lock|mem-len)"
CONFORMANCE_IMAGE: "ghcr.io/alan-jowett/bpf_conformance@sha256:547765717557e0f222de71fbf26f4bd9621c0149911aa03296024b469dd4598b"
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install toolchain (${{ matrix.toolchain }})
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
- name: Build plug-in
run: |
cargo build --all-features --release --example rbpf_plugin
- name: Run BPF conformance tests - Interpreter
run: |
docker run -v ${{github.workspace}}:/rbpf --rm \
"${{ env.CONFORMANCE_IMAGE }}" \
bin/bpf_conformance_runner --test_file_directory tests \
--plugin_path /rbpf/target/release/examples/rbpf_plugin \
--exclude_regex "${{ env.KNOWN_FAILURES }}"
# JIT tests results are ignored due to https://github.com/qmonnet/rbpf/issues/60
- name: Run BPF conformance tests - JIT
run: |
docker run -v ${{github.workspace}}:/rbpf --rm \
"${{ env.CONFORMANCE_IMAGE }}" \
bin/bpf_conformance_runner --test_file_directory tests \
--plugin_path /rbpf/target/release/examples/rbpf_plugin \
--exclude_regex "${{ env.KNOWN_FAILURES }}" \
--plugin_options "--jit" || true
- name: Run BPF conformance tests - Cranelift
run: |
docker run -v ${{github.workspace}}:/rbpf --rm \
"${{ env.CONFORMANCE_IMAGE }}" \
bin/bpf_conformance_runner --test_file_directory tests \
--plugin_path /rbpf/target/release/examples/rbpf_plugin \
--exclude_regex "lock" \
--plugin_options "--cranelift"
- name: Install development tools
uses: taiki-e/install-action@v1.14.2
with:
tool: cargo-llvm-cov
- name: Generate coverage report
run: |
cargo llvm-cov --lcov --all --all-features --all-targets > lcov.info
- name: Upload coverage to coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: lcov.info