-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (109 loc) · 3.15 KB
/
ci.yml
File metadata and controls
136 lines (109 loc) · 3.15 KB
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
name: CI
on:
push:
pull_request:
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
quality:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Set up uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: Install dependencies
run: uv sync --extra dev --extra diff
- name: Run pre-commit
run: uv run pre-commit run --all-files --show-diff-on-failure
- name: Run ty
run: uv run ty check src tests
unit:
runs-on: ubuntu-latest
name: unit (${{ matrix.python-version }})
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set up uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: Install dependencies
run: uv sync --extra dev --extra diff
- name: Run unit tests
run: uv run pytest tests/unit -q
integration:
runs-on: ubuntu-latest
name: integration (${{ matrix.postgres-image }})
strategy:
fail-fast: false
matrix:
postgres-image: ["postgres:14-alpine", "postgres:15-alpine", "postgres:16-alpine", "postgres:17-alpine"]
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Set up uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: Install dependencies
run: uv sync --extra dev --extra diff
- name: Run integration tests
env:
PGPKG_TEST_POSTGRES_IMAGE: ${{ matrix.postgres-image }}
run: uv run pytest tests/integration -q
build-docs:
runs-on: ubuntu-latest
needs:
- quality
- unit
- integration
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Set up uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: Install dependencies
run: uv sync --extra dev --extra diff
- name: Build distributions
run: uv build --out-dir dist
- name: Check distributions
run: uv run python -m twine check dist/*
- name: Build docs
env:
PGPKG_REPO_URL: ${{ github.server_url }}/${{ github.repository }}
PGPKG_SITE_URL: ""
run: uv run mkdocs build --strict
- name: Upload distributions
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/*
if-no-files-found: error