Skip to content

Commit 6672a83

Browse files
author
Jakob Guldberg Aaes
committed
ci: simplify uv-based CI and release workflows
Use setup-uv + uv sync/build/publish end-to-end, tighten release flow around tag-based trusted publishing, and pin workflow actions to major versions for safer automatic patch updates.
1 parent 24a5e59 commit 6672a83

File tree

2 files changed

+118
-147
lines changed

2 files changed

+118
-147
lines changed

.github/workflows/ci.yml

Lines changed: 74 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ on:
66
pull_request:
77
branches: [main, master]
88

9+
permissions:
10+
contents: read
11+
912
jobs:
1013
build:
1114
runs-on: ubuntu-latest
@@ -14,25 +17,21 @@ jobs:
1417
python-version: ["3.10", "3.11", "3.12", "3.13"]
1518

1619
steps:
17-
- uses: actions/checkout@v4
20+
- uses: actions/checkout@v6
1821

19-
- name: Set up Python ${{ matrix.python-version }}
20-
uses: actions/setup-python@v5
22+
- name: Set up uv (Python ${{ matrix.python-version }})
23+
uses: astral-sh/setup-uv@v7
2124
with:
2225
python-version: ${{ matrix.python-version }}
2326

24-
- name: Install dependencies
25-
run: |
26-
python -m pip install --upgrade pip
27-
pip install build
28-
pip install -e .
27+
- name: Sync runtime dependencies
28+
run: uv sync --locked --no-dev
2929

3030
- name: Check package builds
31-
run: python -m build
31+
run: uv build
3232

3333
- name: Verify CLI entry point
34-
run: |
35-
python -c "from sqlit.cli import main; print('CLI import OK')"
34+
run: uv run python -c "from sqlit.cli import main; print('CLI import OK')"
3635

3736
test-unit:
3837
runs-on: ubuntu-latest
@@ -41,18 +40,15 @@ jobs:
4140
python-version: ["3.10", "3.12"]
4241

4342
steps:
44-
- uses: actions/checkout@v4
43+
- uses: actions/checkout@v6
4544

46-
- name: Set up Python ${{ matrix.python-version }}
47-
uses: actions/setup-python@v5
45+
- name: Set up uv (Python ${{ matrix.python-version }})
46+
uses: astral-sh/setup-uv@v7
4847
with:
4948
python-version: ${{ matrix.python-version }}
5049

51-
- name: Install uv
52-
uses: astral-sh/setup-uv@v5
53-
5450
- name: Install dependencies
55-
run: uv sync --group test --no-dev
51+
run: uv sync --locked --group test --no-dev
5652

5753
- name: Run unit tests
5854
run: |
@@ -77,18 +73,16 @@ jobs:
7773
python-version: ["3.10", "3.12"]
7874

7975
steps:
80-
- uses: actions/checkout@v4
76+
- uses: actions/checkout@v6
8177

82-
- name: Set up Python ${{ matrix.python-version }}
83-
uses: actions/setup-python@v5
78+
- name: Set up uv (Python ${{ matrix.python-version }})
79+
uses: astral-sh/setup-uv@v7
8480
with:
8581
python-version: ${{ matrix.python-version }}
86-
87-
- name: Install uv
88-
uses: astral-sh/setup-uv@v5
82+
enable-cache: true
8983

9084
- name: Install dependencies
91-
run: uv sync --group test --no-dev
85+
run: uv sync --locked --group test --no-dev
9286

9387
- name: Run SQLite integration tests
9488
run: uv run pytest tests/test_sqlite.py -v --timeout=60
@@ -114,18 +108,16 @@ jobs:
114108
--health-start-period 30s
115109
116110
steps:
117-
- uses: actions/checkout@v4
111+
- uses: actions/checkout@v6
118112

119-
- name: Set up Python 3.12
120-
uses: actions/setup-python@v5
113+
- name: Set up uv
114+
uses: astral-sh/setup-uv@v7
121115
with:
122116
python-version: "3.12"
123-
124-
- name: Install uv
125-
uses: astral-sh/setup-uv@v5
117+
enable-cache: true
126118

127119
- name: Install dependencies
128-
run: uv sync --group test --no-dev --extra mssql
120+
run: uv sync --locked --group test --no-dev --extra mssql
129121

130122
- name: Wait for SQL Server to be ready
131123
run: |
@@ -167,18 +159,16 @@ jobs:
167159
--health-start-period 10s
168160
169161
steps:
170-
- uses: actions/checkout@v4
162+
- uses: actions/checkout@v6
171163

172-
- name: Set up Python 3.12
173-
uses: actions/setup-python@v5
164+
- name: Set up uv
165+
uses: astral-sh/setup-uv@v7
174166
with:
175167
python-version: "3.12"
176-
177-
- name: Install uv
178-
uses: astral-sh/setup-uv@v5
168+
enable-cache: true
179169

180170
- name: Install dependencies
181-
run: uv sync --group test --no-dev --extra postgres
171+
run: uv sync --locked --group test --no-dev --extra postgres
182172

183173
- name: Run PostgreSQL integration tests
184174
env:
@@ -211,18 +201,16 @@ jobs:
211201
--health-start-period 30s
212202
213203
steps:
214-
- uses: actions/checkout@v4
204+
- uses: actions/checkout@v6
215205

216-
- name: Set up Python 3.12
217-
uses: actions/setup-python@v5
206+
- name: Set up uv
207+
uses: astral-sh/setup-uv@v7
218208
with:
219209
python-version: "3.12"
220-
221-
- name: Install uv
222-
uses: astral-sh/setup-uv@v5
210+
enable-cache: true
223211

224212
- name: Install dependencies
225-
run: uv sync --group test --no-dev --extra mysql
213+
run: uv sync --locked --group test --no-dev --extra mysql
226214

227215
- name: Run MySQL integration tests
228216
env:
@@ -254,18 +242,16 @@ jobs:
254242
--health-start-period 60s
255243
256244
steps:
257-
- uses: actions/checkout@v4
245+
- uses: actions/checkout@v6
258246

259-
- name: Set up Python 3.12
260-
uses: actions/setup-python@v5
247+
- name: Set up uv
248+
uses: astral-sh/setup-uv@v7
261249
with:
262250
python-version: "3.12"
263-
264-
- name: Install uv
265-
uses: astral-sh/setup-uv@v5
251+
enable-cache: true
266252

267253
- name: Install dependencies
268-
run: uv sync --group test --no-dev --extra oracle
254+
run: uv sync --locked --group test --no-dev --extra oracle
269255

270256
- name: Run Oracle integration tests
271257
env:
@@ -298,23 +284,21 @@ jobs:
298284
--health-start-period 30s
299285
300286
steps:
301-
- uses: actions/checkout@v4
287+
- uses: actions/checkout@v6
302288

303-
- name: Set up Python 3.12
304-
uses: actions/setup-python@v5
289+
- name: Set up uv
290+
uses: astral-sh/setup-uv@v7
305291
with:
306292
python-version: "3.12"
293+
enable-cache: true
307294

308295
- name: Install MariaDB Connector/C
309296
run: |
310297
sudo apt-get update
311298
sudo apt-get install -y libmariadb-dev
312299
313-
- name: Install uv
314-
uses: astral-sh/setup-uv@v5
315-
316300
- name: Install dependencies
317-
run: uv sync --group test --no-dev --extra mariadb
301+
run: uv sync --locked --group test --no-dev --extra mariadb
318302

319303
- name: Run MariaDB integration tests
320304
env:
@@ -332,18 +316,16 @@ jobs:
332316
python-version: ["3.10", "3.12"]
333317

334318
steps:
335-
- uses: actions/checkout@v4
319+
- uses: actions/checkout@v6
336320

337-
- name: Set up Python ${{ matrix.python-version }}
338-
uses: actions/setup-python@v5
321+
- name: Set up uv (Python ${{ matrix.python-version }})
322+
uses: astral-sh/setup-uv@v7
339323
with:
340324
python-version: ${{ matrix.python-version }}
341-
342-
- name: Install uv
343-
uses: astral-sh/setup-uv@v5
325+
enable-cache: true
344326

345327
- name: Install dependencies
346-
run: uv sync --group test --no-dev --extra duckdb
328+
run: uv sync --locked --group test --no-dev --extra duckdb
347329

348330
- name: Run DuckDB integration tests
349331
run: uv run pytest tests/test_duckdb.py -v --timeout=60
@@ -353,18 +335,16 @@ jobs:
353335
needs: build
354336

355337
steps:
356-
- uses: actions/checkout@v4
338+
- uses: actions/checkout@v6
357339

358-
- name: Set up Python 3.12
359-
uses: actions/setup-python@v5
340+
- name: Set up uv
341+
uses: astral-sh/setup-uv@v7
360342
with:
361343
python-version: "3.12"
362-
363-
- name: Install uv
364-
uses: astral-sh/setup-uv@v5
344+
enable-cache: true
365345

366346
- name: Install dependencies
367-
run: uv sync --group test --no-dev --extra cockroachdb
347+
run: uv sync --locked --group test --no-dev --extra cockroachdb
368348

369349
- name: Start CockroachDB
370350
run: |
@@ -404,18 +384,16 @@ jobs:
404384
- 3050:3050
405385

406386
steps:
407-
- uses: actions/checkout@v4
387+
- uses: actions/checkout@v6
408388

409-
- name: Set up Python 3.12
410-
uses: actions/setup-python@v5
389+
- name: Set up uv
390+
uses: astral-sh/setup-uv@v7
411391
with:
412392
python-version: "3.12"
413-
414-
- name: Install uv
415-
uses: astral-sh/setup-uv@v5
393+
enable-cache: true
416394

417395
- name: Install dependencies
418-
run: uv sync --group test --no-dev --extra firebird
396+
run: uv sync --locked --group test --no-dev --extra firebird
419397

420398
- name: Run Firebird integration tests
421399
env:
@@ -431,18 +409,16 @@ jobs:
431409
needs: build
432410

433411
steps:
434-
- uses: actions/checkout@v4
412+
- uses: actions/checkout@v6
435413

436-
- name: Set up Python 3.12
437-
uses: actions/setup-python@v5
414+
- name: Set up uv
415+
uses: astral-sh/setup-uv@v7
438416
with:
439417
python-version: "3.12"
440-
441-
- name: Install uv
442-
uses: astral-sh/setup-uv@v5
418+
enable-cache: true
443419

444420
- name: Install dependencies
445-
run: uv sync --group test --no-dev --extra clickhouse
421+
run: uv sync --locked --group test --no-dev --extra clickhouse
446422

447423
- name: Start ClickHouse
448424
run: |
@@ -474,18 +450,16 @@ jobs:
474450
needs: build
475451

476452
steps:
477-
- uses: actions/checkout@v4
453+
- uses: actions/checkout@v6
478454

479-
- name: Set up Python 3.12
480-
uses: actions/setup-python@v5
455+
- name: Set up uv
456+
uses: astral-sh/setup-uv@v7
481457
with:
482458
python-version: "3.12"
483-
484-
- name: Install uv
485-
uses: astral-sh/setup-uv@v5
459+
enable-cache: true
486460

487461
- name: Install dependencies
488-
run: uv sync --group test --no-dev --extra ssh --extra postgres
462+
run: uv sync --locked --group test --no-dev --extra ssh --extra postgres
489463

490464
- name: Create Docker network
491465
run: docker network create ssh-test-net
@@ -556,18 +530,16 @@ jobs:
556530
needs: build
557531

558532
steps:
559-
- uses: actions/checkout@v4
533+
- uses: actions/checkout@v6
560534

561-
- name: Set up Python 3.12
562-
uses: actions/setup-python@v5
535+
- name: Set up uv
536+
uses: astral-sh/setup-uv@v7
563537
with:
564538
python-version: "3.12"
565-
566-
- name: Install uv
567-
uses: astral-sh/setup-uv@v5
539+
enable-cache: true
568540

569541
- name: Install dependencies
570-
run: uv sync --group test --no-dev --extra turso
542+
run: uv sync --locked --group test --no-dev --extra turso
571543

572544
- name: Start Turso (libsql-server)
573545
run: |

0 commit comments

Comments
 (0)