Add Module::validate
API from Wasmtime (#840)
#3027
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 - Continuous Integration | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
branches: [master] | |
# disable running jobs on earlier commits | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
check: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
target: wasm32-unknown-unknown | |
override: true | |
- name: Set up Cargo cache | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo-build- | |
- name: Add extra targets | |
# Workaround for https://github.com/actions-rs/toolchain/issues/165 | |
run: | | |
rustup target add thumbv7em-none-eabi | |
- name: Build (default features) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --workspace | |
- name: Build (all features) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --workspace --all-features | |
- name: Build (no_std) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --workspace --lib --no-default-features --target thumbv7em-none-eabi --exclude wasmi_cli --exclude wasmi_wasi | |
- name: Build (wasm32) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --workspace --lib --no-default-features --target wasm32-unknown-unknown --exclude wasmi_cli --exclude wasmi_wasi | |
test: | |
name: Test | |
strategy: | |
matrix: | |
# windows-latest was pinned to windows-2019 | |
# because of https://github.com/paritytech/wasmi/runs/5021520759 | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- name: Set up Cargo cache | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo-test- | |
- name: Checkout Submodules | |
run: git submodule update --init --recursive | |
- name: Test (default features) | |
uses: actions-rs/cargo@v1 | |
env: | |
RUSTFLAGS: "--cfg debug_assertions" | |
with: | |
command: test | |
args: --workspace --release | |
- name: Test (all features) | |
uses: actions-rs/cargo@v1 | |
env: | |
RUSTFLAGS: "--cfg debug_assertions" | |
with: | |
command: test | |
args: --workspace --release --all-features | |
fmt: | |
name: Formatting | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
override: true | |
components: rustfmt | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
doc: | |
name: Documentation | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: rust-docs, rust-src | |
- name: Set up Cargo cache | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-cargo-doc-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo-doc- | |
- uses: actions-rs/cargo@v1 | |
env: | |
RUSTDOCFLAGS: "-D warnings" | |
with: | |
command: doc | |
args: --workspace --all-features --no-deps --document-private-items | |
audit: | |
name: Audit | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: audit | |
args: "" | |
udeps: | |
name: uDeps | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
override: true | |
- name: Set up Cargo cache | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-cargo-udeps-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo-udeps- | |
- name: Checkout Submodules | |
run: git submodule update --init --recursive | |
- name: Install cargo-udeps | |
run: | | |
# Note: We use `|| true` because cargo install returns an error | |
# if cargo-udeps was already installed on the CI runner. | |
cargo install --locked cargo-udeps || true | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: udeps | |
args: --all-targets | |
fuzz_translate: | |
name: Fuzz (Translation) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: Set up Cargo cache | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
~/fuzz/target/ | |
~/fuzz/corpus/translate/ | |
~/fuzz/curpus/translate_metered/ | |
key: ${{ runner.os }}-cargo-fuzz-translation-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo-fuzz-translation- | |
- name: Checkout Submodules | |
run: git submodule update --init --recursive | |
- name: Install cargo-fuzz | |
run: | | |
# Note: We use `|| true` because cargo install returns an error | |
# if cargo-udeps was already installed on the CI runner. | |
cargo install cargo-fuzz || true | |
- name: Fuzz (Translation) | |
run: cargo fuzz run translate -j 2 --verbose -- -max_total_time=60 # 1 minute of fuzzing | |
- name: Fuzz (Translation) + fuel | |
run: cargo fuzz run translate_metered -j 2 --verbose -- -max_total_time=60 # 1 minute of fuzzing | |
fuzz_execute: | |
name: Fuzz (Execution) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: Set up Cargo cache | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
~/fuzz/target/ | |
~/fuzz/corpus/execute/ | |
key: ${{ runner.os }}-cargo-fuzz-execution-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo-fuzz-execution- | |
- name: Checkout Submodules | |
run: git submodule update --init --recursive | |
- name: Install cargo-fuzz | |
run: | | |
# Note: We use `|| true` because cargo install returns an error | |
# if cargo-udeps was already installed on the CI runner. | |
cargo install cargo-fuzz || true | |
- name: Fuzz (Execution) | |
run: cargo fuzz run execute -j 2 --verbose -- -max_total_time=120 # 2 minutes of fuzzing | |
fuzz_differential: | |
name: Fuzz (Differential) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: Set up Cargo cache | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
~/fuzz/target/ | |
~/fuzz/corpus/execute/ | |
key: ${{ runner.os }}-cargo-fuzz-differential-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo-fuzz-differential- | |
- name: Checkout Submodules | |
run: git submodule update --init --recursive | |
- name: Install cargo-fuzz | |
run: | | |
# Note: We use `|| true` because cargo install returns an error | |
# if cargo-udeps was already installed on the CI runner. | |
cargo install cargo-fuzz || true | |
- name: Fuzz (Differential) | |
run: cargo fuzz run differential -j 2 --verbose -- -max_total_time=120 # 2 minutes of fuzzing | |
miri: | |
name: Miri | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
override: true | |
components: miri | |
- name: Set up Cargo cache | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-cargo-miri-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo-miri- | |
- name: Miri (--lib) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: miri | |
args: test --lib --workspace | |
- name: Miri (--doc) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: miri | |
args: test --doc --workspace | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
override: true | |
components: clippy | |
- name: Set up Cargo cache | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-cargo-clippy-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo-clippy- | |
- name: Clippy (default features) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --workspace -- -D warnings | |
- name: Clippy (all features) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --workspace --all-features -- -D warnings | |
- name: Clippy (no_std) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --workspace --no-default-features -- -D warnings | |
- name: Clippy (tests) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --workspace --tests -- -D warnings | |
coverage: | |
name: Coverage | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
with: | |
fetch-depth: 0 | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
override: true | |
- name: Set up Cargo cache | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/target/ | |
key: ${{ runner.os }}-cargo-coverage-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo-coverage- | |
- name: Checkout Submodules | |
run: git submodule update --init --recursive | |
- name: Run cargo-tarpaulin (default features) | |
uses: actions-rs/tarpaulin@v0.1 | |
with: | |
version: "0.18.0" | |
args: --workspace | |
- name: Upload to codecov.io | |
uses: codecov/codecov-action@v3.1.4 | |
with: | |
token: ${{secrets.CODECOV_TOKEN}} | |
- name: Archive code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: code-coverage-report | |
path: cobertura.xml |