-
-
Notifications
You must be signed in to change notification settings - Fork 3
139 lines (116 loc) · 3.8 KB
/
ci.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
name: CI
on: [push, pull_request]
jobs:
code_quality:
name: Code quality
runs-on: ubuntu-24.04
steps:
- name: Checkout source code
uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy, rustfmt
- uses: taiki-e/install-action@just
- uses: taiki-e/install-action@dprint
- uses: taiki-e/install-action@v2
with:
tool: typos-cli,hurlfmt
- name: Check MSRV
run: |
cargo_msrv=$(sed -n 's/rust-version = "\(.*\)"/\1/p' Cargo.toml)
toolchain_channel=$(sed -n 's/channel = "\(.*\)"/\1/p' rust-toolchain.toml)
echo "Cargo MSRV: $cargo_msrv"
echo "Toolchain Channel: $toolchain_channel"
if [ "$cargo_msrv" = "$toolchain_channel" ]; then
echo "MSRV match"
else
echo "MSRV do not match"
exit 1
fi
- name: Show version information
shell: bash
run: |
rustc --version
cargo --version
cargo fmt --version
- name: Ensure `fmt` has been run
run: just fmt-check
- name: Run clippy
env:
SQLX_OFFLINE: true
run: just lint
msrv:
name: Minimum supported rust version
runs-on: ubuntu-24.04
steps:
- name: Checkout source code
uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
- uses: taiki-e/install-action@nextest
- uses: taiki-e/install-action@just
- name: Prepare the environment variables
run: |
cp .example.env .env
- name: Prepare the database
env:
PGPASSWORD: secret
run: |
docker compose --file ./tests/compose.yml run --detach -p 5432:5432 --name postgres_db postgres_db
# Wait until the DB is up
docker exec postgres_db bash -c "until pg_isready; do sleep 1; done"
# Check DB version
docker exec postgres_db psql -h localhost -p 5432 -U gandalf --version
- name: Show version information
shell: bash
run: |
rustc --version
cargo --version
- name: Run tests
env:
DATABASE_URL: postgres://gandalf:SpeakFriendAndEnter@localhost:5432/tin
run: just test
build:
name: Build for ${{ matrix.build }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- {
build: linux-gnu,
os: ubuntu-24.04,
target: x86_64-unknown-linux-gnu,
}
# `sfackler/rust-openssl` needs more effort to compile to musl
# - { build: linux-musl, os: ubuntu-22.04, target: x86_64-unknown-linux-musl }
- { build: win-gnu, os: windows-2022, target: x86_64-pc-windows-gnu }
- {
build: win-msvc,
os: windows-2022,
target: x86_64-pc-windows-msvc,
}
- {
build: win32-msvc,
os: windows-2022,
target: i686-pc-windows-msvc,
}
- { build: macos, os: macos-14, target: x86_64-apple-darwin }
steps:
- name: Checkout source code
uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
target: ${{ matrix.target }}
- name: Show version information
shell: bash
run: |
rustc --version
cargo --version
- name: Install musl-tools
if: matrix.target == 'x86_64-unknown-linux-musl'
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
--allow-unauthenticated musl-tools
- name: Build
run: cargo build --release --locked --target ${{ matrix.target }}