Skip to content

CI

CI #2241

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- master
- v0.*
schedule:
- cron: '0 22 * * *'
env:
RUST_BACKTRACE: 1
# Some of the bindgen tests generate "deref-nullptr" warnings, see https://github.com/rust-lang/rust-bindgen/issues/1651
RUSTFLAGS: "--deny=warnings --allow deref-nullptr"
TEST_BIND: 1
GRPC_VERBOSITY: "info"
jobs:
Linux-Format:
name: Linux-Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: which cargo && cargo version && clang --version && openssl version && which cmake && cmake --version
- run: cargo xtask submodule
- run: cargo fmt --all -- --check
- run: cargo clippy --all -- -D clippy::all && cargo clippy --all --no-default-features --features prost-codec -- -D clippy::all
- run: cargo xtask clang-lint && git diff-index --quiet HEAD
Linux-Stable:
strategy:
matrix:
include:
- host: ubuntu-latest
profile:
suffix:
name: Linux-Stable${{ matrix.suffix }}
runs-on: ${{ matrix.host }}
steps:
- uses: actions/checkout@v2
- run: sudo apt install -y protobuf-compiler
- run: which cargo && cargo version && clang --version && openssl version
- run: cargo xtask submodule
- run: env TEST_BIND=0 cargo xtask bindgen && git diff --exit-code HEAD
- run: cargo xtask codegen && git diff --exit-code HEAD;
- run: cargo xtask bindgen
- run: cargo build --no-default-features
- run: cargo build --no-default-features --features protobuf-codec
- run: cargo build --no-default-features --features protobufv3-codec
- run: cargo build --no-default-features --features prost-codec
- run: cd proto && cargo build --no-default-features --features prost-codec
- run: cargo build
- run: cargo test --all ${{ matrix.profile }}
Linux-Stable-openssl:
strategy:
matrix:
include:
- host: ubuntu-latest
profile:
suffix:
name: Linux-Stable-openssl${{ matrix.suffix }}
runs-on: ${{ matrix.host }}
steps:
- uses: actions/checkout@v2
- run: which cargo && cargo version && clang --version && openssl version
- run: cargo xtask submodule
- run: cargo test --features "openssl-vendored" --all ${{ matrix.profile }}
- run: cargo clean
- run: cargo test --features "openssl" --all ${{ matrix.profile }}
Linux-Nightly:
name: Linux-Nightly
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: rustup default nightly
- run: sudo ln -s /usr/bin/llvm-symbolizer-14 /usr/bin/llvm-symbolizer
- run: which cargo && cargo version && clang --version && openssl version
- run: cargo xtask submodule
- run: cargo build --no-default-features
- run: cargo build --no-default-features --features protobuf-codec
- run: cargo build --no-default-features --features protobufv3-codec
- run: cargo build --no-default-features --features prost-codec
- run: cargo build
- run: cargo test --all
# See https://github.com/grpc/grpc/pull/31167
- run: RUSTFLAGS="-Z sanitizer=address" ASAN_OPTIONS=suppressions=`pwd`/.github/workflows/31167.supp cargo test --all --target x86_64-unknown-linux-gnu
- run: cargo test --features "nightly"
Mac:
name: Mac
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- run: which cargo && cargo version && clang --version && openssl version
- run: cargo xtask submodule
- run: env TEST_BIND=0 cargo xtask bindgen && git diff --exit-code HEAD
- run: cargo xtask bindgen
- run: cargo build --no-default-features
- run: cargo build --no-default-features --features "protobuf-codec"
- run: cargo build --no-default-features --features "protobufv3-codec"
- run: cargo build --no-default-features --features "prost-codec"
- run: cargo build
- run: cargo test --all
- run: cargo test --features "nightly"
Mac-openssl:
name: Mac-openssl
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- run: brew update && brew upgrade openssl@1.1
- run: which cargo && cargo version && clang --version && openssl version
- run: cargo xtask submodule
- run: OPENSSL_ROOT_DIR="/usr/local/opt/openssl@1.1/" cargo test --features "openssl" --all
- run: cargo test --features "openssl-vendored" --all
Win:
name: Windows
runs-on: windows-latest
env:
LIBCLANG_PATH: 'C:\Program Files\LLVM\bin'
RUSTFLAGS: ""
steps:
- uses: actions/checkout@v2
- run: choco install -y llvm
- run: Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1
- run: go version ; cargo version ; cmake --version
- run: cargo xtask submodule
- run: cargo build
- run: cargo test --all
- run: cargo test --features "nightly"
Pre-Release:
name: Pre-Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: cargo xtask submodule
- run: cd grpc-sys && cargo publish --dry-run
- name: Check generated package size
run: |
ls -alh target/package/grpcio-sys-*.crate
test `cat target/package/grpcio-sys-*.crate | wc -c` -le 10485760