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