-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (113 loc) · 3.16 KB
/
ci.yml
File metadata and controls
136 lines (113 loc) · 3.16 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:
branches:
- main
paths:
- 'src/**'
- 'tests/**'
- 'pyproject.toml'
- '.github/workflows/ci.yml'
- '!**/*.md'
pull_request:
branches:
- main
paths:
- 'src/**'
- 'tests/**'
- 'pyproject.toml'
- '.github/workflows/ci.yml'
- '!**/*.md'
workflow_dispatch:
permissions:
contents: read
pull-requests: read
checks: write
jobs:
test:
name: Test
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
matrix:
python-version: ['3.14']
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"
enable-cache: true
- name: Ensure uv cache directory exists
run: mkdir -p ~/.cache/uv
- name: Cache uv packages
uses: actions/cache@v4
with:
path: ~/.cache/uv
key: ${{ runner.os }}-uv-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}
restore-keys: |
${{ runner.os }}-uv-${{ matrix.python-version }}-
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends libpq-dev
- name: Create virtual environment and install
run: |
uv venv
uv pip install --python .venv/bin/python -e '.[dev]'
- name: Lint
run: .venv/bin/ruff check .
- name: Format check
run: .venv/bin/ruff format --check .
- name: Test
run: .venv/bin/python -m pytest -x
build:
name: Build
runs-on: ubuntu-latest
timeout-minutes: 10
needs: test
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python 3.14
uses: actions/setup-python@v5
with:
python-version: '3.14'
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"
enable-cache: true
- name: Ensure uv cache directory exists
run: mkdir -p ~/.cache/uv
- name: Cache uv packages
uses: actions/cache@v4
with:
path: ~/.cache/uv
key: ${{ runner.os }}-uv-3.14-${{ hashFiles('pyproject.toml') }}
restore-keys: |
${{ runner.os }}-uv-3.14-
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends libpq-dev
- name: Create virtual environment and install
run: |
uv venv
uv pip install --python .venv/bin/python -e '.[dev]'
uv pip install --python .venv/bin/python build
- name: Build package
run: .venv/bin/python -m build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: dist-${{ github.sha }}
path: dist/
retention-days: 7