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 clippy: 69 name: cargo clippy 70 runs-on: ubuntu-latest 71 72 env: 73 RUSTFLAGS: "-A unknown_lints -D warnings" 74 75 steps: 76 - uses: actions/checkout@v3 77 - uses: hecrj/setup-rust-action@v1 78 with: 79 rust-version: "1.60" 80 components: clippy 81 - name: Install Protoc 82 uses: arduino/setup-protoc@v1 83 with: 84 repo-token: ${{ secrets.GITHUB_TOKEN }} 85 - uses: Swatinem/rust-cache@v2 86 - name: Run cargo clippy 87 run: cargo clippy --workspace --all-targets --all-features 88 89 deny-check: 90 name: cargo-deny check 91 runs-on: ubuntu-latest 92 steps: 93 - uses: actions/checkout@v3 94 - uses: EmbarkStudios/cargo-deny-action@v1 95 96 msrv: 97 name: Check MSRV 98 runs-on: ubuntu-latest 99 steps: 100 - name: Checkout 101 uses: actions/checkout@v3 102 - uses: hecrj/setup-rust-action@v1 103 with: 104 rust-version: "1.60" 105 - name: Install Protoc 106 uses: arduino/setup-protoc@v1 107 with: 108 repo-token: ${{ secrets.GITHUB_TOKEN }} 109 - name: Check 110 run: cargo check --all --all-targets --all-features 111 112 test: 113 runs-on: ${{ matrix.os }} 114 strategy: 115 matrix: 116 os: [ubuntu-latest, macOS-latest, windows-latest] 117 rust: [stable] 118 119 env: 120 RUSTFLAGS: "-D warnings" 121 # run a lot of quickcheck iterations 122 QUICKCHECK_TESTS: 1000 123 124 steps: 125 - uses: hecrj/setup-rust-action@v1 126 with: 127 rust-version: ${{ matrix.rust }} 128 components: rustfmt 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 - uses: actions/checkout@v3 135 - name: Run tests 136 run: cargo test --all --all-features 137 138 interop: 139 name: Interop Tests 140 runs-on: ${{ matrix.os }} 141 strategy: 142 matrix: 143 os: [ubuntu-latest, macOS-latest, windows-latest] 144 rust: [stable] 145 146 env: 147 RUSTFLAGS: "-D warnings" 148 149 steps: 150 - uses: hecrj/setup-rust-action@v1 151 with: 152 rust-version: ${{ matrix.rust }} 153 components: rustfmt 154 - uses: actions/checkout@v3 155 - name: Install Protoc 156 uses: arduino/setup-protoc@v1 157 with: 158 repo-token: ${{ secrets.GITHUB_TOKEN }} 159 - uses: Swatinem/rust-cache@v2 160 - name: Run interop tests 161 run: ./interop/test.sh 162 shell: bash 163 - name: Run interop tests with Rustls 164 run: ./interop/test.sh --use_tls tls_rustls 165 shell: bash 166