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