-
Notifications
You must be signed in to change notification settings - Fork 0
174 lines (153 loc) · 5.47 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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
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-16core
container: ghcr.io/famedly/rust-container:nightly
name: Formatting, lints, syntax, and typos
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@b8a6852b4f997182bdea832df3f9e153038b5191
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 lints clippy --workspace --all-targets -- -D warnings
test:
runs-on: ubuntu-latest-16core
container: ghcr.io/famedly/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@v3
with:
path: head
- 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@b8a6852b4f997182bdea832df3f9e153038b5191
with:
shared-key: "stable"
workspaces: "head -> target"
- name: Test
shell: bash
working-directory: head
run: |
sqlx migrate run
cargo sqlx prepare --check -- --all-targets --all-features
cargo llvm-cov nextest --workspace --lcov --output-path $GITHUB_WORKSPACE/new-cov.lcov
- name: Load base coverage results from cache
if: github.event_name == 'pull_request'
id: cache-coverage
uses: actions/cache@v3
with:
path: ./old-cov.lcov
key: coverage-${{ github.event.pull_request.base.sha }}
- name: Pull base
uses: actions/checkout@v3
if: github.event_name == 'pull_request' && steps.cache-coverage.outputs.cache-hit != 'true'
with:
ref: ${{ github.event.pull_request.base.ref }}
repository: ${{ github.event.pull_request.base.full_name }}
path: base
- name: Generate base coverage
if: github.event_name == 'pull_request' && steps.cache-coverage.outputs.cache-hit != 'true'
working-directory: base
run: |
sqlx migrate run
cargo sqlx prepare --check -- --all-targets --all-features
cargo llvm-cov nextest --workspace --lcov --output-path $GITHUB_WORKSPACE/old-cov.lcov
- name: Meow Coverage
id: coverage-report
uses: famedly/meow-coverage@main
if: github.event_name == 'pull_request'
with:
new-lcov-file: 'new-cov.lcov'
old-lcov-file: ${{ github.event_name == 'pull_request' && 'old-cov.lcov' || '' }}
source-prefix: 'src/'
pr-number: ${{ github.event_name == 'pull_request' && github.event.pull_request.number || '' }}
repo-name: ${{ github.repository }}
commit-id: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.event.after }}
github-token: ${{ secrets.GITHUB_TOKEN }}
doc-test:
runs-on: ubuntu-latest-16core
container: ghcr.io/famedly/rust-container:nightly
name: Documentation tests
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@b8a6852b4f997182bdea832df3f9e153038b5191
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@b8a6852b4f997182bdea832df3f9e153038b5191
with:
shared-key: "nightly"
- name: Unused dependencies
shell: bash
env:
SQLX_OFFLINE: "true"
run: |
cargo +${NIGHTLY_VERSION} udeps