name: ci
on: [push, pull_request]
jobs:
skip-commit:
name: Conditionally skip ci
runs-on: ubuntu-latest
steps:
- if: "contains(github.event.head_commit.message, '[skip-ci]')
|| contains(github.event.head_commit.message, '[skip ci]')
|| contains(github.event.head_commit.message, '[ci-skip]')
|| contains(github.event.head_commit.message, '[ci skip]')"
run: exit 78
cache-tools:
name: Cache tools
needs: [skip-commit]
runs-on: ubuntu-latest
env:
RUST_TOOLCHAIN: 1.40.0
steps:
- uses: actions/checkout@v1
- name: Restore /home/runner/tools/bin
id: cache-tools-bin
uses: actions/cache@v1
with:
path: tools/bin
key: tools-bin-${{ runner.OS }}-[${{ env.RUST_TOOLCHAIN }}]-${{ hashFiles('.github/caching/tools-cache.lock') }}
- name: Install Rust toolchain
if: "steps.cache-tools-bin.outputs.cache-hit != 'true'"
run: |
rustup set profile minimal
rustup toolchain install $RUST_TOOLCHAIN
- name: Install wasm-pack
if: steps.cache-tools-bin.outputs.cache-hit != 'true'
run: |
mkdir -p tools/bin
WASM_PACK_LATEST_URL=`curl -sL https://api.github.com/repos/rustwasm/wasm-pack/releases/latest | jq -r '.assets[3].browser_download_url'`
curl -L $WASM_PACK_LATEST_URL | tar zxf - --overwrite --strip-components=1 -C tools/bin
- name: Install cargo-audit
if: "steps.cache-tools-bin.outputs.cache-hit != 'true'"
run: cargo install --root tools --force cargo-audit
cargo-audit:
name: Run cargo audit
needs: [skip-commit, cache-tools]
runs-on: ubuntu-latest
env:
RUST_TOOLCHAIN: 1.40.0
steps:
- uses: actions/checkout@v1
- name: Restore /home/runner/tools/bin
uses: actions/cache@v1
with:
path: tools/bin
key: tools-bin-${{ runner.OS }}-[${{ env.RUST_TOOLCHAIN }}]-${{ hashFiles('.github/caching/tools-cache.lock') }}
- run: echo "::add-path::$GITHUB_WORKSPACE/tools/bin"
- run: cargo-audit audit
cargo-check:
name: Run cargo check
needs: [skip-commit, cache-tools]
runs-on: ubuntu-latest
env:
RUSTFLAGS: -Dwarnings
RUST_TOOLCHAIN: 1.40.0
steps:
- uses: actions/checkout@v1
- name: Install Rust toolchain
run: |
rustup set profile minimal
rustup toolchain install $RUST_TOOLCHAIN
- name: Run cargo check
uses: actions-rs/cargo@v1
with:
command: check
args: --all-features --all-targets --benches --bins --examples --tests --workspace
cargo-clippy:
name: Run cargo clippy
needs: [skip-commit, cache-tools]
runs-on: ubuntu-latest
env:
RUST_TOOLCHAIN: 1.40.0
steps:
- uses: actions/checkout@v1
- name: Install Rust toolchain
run: |
rustup set profile minimal
rustup toolchain install $RUST_TOOLCHAIN --component clippy
- name: Run cargo clippy
uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features --all-targets --benches --bins --examples --tests --workspace -- -D warnings
cargo-docs:
name: Run cargo docs
needs: [skip-commit, cache-tools]
runs-on: ubuntu-latest
env:
RUST_TOOLCHAIN: 1.40.0
steps:
- uses: actions/checkout@v1
- name: Install Rust toolchain
run: |
rustup set profile minimal
rustup toolchain install $RUST_TOOLCHAIN
- name: Run cargo doc
uses: actions-rs/cargo@v1
with:
command: doc
args: --all-features --no-deps --package node-sys
- env:
PERSONAL_TOKEN: ${{ secrets.ACTIONS_GH_PAGES_TOKEN }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./target/doc
SCRIPT_MODE: true
run: wget -qO - https://raw.githubusercontent.com/interfaces-rs/actions-gh-pages/v2.5.1/entrypoint.sh | bash -
cargo-fmt:
name: Run cargo fmt
needs: [skip-commit, cache-tools]
runs-on: ubuntu-latest
env:
RUST_TOOLCHAIN: nightly
steps:
- uses: actions/checkout@v1
- name: Install Rust toolchain
run: |
rustup set profile minimal
rustup toolchain install $RUST_TOOLCHAIN --component rustfmt
- name: Run cargo fmt
run: cargo "+$RUST_TOOLCHAIN" fmt --all -- --check
cargo-test:
name: Run cargo test
needs: [skip-commit, cache-tools]
runs-on: ubuntu-latest
env:
RUST_TOOLCHAIN: 1.40.0
steps:
- uses: actions/checkout@v1
- name: Configure node
uses: actions/setup-node@v1
with:
node-version: "13.x"
- name: Install Rust toolchain
run: |
rustup set profile minimal
rustup toolchain install $RUST_TOOLCHAIN
- name: Restore /home/runner/tools/bin
uses: actions/cache@v1
with:
path: tools/bin
key: tools-bin-${{ runner.OS }}-[${{ env.RUST_TOOLCHAIN }}]-${{ hashFiles('.github/caching/tools-cache.lock') }}
- run: echo "::add-path::$GITHUB_WORKSPACE/tools/bin"
- run: if [ -f package.json ]; then npm ci; fi
- run: wasm-pack test --node -- --all-features --all-targets --benches --bins --examples --tests --workspace