proxy-wasm 0.1.3

WebAssembly for Proxies
Documentation
# 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:
    - 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