-
Notifications
You must be signed in to change notification settings - Fork 253
146 lines (136 loc) · 5.1 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
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 [email protected]
- run: which cargo && cargo version && clang --version && openssl version
- run: cargo xtask submodule
- run: OPENSSL_ROOT_DIR="/usr/local/opt/[email protected]/" 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