1name: CI 2 3on: 4 push: 5 branches: [ "master" ] 6 pull_request: {} 7 merge_group: 8 branches: [ "master" ] 9 10env: 11 PROTOC_VERSION: 3.25.1 12 RUSTFLAGS: "-D warnings" 13 14jobs: 15 16 rustfmt: 17 runs-on: ubuntu-latest 18 steps: 19 - uses: actions/checkout@v4 20 - uses: hecrj/setup-rust-action@v2 21 with: 22 components: rustfmt 23 - run: cargo fmt --all --check 24 25 deny-check: 26 name: cargo-deny check 27 runs-on: ubuntu-latest 28 steps: 29 - uses: actions/checkout@v4 30 - uses: EmbarkStudios/cargo-deny-action@v2 31 32 codegen: 33 runs-on: ubuntu-latest 34 steps: 35 - uses: actions/checkout@v4 36 - uses: hecrj/setup-rust-action@v2 37 - name: Install protoc 38 uses: taiki-e/install-action@v2 39 with: 40 tool: protoc@${{ env.PROTOC_VERSION }} 41 - uses: Swatinem/rust-cache@v2 42 - run: cargo run --package codegen 43 - run: git diff --exit-code 44 45 udeps: 46 name: Check unused dependencies 47 runs-on: ubuntu-latest 48 steps: 49 - uses: actions/checkout@v4 50 - uses: dtolnay/rust-toolchain@master 51 with: 52 toolchain: nightly-2024-08-04 53 - uses: taiki-e/install-action@cargo-hack 54 - uses: taiki-e/install-action@cargo-udeps 55 - name: Install protoc 56 uses: taiki-e/install-action@v2 57 with: 58 tool: protoc@${{ env.PROTOC_VERSION }} 59 - uses: Swatinem/rust-cache@v2 60 - run: cargo hack udeps --workspace --exclude-features tls --each-feature 61 - run: cargo udeps --package tonic --features tls,transport 62 - run: cargo udeps --package tonic --features tls,server 63 - run: cargo udeps --package tonic --features tls,channel 64 65 check: 66 runs-on: ${{ matrix.os }} 67 strategy: 68 matrix: 69 os: [ubuntu-latest, macOS-latest, windows-latest] 70 steps: 71 - uses: actions/checkout@v4 72 - uses: hecrj/setup-rust-action@v2 73 - uses: taiki-e/install-action@cargo-hack 74 - name: Install protoc 75 uses: taiki-e/install-action@v2 76 with: 77 tool: protoc@${{ env.PROTOC_VERSION }} 78 - uses: Swatinem/rust-cache@v2 79 - name: Check features 80 run: cargo hack check --workspace --no-private --each-feature --no-dev-deps 81 - name: Check tonic feature powerset 82 run: cargo hack check --package tonic --feature-powerset --depth 2 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 - uses: taiki-e/install-action@cargo-no-dev-deps 95 - uses: Swatinem/rust-cache@v2 96 - run: cargo no-dev-deps --no-private check --all-features 97 - run: cargo no-dev-deps --no-private doc --no-deps 98 env: 99 RUSTDOCFLAGS: "-D warnings" 100 101 test: 102 runs-on: ${{ matrix.os }} 103 strategy: 104 matrix: 105 os: [ubuntu-latest, macOS-latest, windows-latest] 106 steps: 107 - uses: actions/checkout@v4 108 - uses: hecrj/setup-rust-action@v2 109 - name: Install protoc 110 uses: taiki-e/install-action@v2 111 with: 112 tool: protoc@${{ env.PROTOC_VERSION }} 113 - uses: Swatinem/rust-cache@v2 114 - run: cargo test --workspace --all-features 115 env: 116 QUICKCHECK_TESTS: 1000 # run a lot of quickcheck iterations 117 118 interop: 119 name: Interop Tests 120 runs-on: ${{ matrix.os }} 121 strategy: 122 matrix: 123 os: [ubuntu-latest, macOS-latest, windows-latest] 124 steps: 125 - uses: actions/checkout@v4 126 - uses: hecrj/setup-rust-action@v2 127 - name: Install protoc 128 uses: taiki-e/install-action@v2 129 with: 130 tool: protoc@${{ env.PROTOC_VERSION }} 131 - uses: Swatinem/rust-cache@v2 132 - name: Run interop tests 133 run: ./interop/test.sh 134 shell: bash 135 - name: Run interop tests with Rustls 136 run: ./interop/test.sh --use_tls tls_rustls 137 shell: bash 138 139 semver: 140 runs-on: ubuntu-latest 141 steps: 142 - uses: actions/checkout@v4 143 - uses: obi1kenobi/cargo-semver-checks-action@v2 144 with: 145 feature-group: all-features 146 147 check-external-types: 148 runs-on: ubuntu-latest 149 steps: 150 - uses: actions/checkout@v4 151 - uses: dtolnay/rust-toolchain@master 152 with: 153 toolchain: nightly-2024-05-01 154 - name: Install cargo-check-external-types 155 uses: taiki-e/cache-cargo-install-action@v2 156 with: 157 tool: [email protected] 158 - uses: taiki-e/install-action@cargo-hack 159 - uses: Swatinem/rust-cache@v2 160 - run: cargo hack --no-private check-external-types 161