@@ -2,14 +2,14 @@ name: CI
22
33on :
44 push :
5- branches : [main]
5+ branches : [main, develop ]
66 pull_request :
7- branches : [main]
87
98env :
109 CARGO_TERM_COLOR : always
1110 RUST_BACKTRACE : 1
1211 DATABASE_URL : postgres://postgres:postgres@localhost/postgres
12+ SQLX_OFFLINE : true
1313
1414jobs :
1515 test :
3434 include :
3535 - os : ubuntu-latest
3636 rust : nightly
37-
3837 steps :
3938 - name : Checkout sources
40- uses : actions/checkout@v4
39+ uses : actions/checkout@v6
4140
4241 - name : Install Rust toolchain
4342 uses : dtolnay/rust-toolchain@master
@@ -56,15 +55,27 @@ jobs:
5655 ${{ runner.os }}-cargo-${{ matrix.rust }}-
5756 ${{ runner.os }}-cargo-
5857
58+ - name : Install cargo-binstall
59+ uses : cargo-bins/cargo-binstall@v1.16.2
60+
61+ - name : Install sqlx-cli
62+ run : cargo binstall sqlx-cli --locked --force
63+
64+ - name : Set up database
65+ run : sqlx database create
66+
67+ - name : Run migrations
68+ run : sqlx migrate run
69+
5970 - name : Run cargo test with all features
60- run : cargo test --all-features --verbose --test-threads=1
71+ run : cargo test --all-features --verbose -- -- test-threads=1
6172
6273 fmt :
6374 name : Rustfmt
6475 runs-on : ubuntu-latest
6576 steps :
6677 - name : Checkout sources
67- uses : actions/checkout@v4
78+ uses : actions/checkout@v6
6879
6980 - name : Install Rust toolchain
7081 uses : dtolnay/rust-toolchain@stable
7788 clippy :
7889 name : Clippy
7990 runs-on : ubuntu-latest
80- services :
81- postgres :
82- image : postgres:17
83- env :
84- POSTGRES_PASSWORD : postgres
85- ports :
86- - 5432:5432
87- options : >-
88- --health-cmd="pg_isready -U postgres"
89- --health-interval=10s
90- --health-timeout=5s
91- --health-retries=5
9291 steps :
9392 - name : Checkout sources
94- uses : actions/checkout@v4
93+ uses : actions/checkout@v6
9594
9695 - name : Install Rust toolchain
9796 uses : dtolnay/rust-toolchain@stable
@@ -110,35 +109,15 @@ jobs:
110109 - name : Run cargo clippy
111110 run : cargo clippy --all-targets --all-features
112111
113- security :
114- name : Security Audit
115- runs-on : ubuntu-latest
116- steps :
117- - name : Checkout sources
118- uses : actions/checkout@v4
119-
120- - name : Install Rust toolchain
121- uses : dtolnay/rust-toolchain@stable
122-
123- - name : Install cargo-audit
124- run : cargo install cargo-audit
125-
126- - name : Run cargo audit
127- run : cargo audit
128-
129- coverage :
130- name : Code Coverage
112+ docs :
113+ name : Documentation
131114 runs-on : ubuntu-latest
132- if : github.event_name == 'push' && github.ref == 'refs/heads/main'
133115 steps :
134116 - name : Checkout sources
135- uses : actions/checkout@v4
117+ uses : actions/checkout@v6
136118
137119 - name : Install Rust toolchain
138- uses : dtolnay/rust-toolchain@stable
139-
140- - name : Install cargo-tarpaulin
141- run : cargo install cargo-tarpaulin
120+ uses : dtolnay/rust-toolchain@nightly
142121
143122 - name : Cache cargo registry
144123 uses : actions/cache@v4
@@ -147,13 +126,25 @@ jobs:
147126 ~/.cargo/registry
148127 ~/.cargo/git
149128 target
150- key : ${{ runner.os }}-cargo-coverage -${{ hashFiles('**/Cargo.lock') }}
129+ key : ${{ runner.os }}-cargo-docs -${{ hashFiles('**/Cargo.lock') }}
151130
152- - name : Generate code coverage
153- run : cargo tarpaulin --all-features --verbose --workspace --timeout 120 --out xml
131+ - name : Build documentation
132+ run : cargo doc --all-features --no-deps --document-private-items
133+ env :
134+ RUSTDOCFLAGS : " -Dwarnings"
154135
155- - name : Upload to codecov.io
156- uses : codecov/codecov-action@v3
157- with :
158- file : cobertura.xml
159- fail_ci_if_error : false
136+ unused-deps :
137+ name : Unused Dependencies
138+ runs-on : ubuntu-latest
139+ steps :
140+ - name : Checkout sources
141+ uses : actions/checkout@v6
142+
143+ - name : Install Rust nightly toolchain
144+ uses : dtolnay/rust-toolchain@nightly
145+
146+ - name : Install cargo-udeps
147+ uses : taiki-e/install-action@cargo-udeps
148+
149+ - name : Check for unused dependencies
150+ run : cargo +nightly udeps --all-targets --all-features
0 commit comments