-
Notifications
You must be signed in to change notification settings - Fork 126
140 lines (126 loc) · 4.78 KB
/
rust.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
name: Rust
on:
push:
branches:
- main
- 'branch-*'
pull_request:
branches:
- '**'
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: -Dwarnings
RUST_BACKTRACE: full
rust_min: 1.70.0 # <- Update this when bumping up MSRV
jobs:
static_checks:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
- name: Setup rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy, rustfmt
- name: Print rustc version
run: rustc --version
- name: Print rustfmt version
run: cargo fmt --version
- name: Print clippy version
run: cargo clippy --version
# Formatting
- name: Format check
run: cargo fmt --all -- --check
# Basic clippy checks
- name: Clippy check
run: cargo clippy --all-targets
- name: Clippy check with all features
run: cargo clippy --all-targets --all-features
# Verify scylla-cql separately
- name: Clippy scylla-cql
run: cargo clippy --all-targets -p scylla-cql --features "full-serialization"
# cpp-rust-driver special cfg
- name: Cargo check with cpp_rust_unstable cfg
run: RUSTFLAGS="--cfg cpp_rust_unstable -Dwarnings" cargo clippy --all-targets --all-features
# Features checks.
# No features.
- name: Cargo check without features
run: cargo check --all-targets -p scylla --features ""
# All features.
- name: Cargo check with all features
run: cargo check --all-targets -p scylla --all-features
# Various (de)serialization features.
- name: Cargo check with all serialization features
run: cargo check --all-targets -p scylla --features "full-serialization"
- name: Cargo check with metrics feature
run: cargo check --all-targets -p scylla --features "metrics"
- name: Cargo check with secrecy-08 feature
run: cargo check --all-targets -p scylla --features "secrecy-08"
- name: Cargo check with chrono-04 feature
run: cargo check --all-targets -p scylla --features "chrono-04"
- name: Cargo check with time-03 feature
run: cargo check --all-targets -p scylla --features "time-03"
- name: Cargo check with num-bigint-03 feature
run: cargo check --all-targets -p scylla --features "num-bigint-03"
- name: Cargo check with num-bigint-04 feature
run: cargo check --all-targets -p scylla --features "num-bigint-04"
- name: Cargo check with bigdecimal-04 feature
run: cargo check --all-targets -p scylla --features "bigdecimal-04"
# TLS-related feature sets.
- name: Cargo check with openssl-x feature
run: cargo check --all-targets -p scylla --features "openssl-010"
- name: Cargo check with rustls-x feature
run: cargo check --all-targets -p scylla --features "rustls-023"
# (openssl-x, rustls-x) is checked in tls.yml.
tests:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
- name: Setup 3-node Scylla cluster
run: |
sudo sh -c "echo 2097152 >> /proc/sys/fs/aio-max-nr"
docker compose -f test/cluster/docker-compose.yml up -d --wait
- name: Setup rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Print rustc version
run: rustc --version
- name: Run tests
run: |
RUST_LOG=trace SCYLLA_URI=172.42.0.2:9042 SCYLLA_URI2=172.42.0.3:9042 SCYLLA_URI3=172.42.0.4:9042 cargo test --features "full-serialization"
- name: Stop the cluster
if: ${{ always() }}
run: docker compose -f test/cluster/docker-compose.yml stop
- name: Print the cluster logs
if: ${{ always() }}
run: docker compose -f test/cluster/docker-compose.yml logs
- name: Remove cluster
run: docker compose -f test/cluster/docker-compose.yml down
# Tests that our current minimum supported rust version compiles everything sucessfully
min_rust:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Rust ${{ env.rust_min }}
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ env.rust_min }}
- name: Print Rust version
run: rustc --version
- name: Use MSRV Cargo.lock
run: mv Cargo.lock.msrv Cargo.lock
- name: MSRV cargo check with features
run: cargo check --all-targets --all-features --locked
- name: MSRV cargo check without features
run: cargo check --all-targets --locked -p scylla
- name: MSRV cargo check scylla-cql
run: cargo check --all-targets --locked -p scylla-cql
# Tests that docstrings generate docs without warnings
cargo_docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Compile docs
run: RUSTDOCFLAGS=-Dwarnings cargo doc