Skip to content

Rust

Rust #448

Workflow file for this run

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: Rust
on:
pull_request:
branches:
- main
push:
branches:
- main
schedule:
- cron: '0 0 * * *'
jobs:
licenses:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Check licenses
run: |
go install github.com/google/[email protected]
export PATH=$PATH:$(go env GOPATH)/bin
addlicense -check .
stable:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Update Rust
run: rustup toolchain install stable --component clippy --component rustfmt
- name: Cache (generate keys)
run: |
cargo generate-lockfile
rustc --version | cut -d " " -f2 - > rust-toolchain
- name: Cache
uses: actions/cache@v2
with:
path: |
~/.cargo/.crates.toml
~/.cargo/.crates2.json
~/.cargo/bin
~/.cargo/registry
target
key: ${{ hashFiles('rust-toolchain', 'Cargo.lock') }}
- name: Cache (cleanup)
run: rm -f rust-toolchain
- name: Build
env:
RUSTFLAGS: -D warnings
run: cargo build --release --all-targets
- name: Format (rustfmt)
run: cargo fmt -- --check
- name: Format (manifest)
run: cargo verify-project
- name: Package (docs)
run: cargo doc --no-deps
nightly:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Update Rust
run: |
rustup toolchain install nightly --component clippy --component rustfmt
rustup default nightly
- name: Cache (generate keys)
run: |
cargo generate-lockfile
rustc --version | tr " " "-" | cut -d "-" -f3,5-7 | cut -b1-18 > rust-toolchain
- name: Cache
uses: actions/cache@v2
with:
path: |
~/.cargo/.crates.toml
~/.cargo/.crates2.json
~/.cargo/bin
~/.cargo/registry
target
key: ${{ hashFiles('rust-toolchain', 'Cargo.lock') }}
- name: Cache (cleanup)
run: rm -f rust-toolchain
- name: Build
env:
RUSTFLAGS: -D warnings
run: cargo build --release --all-targets
- name: Format (rustfmt)
run: cargo fmt -- --check
- name: Format (manifest)
run: cargo verify-project
- name: Package (docs)
run: cargo doc --no-deps
examples:
runs-on: ubuntu-latest
steps:
- name: Checkout (test framework)
uses: actions/checkout@v2
- name: Checkout (Rust SDK)
uses: actions/checkout@v2
with:
repository: proxy-wasm/proxy-wasm-rust-sdk
path: proxy-wasm-rust-sdk
ref: v0.2.2
- name: Update Rust
run: |
rustup toolchain install stable --component clippy --component rustfmt
rustup target add wasm32-unknown-unknown
- name: Cache (generate keys)
run: |
cargo generate-lockfile
cd proxy-wasm-rust-sdk && cargo generate-lockfile && cd ..
rustc --version | cut -d " " -f2 - > rust-toolchain
- name: Cache
uses: actions/cache@v2
with:
path: |
~/.cargo/.crates.toml
~/.cargo/.crates2.json
~/.cargo/bin
~/.cargo/registry
target
proxy-wasm-rust-sdk/target
key: ${{ hashFiles('rust-toolchain', 'Cargo.lock', 'proxy-wasm-rust-sdk/Cargo.lock') }}
- name: Cache (cleanup)
run: rm -f rust-toolchain
- name: Build (test framework)
env:
RUSTFLAGS: -D warnings
run: cargo build --release --all-targets
- name: Build (Rust SDK examples)
env:
RUSTFLAGS: -C link-args=-S -D warnings
run: |
cd proxy-wasm-rust-sdk/examples/hello_world && cargo build --target wasm32-unknown-unknown --release && cd ../../..
cd proxy-wasm-rust-sdk/examples/http_auth_random && cargo build --target wasm32-unknown-unknown --release && cd ../../..
cd proxy-wasm-rust-sdk/examples/http_headers && cargo build --target wasm32-unknown-unknown --release && cd ../../..
- name: Test (hello_world)
run: target/release/examples/hello_world proxy-wasm-rust-sdk/examples/hello_world/target/wasm32-unknown-unknown/release/proxy_wasm_example_hello_world.wasm
- name: Test (http_auth_random)
run: target/release/examples/http_auth_random proxy-wasm-rust-sdk/examples/http_auth_random/target/wasm32-unknown-unknown/release/proxy_wasm_example_http_auth_random.wasm -a
- name: Test (http_headers)
run: target/release/examples/http_headers proxy-wasm-rust-sdk/examples/http_headers/target/wasm32-unknown-unknown/release/proxy_wasm_example_http_headers.wasm -a
outdated:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run cargo outdated
run: cargo outdated --exit-code 1
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run cargo audit
run: |
cargo generate-lockfile
cargo audit