name: Rust
on:
pull_request:
branches:
- master
push:
branches:
- master
schedule:
- cron: '0 0 * * *'
jobs:
licenses:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Check licenses
run: |
go get -u github.com/google/addlicense
export PATH=$PATH:$(go env GOPATH)/bin
addlicense -check .
bazel:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Cache
uses: actions/cache@v2
with:
path: |
~/.cache/bazel
~/.cache/bazelisk
~/.cargo/.crates.toml
~/.cargo/.crates2.json
~/.cargo/bin
~/.cargo/registry
key: ${{ hashFiles('WORKSPACE', '.bazelrc', '.bazelversion', 'bazel/cargo/Cargo.lock') }}
- name: Build (wasm32-unknown-unknown)
run: bazelisk --bazelrc=/dev/null build --platforms=@io_bazel_rules_rust//rust/platform:wasm //...
- name: Build (wasm32-wasi)
run: bazelisk --bazelrc=/dev/null build --platforms=@io_bazel_rules_rust//rust/platform:wasi //...
- name: Format (buildifier)
run: |
GO111MODULE=on go get -u github.com/bazelbuild/buildtools/buildifier@3.4.0
export PATH=$PATH:$(go env GOPATH)/bin
buildifier -mode=check WORKSPACE
buildifier -mode=check BUILD
buildifier -mode=check examples/BUILD
- name: Format (cargo raze)
run: |
cargo install cargo-raze --version 0.7.0
cp -p bazel/cargo/Cargo.lock .
rm -rf bazel/cargo/
cargo raze --output=bazel/cargo
mv Cargo.lock bazel/cargo/
git diff --exit-code
stable:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Update Rust
run: |
rustup toolchain install stable --component clippy --component rustfmt
rustup target add wasm32-unknown-unknown
rustup target add wasm32-wasi
- name: Build (wasm32-unknown-unknown)
env:
RUSTFLAGS: -D warnings -C link-args=-S
run: cargo build --release --all-targets --target=wasm32-unknown-unknown
- name: Clippy (wasm32-unknown-unknown)
env:
RUSTFLAGS: -D warnings -C link-args=-S
run: cargo clippy --release --all-targets --target=wasm32-unknown-unknown
- name: Build (wasm32-wasi)
env:
RUSTFLAGS: -D warnings -C link-args=-S
run: cargo build --release --all-targets --target=wasm32-wasi
- name: Build (wasm32-wasi with wee-alloc)
env:
RUSTFLAGS: -D warnings -C link-args=-S
run: cargo build --release --all-targets --target=wasm32-wasi --features=wee-alloc
- name: Clippy (wasm32-wasi)
env:
RUSTFLAGS: -D warnings -C link-args=-S
run: cargo clippy --release --all-targets --target=wasm32-wasi
- name: Clippy (wasm32-wasi with wee-alloc)
env:
RUSTFLAGS: -D warnings -C link-args=-S
run: cargo clippy --release --all-targets --target=wasm32-wasi --features=wee-alloc
- name: Format (rustfmt)
run: cargo fmt -- --check
- name: Format (manifest)
run: cargo verify-project
- name: Package (docs)
run: cargo doc --no-deps --target=wasm32-unknown-unknown
- name: Package (publish)
run: cargo publish --dry-run --target=wasm32-unknown-unknown
nightly:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Update Rust
run: |
rustup toolchain install nightly --component clippy --component rustfmt
rustup +nightly target add wasm32-unknown-unknown
rustup +nightly target add wasm32-wasi
rustup default nightly
- name: Build (wasm32-unknown-unknown)
env:
RUSTFLAGS: -D warnings -C link-args=-S
run: cargo build --release --all-targets --target=wasm32-unknown-unknown
- name: Clippy (wasm32-unknown-unknown)
env:
RUSTFLAGS: -D warnings -C link-args=-S
run: cargo clippy --release --all-targets --target=wasm32-unknown-unknown
- name: Build (wasm32-wasi)
env:
RUSTFLAGS: -D warnings -C link-args=-S
run: cargo build --release --all-targets --target=wasm32-wasi
- name: Build (wasm32-wasi with wee-alloc)
env:
RUSTFLAGS: -D warnings -C link-args=-S
run: cargo build --release --all-targets --target=wasm32-wasi --features=wee-alloc
- name: Clippy (wasm32-wasi)
env:
RUSTFLAGS: -D warnings -C link-args=-S
run: cargo clippy --release --all-targets --target=wasm32-wasi
- name: Clippy (wasm32-wasi with wee-alloc)
env:
RUSTFLAGS: -D warnings -C link-args=-S
run: cargo clippy --release --all-targets --target=wasm32-wasi --features=wee-alloc
- name: Format (rustfmt)
run: cargo fmt -- --check
- name: Format (manifest)
run: cargo verify-project
- name: Package (docs)
run: cargo doc --no-deps --target=wasm32-unknown-unknown
- name: Package (publish)
run: cargo publish --dry-run --target=wasm32-unknown-unknown
outdated:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run cargo outdated
run: cargo outdated --exit-code 1
- name: Check freshness of bazel/cargo/Cargo.lock
run: |
cargo generate-lockfile
mv Cargo.lock bazel/cargo/
git diff --exit-code
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run cargo audit
run: |
cp -p bazel/cargo/Cargo.lock .
cargo audit