ci(node-wasm): Add integration tests for node-wasm #2239
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: CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
clippy: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- name: Install wasm Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
components: clippy | |
target: wasm32-unknown-unknown | |
- name: Run clippy for native | |
run: cargo clippy --all --all-targets -- -D warnings -D missing-docs | |
- name: Run clippy for wasm32 | |
run: cargo clippy --all --all-targets --target=wasm32-unknown-unknown -- -D warnings -D missing-docs | |
docs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
- name: Run rustdoc check | |
env: | |
RUSTDOCFLAGS: --cfg docsrs -D warnings | |
run: cargo +nightly doc --no-deps | |
fmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- name: Run fmt | |
run: cargo fmt -- --check | |
test-wasm: | |
runs-on: ubuntu-latest | |
env: | |
WASM_BINDGEN_TEST_TIMEOUT: 120 | |
steps: | |
- uses: actions/checkout@v1 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
target: wasm32-unknown-unknown | |
- name: Install wasm-pack | |
uses: taiki-e/cache-cargo-install-action@v1 | |
with: | |
tool: [email protected] | |
- name: Install chromedriver # we don't specify chrome version to match whatever's installed | |
uses: nanasess/setup-chromedriver@v2 | |
- name: Build (wasm32-unknown-unknown) | |
run: cargo build --all --target=wasm32-unknown-unknown --all-features | |
- name: Test proto crate | |
run: wasm-pack test --node proto | |
- name: Test types crate | |
run: wasm-pack test --node types --features=wasm-bindgen | |
- name: Test node crate | |
run: wasm-pack test --headless --chrome node | |
- name: Build and pack node-wasm | |
run: wasm-pack build --release --target web node-wasm && wasm-pack pack node-wasm | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- name: Set up cargo cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
key: cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | |
cargo-${{ hashFiles('**/Cargo.lock') }} | |
cargo- | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
target: wasm32-unknown-unknown | |
- name: Install wasm-pack | |
uses: taiki-e/cache-cargo-install-action@v1 | |
with: | |
tool: [email protected] | |
- name: Install chromedriver # we don't specify chrome version to match whatever's installed | |
uses: nanasess/setup-chromedriver@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
# needed for the buildx in order to access gha cache | |
# https://github.com/docker/bake-action/issues/36#issuecomment-1103961612 | |
- name: Expose github actions runtime | |
uses: crazy-max/ghaction-github-runtime@v1 | |
- name: Build the docker-compose stack | |
run: | | |
cat > ci/cache.json <<EOF | |
{ | |
"target": { | |
"validator": { | |
"cache-from": ["type=gha,scope=validator"], | |
"cache-to": ["type=gha,mode=max,scope=validator"], | |
"output": ["type=docker"] | |
}, | |
"bridge-0": { | |
"cache-from": ["type=gha,scope=bridge-0"], | |
"cache-to": ["type=gha,mode=max,scope=bridge-0"], | |
"output": ["type=docker"] | |
}, | |
"bridge-1": { | |
"cache-from": ["type=gha,scope=bridge-1"], | |
"cache-to": ["type=gha,mode=max,scope=bridge-1"], | |
"output": ["type=docker"] | |
} | |
} | |
} | |
EOF | |
cd ci && docker buildx bake --file docker-compose.yml --file cache.json --load | |
- name: Run the docker-compose stack | |
run: docker compose -f ci/docker-compose.yml up --no-build -d | |
- name: Wait for bridge node to start | |
run: | | |
docker compose -f ci/docker-compose.yml logs -f | | |
awk '/Configuration finished. Running a bridge node/ {print;exit}' | |
- name: Generate auth tokens | |
run: ./tools/gen_auth_tokens.sh | |
- name: Run tests | |
run: cargo test | |
- name: Run rpc wasm test | |
run: wasm-pack test --headless --chrome rpc --features=wasm-bindgen | |
- name: Test node-wasm crate | |
# We're running node-wasm tests in release mode to get around a failing debug assertion | |
# https://github.com/libp2p/rust-libp2p/issues/5618 | |
run: wasm-pack test --headless --release --chrome node-wasm | |
unused-deps: | |
runs-on: ubuntu-latest | |
name: unused dependencies | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
- name: Install cargo-udeps | |
uses: taiki-e/cache-cargo-install-action@v1 | |
with: | |
tool: [email protected] | |
- name: Check for unused dependencies | |
run: cargo +nightly udeps --all-features --all-targets |