xref: /tonic/.github/workflows/CI.yml (revision a562a3ce)
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 Protoc
31      uses: arduino/setup-protoc@v1
32      with:
33        repo-token: ${{ secrets.GITHUB_TOKEN }}
34    - uses: Swatinem/rust-cache@v2
35    - name: Check fmt
36      run: cargo fmt -- --check
37    - name: Check features
38      run: cargo hack check --all --ignore-private --each-feature --no-dev-deps
39    - name: Check all targets
40      run: cargo check --all --all-targets --all-features
41
42  clippy:
43    name: cargo clippy
44    runs-on: ubuntu-latest
45
46    env:
47      RUSTFLAGS: "-A unknown_lints -D warnings"
48
49    steps:
50    - uses: actions/checkout@v3
51    - uses: hecrj/setup-rust-action@v1
52      with:
53        rust-version: "1.60"
54        components: clippy
55    - name: Install Protoc
56      uses: arduino/setup-protoc@v1
57      with:
58        repo-token: ${{ secrets.GITHUB_TOKEN }}
59    - uses: Swatinem/rust-cache@v2
60    - name: Run cargo clippy
61      run: cargo clippy --workspace --all-targets --all-features
62
63  deny-check:
64    name: cargo-deny check
65    runs-on: ubuntu-latest
66    steps:
67    - uses: actions/checkout@v3
68    - uses: EmbarkStudios/cargo-deny-action@v1
69
70  msrv:
71    name: Check MSRV
72    runs-on: ubuntu-latest
73    steps:
74    - name: Checkout
75      uses: actions/checkout@v3
76    - uses: hecrj/setup-rust-action@v1
77      with:
78        rust-version: "1.60"
79    - name: Install Protoc
80      uses: arduino/setup-protoc@v1
81      with:
82        repo-token: ${{ secrets.GITHUB_TOKEN }}
83    - name: Check
84      run: cargo check --all --all-targets --all-features
85
86  test:
87    runs-on: ${{ matrix.os }}
88    strategy:
89      matrix:
90        os: [ubuntu-latest, macOS-latest, windows-latest]
91        rust: [stable]
92
93    env:
94      RUSTFLAGS: "-D warnings"
95      # run a lot of quickcheck iterations
96      QUICKCHECK_TESTS: 1000
97
98    steps:
99    - uses: hecrj/setup-rust-action@v1
100      with:
101        rust-version: ${{ matrix.rust }}
102        components: rustfmt
103    - name: Install Protoc
104      uses: arduino/setup-protoc@v1
105      with:
106        repo-token: ${{ secrets.GITHUB_TOKEN }}
107    - uses: Swatinem/rust-cache@v2
108    - uses: actions/checkout@v3
109    - name: Run tests
110      run: cargo test --all --all-features
111
112  interop:
113    name: Interop Tests
114    runs-on: ${{ matrix.os }}
115    strategy:
116      matrix:
117        os: [ubuntu-latest, macOS-latest, windows-latest]
118        rust: [stable]
119
120    env:
121      RUSTFLAGS: "-D warnings"
122
123    steps:
124    - uses: hecrj/setup-rust-action@v1
125      with:
126        rust-version: ${{ matrix.rust }}
127        components: rustfmt
128    - uses: actions/checkout@v3
129    - name: Install Protoc
130      uses: arduino/setup-protoc@v1
131      with:
132        repo-token: ${{ secrets.GITHUB_TOKEN }}
133    - uses: Swatinem/rust-cache@v2
134    - name: Run interop tests
135      run: ./interop/test.sh
136      shell: bash
137    - name: Run interop tests with Rustls
138      run: ./interop/test.sh --use_tls tls_rustls
139      shell: bash
140