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 Protoc 31 uses: arduino/setup-protoc@v1 32 with: 33 repo-token: ${{ secrets.GITHUB_TOKEN }} 34 - uses: Swatinem/rust-cache@v2 35 - name: Check fmt 36 run: cargo fmt -- --check 37 - name: Check features 38 run: cargo hack check --all --ignore-private --each-feature --no-dev-deps 39 - name: Check all targets 40 run: cargo check --all --all-targets --all-features 41 42 clippy: 43 name: cargo clippy 44 runs-on: ubuntu-latest 45 46 env: 47 RUSTFLAGS: "-A unknown_lints -D warnings" 48 49 steps: 50 - uses: actions/checkout@v3 51 - uses: hecrj/setup-rust-action@v1 52 with: 53 rust-version: "1.60" 54 components: clippy 55 - name: Install Protoc 56 uses: arduino/setup-protoc@v1 57 with: 58 repo-token: ${{ secrets.GITHUB_TOKEN }} 59 - uses: Swatinem/rust-cache@v2 60 - name: Run cargo clippy 61 run: cargo clippy --workspace --all-targets --all-features 62 63 deny-check: 64 name: cargo-deny check 65 runs-on: ubuntu-latest 66 steps: 67 - uses: actions/checkout@v3 68 - uses: EmbarkStudios/cargo-deny-action@v1 69 70 msrv: 71 name: Check MSRV 72 runs-on: ubuntu-latest 73 steps: 74 - name: Checkout 75 uses: actions/checkout@v3 76 - uses: hecrj/setup-rust-action@v1 77 with: 78 rust-version: "1.60" 79 - name: Install Protoc 80 uses: arduino/setup-protoc@v1 81 with: 82 repo-token: ${{ secrets.GITHUB_TOKEN }} 83 - name: Check 84 run: cargo check --all --all-targets --all-features 85 86 test: 87 runs-on: ${{ matrix.os }} 88 strategy: 89 matrix: 90 os: [ubuntu-latest, macOS-latest, windows-latest] 91 rust: [stable] 92 93 env: 94 RUSTFLAGS: "-D warnings" 95 # run a lot of quickcheck iterations 96 QUICKCHECK_TESTS: 1000 97 98 steps: 99 - uses: hecrj/setup-rust-action@v1 100 with: 101 rust-version: ${{ matrix.rust }} 102 components: rustfmt 103 - name: Install Protoc 104 uses: arduino/setup-protoc@v1 105 with: 106 repo-token: ${{ secrets.GITHUB_TOKEN }} 107 - uses: Swatinem/rust-cache@v2 108 - uses: actions/checkout@v3 109 - name: Run tests 110 run: cargo test --all --all-features 111 112 interop: 113 name: Interop Tests 114 runs-on: ${{ matrix.os }} 115 strategy: 116 matrix: 117 os: [ubuntu-latest, macOS-latest, windows-latest] 118 rust: [stable] 119 120 env: 121 RUSTFLAGS: "-D warnings" 122 123 steps: 124 - uses: hecrj/setup-rust-action@v1 125 with: 126 rust-version: ${{ matrix.rust }} 127 components: rustfmt 128 - uses: actions/checkout@v3 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 - name: Run interop tests 135 run: ./interop/test.sh 136 shell: bash 137 - name: Run interop tests with Rustls 138 run: ./interop/test.sh --use_tls tls_rustls 139 shell: bash 140