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