Added helper functions to return current plugin extension, file_type … #1023
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: Build and test | |
on: [push, pull_request] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-latest, ubuntu-latest, windows-latest] | |
flags: [--all-features, --no-default-features] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install rust 1.74.0 | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.74.0 | |
override: true | |
- name: Build | |
run: cargo build --workspace ${{ matrix.flags }} --verbose | |
- name: Build examples | |
run: cargo build --workspace ${{ matrix.flags }} --examples --verbose | |
build-cross-targets: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [aarch64-unknown-linux-gnu, armv7-unknown-linux-gnueabihf, i686-unknown-linux-gnu] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install rust 1.74.0 | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.74.0 | |
target: ${{ matrix.target }} | |
override: true | |
- uses: actions-rs/cargo@v1 | |
with: | |
use-cross: true | |
command: build | |
args: --target ${{ matrix.target }} --workspace --all-features --verbose | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-latest, ubuntu-latest, windows-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
lfs: true | |
- name: Install rust 1.74.0 | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.74.0 | |
override: true | |
- name: Pre-build binaries (for inventory integration tests) | |
run: cargo build --workspace --all-features --verbose | |
- name: Run all tests | |
run: cargo test --workspace --all-features --verbose | |
if: runner.os == 'Linux' | |
- name: Run all tests | |
run: cargo test --workspace --exclude memflow-derive --all-features --verbose | |
if: runner.os != 'Linux' | |
test-cross: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [aarch64-unknown-linux-gnu, i686-unknown-linux-gnu] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
lfs: true | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly # currently required due to -Zdoctest-xcompile | |
target: ${{ matrix.target }} | |
override: true | |
- name: Pre-build binaries (for inventory integration tests) | |
uses: actions-rs/cargo@v1 | |
with: | |
use-cross: true | |
command: build | |
args: --target ${{ matrix.target }} --workspace --all-features --verbose --release | |
- name: Run all tests | |
uses: actions-rs/cargo@v1 | |
with: | |
use-cross: true | |
command: test | |
args: -Zdoctest-xcompile --target ${{ matrix.target }} --workspace --all-features --verbose --release | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.74.0 | |
override: true | |
components: rustfmt, clippy | |
- name: Check formatting | |
run: cargo fmt -- --check | |
- uses: actions-rs/clippy-check@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
args: --all-targets --all-features --workspace -- -D clippy::all | |
build-ffi: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly # required by cglue codegen | |
override: true | |
- name: Validate c and c++ headers | |
run: cd memflow-ffi; ./verify_headers.sh | |
- name: Build memflow | |
run: cargo build --workspace --release --verbose | |
- name: Build c examples | |
run: cd memflow-ffi/examples/c; make all | |
- name: Build c++ examples | |
run: cd memflow-ffi/examples/cpp; make all | |
build-nostd: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-latest, ubuntu-latest, windows-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Rust nightly | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly-2023-12-15 | |
override: true | |
- run: rustup toolchain install nightly-2023-12-15 | |
- run: rustup +nightly-2023-12-15 component add rust-src | |
- name: Build no_std crate | |
run: cd nostd-test; cargo +nightly-2023-12-15 build --all-features --verbose | |
build-coverage: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
lfs: true | |
path: 'memflow-repo' | |
- name: Set up Rust nightly | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
override: true | |
- run: cargo install grcov | |
- name: Run tests with coverage | |
run: | | |
cd memflow-repo | |
export CARGO_INCREMENTAL=0 | |
export RUSTFLAGS="-Zprofile -Ccodegen-units=1 -Copt-level=0 -Clink-dead-code -Coverflow-checks=off -Zpanic_abort_tests -Cpanic=abort" | |
export RUSTDOCFLAGS="-Cpanic=abort" | |
cargo build --workspace --exclude memflow-derive --all-features | |
cargo test --workspace --exclude memflow-derive --all-features | |
grcov ./target/debug/ -s . -t lcov --llvm --branch --ignore-not-existing -o ./target/debug/coverage | |
bash <(curl -s https://codecov.io/bash) -f ./target/debug/coverage -t ${{ secrets.CODECOV_TOKEN }}; |