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