xref: /tonic/.github/workflows/CI.yml (revision 7eeda243)
1name: CI
2
3on:
4  push:
5    branches:
6    - master
7  pull_request: {}
8
9jobs:
10  check:
11    runs-on: ${{ matrix.os }}
12    strategy:
13      matrix:
14        os: [ubuntu-latest, macOS-latest, windows-latest]
15        rust: [stable]
16
17    env:
18      RUSTFLAGS: "-D warnings"
19
20    steps:
21    - uses: hecrj/setup-rust-action@v1
22      with:
23        rust-version: ${{ matrix.rust }}
24        components: rustfmt
25    - uses: actions/checkout@v3
26    - name: Install cargo-hack
27      uses: baptiste0928/cargo-install@v1
28      with:
29        crate: cargo-hack
30    - name: Install cargo-machete
31      uses: baptiste0928/cargo-install@v1
32      with:
33        crate: cargo-machete
34    - name: Install Protoc
35      uses: arduino/setup-protoc@v1
36      with:
37        repo-token: ${{ secrets.GITHUB_TOKEN }}
38    - uses: Swatinem/rust-cache@v2
39    - name: Check fmt
40      run: cargo fmt -- --check
41    - name: Check unused dependencies
42      run: cargo machete
43    - name: Check features
44      run: cargo hack check --all --ignore-private --each-feature --no-dev-deps
45    - name: Check all targets
46      run: cargo check --all --all-targets --all-features
47
48  check-docs:
49    name: check docs
50    runs-on: ubuntu-latest
51
52    env:
53      RUSTFLAGS: "-D warnings"
54
55    steps:
56    - uses: actions/checkout@v3
57    - name: Install Protoc
58      uses: arduino/setup-protoc@v1
59      with:
60        repo-token: ${{ secrets.GITHUB_TOKEN }}
61    - uses: hecrj/setup-rust-action@v1
62      with:
63        rust-version: "1.60"
64    - uses: Swatinem/rust-cache@v2
65    - name: cargo doc
66      run: cargo doc --workspace --no-deps --exclude examples
67
68  deny-check:
69    name: cargo-deny check
70    runs-on: ubuntu-latest
71    steps:
72    - uses: actions/checkout@v3
73    - uses: EmbarkStudios/cargo-deny-action@v1
74
75  msrv:
76    name: Check MSRV
77    runs-on: ubuntu-latest
78    steps:
79    - name: Checkout
80      uses: actions/checkout@v3
81    - uses: hecrj/setup-rust-action@v1
82      with:
83        rust-version: "1.60"
84    - name: Install Protoc
85      uses: arduino/setup-protoc@v1
86      with:
87        repo-token: ${{ secrets.GITHUB_TOKEN }}
88    - name: Check
89      run: cargo check --all --all-targets --all-features
90
91  test:
92    runs-on: ${{ matrix.os }}
93    strategy:
94      matrix:
95        os: [ubuntu-latest, macOS-latest, windows-latest]
96        rust: [stable]
97
98    env:
99      RUSTFLAGS: "-D warnings"
100      # run a lot of quickcheck iterations
101      QUICKCHECK_TESTS: 1000
102
103    steps:
104    - uses: hecrj/setup-rust-action@v1
105      with:
106        rust-version: ${{ matrix.rust }}
107        components: rustfmt
108    - name: Install Protoc
109      uses: arduino/setup-protoc@v1
110      with:
111        repo-token: ${{ secrets.GITHUB_TOKEN }}
112    - uses: Swatinem/rust-cache@v2
113    - uses: actions/checkout@v3
114    - name: Run tests
115      run: cargo test --all --all-features
116
117  interop:
118    name: Interop Tests
119    runs-on: ${{ matrix.os }}
120    strategy:
121      matrix:
122        os: [ubuntu-latest, macOS-latest, windows-latest]
123        rust: [stable]
124
125    env:
126      RUSTFLAGS: "-D warnings"
127
128    steps:
129    - uses: hecrj/setup-rust-action@v1
130      with:
131        rust-version: ${{ matrix.rust }}
132        components: rustfmt
133    - uses: actions/checkout@v3
134    - name: Install Protoc
135      uses: arduino/setup-protoc@v1
136      with:
137        repo-token: ${{ secrets.GITHUB_TOKEN }}
138    - uses: Swatinem/rust-cache@v2
139    - name: Run interop tests
140      run: ./interop/test.sh
141      shell: bash
142    - name: Run interop tests with Rustls
143      run: ./interop/test.sh --use_tls tls_rustls
144      shell: bash
145