-
Notifications
You must be signed in to change notification settings - Fork 0
144 lines (125 loc) · 4.07 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
name: Rust
on:
push:
branches: [ "main" ]
tags: [ "*" ]
pull_request:
branches: [ "*" ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref}}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
DATABASE_URL: "postgresql://postgres:password@postgres:5432/baraddur"
SQLX_OFFLINE: "true"
jobs:
check:
runs-on: ubuntu-latest
container: docker-oss.nexus.famedly.de/rust-container:nightly
name: Formatting, lints, syntax, and typos
steps:
- uses: actions/checkout@v4
- uses: famedly/backend-build-workflows/.github/actions/rust-prepare@main
with:
gitlab_user: ${{ secrets.GITLAB_USER }}
gitlab_pass: ${{ secrets.GITLAB_PASS }}
gitlab_ssh: ${{ secrets.CI_SSH_PRIVATE_KEY}}
- name: Caching
uses: Swatinem/rust-cache@68b3cb7503c78e67dae8373749990a220eb65352
with:
shared-key: "stable"
- name: Typos
uses: crate-ci/typos@ef5fcf92dfbd679f97c0371159e143852f7b1eb1
- name: Check
shell: bash
env:
SQLX_OFFLINE: "true"
run: |
cargo +${NIGHTLY_VERSION} fmt -- --check
cargo clippy --workspace --all-targets -- -D warnings
test:
runs-on: ubuntu-latest
container: docker-oss.nexus.famedly.de/rust-container:nightly
name: Tests and coverage
services:
postgres:
image: postgres:15
env:
POSTGRES_PASSWORD: password
POSTGRES_USER: postgres
POSTGRES_DB: baraddur
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/checkout@v4
- uses: famedly/backend-build-workflows/.github/actions/rust-prepare@main
with:
gitlab_user: ${{ secrets.GITLAB_USER }}
gitlab_pass: ${{ secrets.GITLAB_PASS }}
gitlab_ssh: ${{ secrets.CI_SSH_PRIVATE_KEY}}
- name: Caching
uses: Swatinem/rust-cache@68b3cb7503c78e67dae8373749990a220eb65352
with:
shared-key: "stable"
- name: Test
shell: bash
run: |
sqlx migrate run
cargo sqlx prepare --check -- --all-targets --all-features
cargo llvm-cov nextest --profile ci --workspace --lcov --output-path lcov.info
- name: Codecov - Upload coverage
uses: codecov/codecov-action@v4
with:
token: ${{secrets.CODECOV_TOKEN}}
files: "lcov.info"
- name: Codecov - Upload test results
uses: codecov/test-results-action@v1
with:
token: ${{secrets.CODECOV_TOKEN}}
doc-test:
runs-on: ubuntu-latest
container: ghcr.io/famedly/rust-container:nightly
name: Documentation tests
steps:
- uses: actions/checkout@v4
- uses: famedly/backend-build-workflows/.github/actions/rust-prepare@main
with:
gitlab_user: ${{ secrets.GITLAB_USER }}
gitlab_pass: ${{ secrets.GITLAB_PASS }}
gitlab_ssh: ${{ secrets.CI_SSH_PRIVATE_KEY}}
- name: Caching
uses: Swatinem/rust-cache@68b3cb7503c78e67dae8373749990a220eb65352
with:
shared-key: "nightly"
- name: Documentation tests
shell: bash
env:
SQLX_OFFLINE: "true"
run: |
cargo +${NIGHTLY_VERSION} test --doc --workspace --verbose
udeps:
runs-on: ubuntu-latest-16core
container: ghcr.io/famedly/rust-container:nightly
name: Unused dependencies
steps:
- uses: actions/checkout@v3
- uses: famedly/backend-build-workflows/.github/actions/rust-prepare@main
with:
gitlab_user: ${{ secrets.GITLAB_USER }}
gitlab_pass: ${{ secrets.GITLAB_PASS }}
gitlab_ssh: ${{ secrets.CI_SSH_PRIVATE_KEY}}
- name: Caching
uses: Swatinem/rust-cache@68b3cb7503c78e67dae8373749990a220eb65352
with:
shared-key: "nightly"
- name: Unused dependencies
shell: bash
env:
SQLX_OFFLINE: "true"
run: |
cargo +${NIGHTLY_VERSION} udeps