-
-
Notifications
You must be signed in to change notification settings - Fork 42
145 lines (134 loc) · 4 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
141
142
143
144
145
name: Rust
on:
push:
branches:
- main
pull_request: {}
env:
CARGO_TERM_COLOR: always
REDIS_URL: redis://localhost:6379/1
MONGODB_URL: mongodb://localhost:27017
POSTGRES_URL: postgres://postgres:postgres@localhost:5432
MYSQL_URL: mysql://root@localhost:3306/public
jobs:
check:
runs-on: ubuntu-latest
strategy:
matrix:
pwd:
- .
- examples
steps:
- uses: actions/checkout@v4
- run: |
rustup toolchain install nightly --profile minimal --component rustfmt --component clippy
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.pwd }}
workspaces: ${{ matrix.pwd }}
- name: clippy
working-directory: ${{ matrix.pwd }}
run: |
cargo clippy --all --all-targets --all-features
- name: rustfmt
working-directory: ${{ matrix.pwd }}
run: |
cargo fmt --all -- --check
check-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: |
rustup toolchain install stable --profile minimal
- uses: Swatinem/rust-cache@v2
- name: cargo doc
env:
RUSTDOCFLAGS: "-D rustdoc::broken-intra-doc-links"
run: |
cargo doc --all-features --no-deps
test:
needs: check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: |
rustup toolchain install stable --profile minimal
rustup toolchain install nightly --profile minimal
cargo install cargo-tarpaulin
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@nextest
- name: Run tests
run: |
cargo nextest run --test integration-tests
- name: Generate code coverage
run: |
cargo tarpaulin -olcov --output-dir ./coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: ./coverage/lcov.info
fail_ci_if_error: true
test-docs:
needs: check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: |
rustup toolchain install stable --profile minimal
- uses: Swatinem/rust-cache@v2
- name: Run doc tests
run: |
cargo test --all-features --doc
integration-tests:
needs: check
runs-on: ubuntu-latest
strategy:
matrix:
include:
- test: redis-store
features: redis-store
docker: true
- test: mongodb-store
features: mongodb-store
docker: true
- test: postgres-store
features: postgres-store
docker: true
- test: mysql-store
features: mysql-store
docker: true
- test: sqlite-store
features: sqlite-store
docker: false
- test: moka-store-dummy
features: moka-store
docker: false
- test: moka-store-sqlite
features: moka-store,sqlite-store
docker: false
steps:
- uses: actions/checkout@v4
- run: |
rustup toolchain install stable --profile minimal
cargo install cargo-tarpaulin
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@nextest
- name: Start session store
if: matrix.docker
run: |
docker compose -f tests/docker-compose.yml up ${{ matrix.test }} -d
- name: Run integration tests
run: |
cargo nextest run --test ${{ matrix.test }}-integration-tests --features ${{ matrix.features }}
- name: Generate code coverage
run: |
cargo tarpaulin -olcov --features ${{ matrix.features }} --output-dir ./coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: ./coverage/lcov.info
fail_ci_if_error: true