Skip to content

Commit 738d0e0

Browse files
authored
PyPI publishing from CI (#111)
* chore: Rename client project to aai-jobq * chore: Reflect name change in backend project * feat(ci): Add PyPI release pipeline * fix(ci): Capture stdout in pytest * fix(client): Fix version lookup
1 parent 8f1b62f commit 738d0e0

10 files changed

+81
-55
lines changed

.github/workflows/client-python.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
- name: Execute python tests
4646
run: |
4747
uv pip install . # need to install without --no-deps to work around non-portable dependency resolution in `uv pip compile`
48-
uv run pytest --cov=src --cov-report=xml --junitxml=junit.xml
48+
uv run pytest -s --cov=src --cov-report=xml --junitxml=junit.xml
4949
- name: Upload results to Codecov
5050
uses: codecov/codecov-action@v4
5151
with:

.github/workflows/release.yaml

+21
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,24 @@ jobs:
7070
alias: latest
7171
push: true
7272
workingDirectory: client
73+
publish-pypi:
74+
runs-on: ubuntu-latest
75+
needs: build-release
76+
permissions:
77+
# required for trusted publishing
78+
id-token: write
79+
steps:
80+
- name: Download build artifacts
81+
uses: actions/download-artifact@v4
82+
with:
83+
name: dist
84+
path: dist
85+
- name: Publish distribution 📦 to Test PyPI
86+
uses: pypa/gh-action-pypi-publish@release/v1
87+
with:
88+
skip-existing: true # tolerate release package file duplicates
89+
repository-url: https://test.pypi.org/legacy/
90+
- name: Publish distribution 📦 to PyPI
91+
uses: pypa/gh-action-pypi-publish@release/v1
92+
with:
93+
attestations: true

backend/pyproject.toml

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ requires = ["setuptools>=62", "setuptools-scm[toml]", "wheel"]
33
build-backend = "setuptools.build_meta"
44

55
[project]
6-
name = "jobq-server"
6+
name = "aai-jobq-server"
77
description = ""
88
version = "0.1.0"
99
readme = "README.md"
@@ -21,7 +21,8 @@ dependencies = [
2121
"uvicorn",
2222
"docker",
2323
"kubernetes",
24-
"jobq @ git+https://github.com/aai-institute/jobq.git@main#subdirectory=client",
24+
# FIXME: Revert to main branch once PR is merged
25+
"aai-jobq @ git+https://github.com/aai-institute/jobq.git@28b535e905e9b7dd4195c928ed02bbf186235f91#subdirectory=client",
2526
]
2627

2728
[project.optional-dependencies]

backend/requirements-dev.txt

+15-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# This file was autogenerated by uv via the following command:
22
# uv pip compile --all-extras -o requirements-dev.txt pyproject.toml
3+
aai-jobq @ git+https://github.com/aai-institute/jobq.git@28b535e905e9b7dd4195c928ed02bbf186235f91#subdirectory=client
4+
# via aai-jobq-server (pyproject.toml)
35
annotated-types==0.7.0
46
# via pydantic
57
anyio==4.4.0
@@ -8,7 +10,7 @@ anyio==4.4.0
810
# starlette
911
# watchfiles
1012
build==1.2.1
11-
# via jobq-server (pyproject.toml)
13+
# via aai-jobq-server (pyproject.toml)
1214
cachetools==5.4.0
1315
# via google-auth
1416
certifi==2024.7.4
@@ -33,12 +35,12 @@ dnspython==2.6.1
3335
# via email-validator
3436
docker==7.1.0
3537
# via
36-
# jobq-server (pyproject.toml)
38+
# aai-jobq-server (pyproject.toml)
3739
# testcontainers
3840
email-validator==2.2.0
3941
# via fastapi
4042
fastapi==0.112.0
41-
# via jobq-server (pyproject.toml)
43+
# via aai-jobq-server (pyproject.toml)
4244
fastapi-cli==0.0.5
4345
# via fastapi
4446
filelock==3.15.4
@@ -67,10 +69,8 @@ iniconfig==2.0.0
6769
# via pytest
6870
jinja2==3.1.4
6971
# via fastapi
70-
jobq @ git+https://github.com/aai-institute/jobq.git@3c3f339cac979bfa8b54a0019ce6a78045f2a33a#subdirectory=client
71-
# via jobq-server (pyproject.toml)
7272
kubernetes==30.1.0
73-
# via jobq-server (pyproject.toml)
73+
# via aai-jobq-server (pyproject.toml)
7474
markdown-it-py==3.0.0
7575
# via rich
7676
markupsafe==2.1.5
@@ -92,7 +92,7 @@ platformdirs==4.2.2
9292
pluggy==1.5.0
9393
# via pytest
9494
pre-commit==3.8.0
95-
# via jobq-server (pyproject.toml)
95+
# via aai-jobq-server (pyproject.toml)
9696
pyasn1==0.6.0
9797
# via
9898
# pyasn1-modules
@@ -101,8 +101,8 @@ pyasn1-modules==0.4.0
101101
# via google-auth
102102
pydantic==2.8.2
103103
# via
104+
# aai-jobq
104105
# fastapi
105-
# jobq
106106
pydantic-core==2.20.1
107107
# via pydantic
108108
pygments==2.18.0
@@ -111,13 +111,13 @@ pyproject-hooks==1.1.0
111111
# via build
112112
pytest==8.3.2
113113
# via
114-
# jobq-server (pyproject.toml)
114+
# aai-jobq-server (pyproject.toml)
115115
# pytest-cov
116116
# pytest-mock
117117
pytest-cov==5.0.0
118-
# via jobq-server (pyproject.toml)
118+
# via aai-jobq-server (pyproject.toml)
119119
pytest-mock==3.14.0
120-
# via jobq-server (pyproject.toml)
120+
# via aai-jobq-server (pyproject.toml)
121121
python-dateutil==2.9.0.post0
122122
# via kubernetes
123123
python-dotenv==1.0.1
@@ -126,7 +126,7 @@ python-multipart==0.0.9
126126
# via fastapi
127127
pyyaml==6.0.2
128128
# via
129-
# jobq
129+
# aai-jobq
130130
# kubernetes
131131
# pre-commit
132132
# uvicorn
@@ -142,7 +142,7 @@ rich==13.7.1
142142
rsa==4.9
143143
# via google-auth
144144
ruff==0.5.6
145-
# via jobq-server (pyproject.toml)
145+
# via aai-jobq-server (pyproject.toml)
146146
shellingham==1.5.4
147147
# via typer
148148
six==1.16.0
@@ -156,7 +156,7 @@ sniffio==1.3.1
156156
starlette==0.37.2
157157
# via fastapi
158158
testcontainers==4.8.0
159-
# via jobq-server (pyproject.toml)
159+
# via aai-jobq-server (pyproject.toml)
160160
typer==0.12.3
161161
# via fastapi-cli
162162
typing-extensions==4.12.2
@@ -174,7 +174,7 @@ urllib3==2.2.2
174174
# testcontainers
175175
uvicorn==0.30.5
176176
# via
177-
# jobq-server (pyproject.toml)
177+
# aai-jobq-server (pyproject.toml)
178178
# fastapi
179179
# fastapi-cli
180180
uvloop==0.19.0

backend/requirements.txt

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# This file was autogenerated by uv via the following command:
22
# uv pip compile --strip-extras -o requirements.txt pyproject.toml
3+
aai-jobq @ git+https://github.com/aai-institute/jobq.git@28b535e905e9b7dd4195c928ed02bbf186235f91#subdirectory=client
4+
# via aai-jobq-server (pyproject.toml)
35
annotated-types==0.7.0
46
# via pydantic
57
anyio==4.4.0
@@ -15,9 +17,9 @@ charset-normalizer==3.3.2
1517
click==8.1.7
1618
# via uvicorn
1719
docker==7.1.0
18-
# via jobq-server (pyproject.toml)
20+
# via aai-jobq-server (pyproject.toml)
1921
fastapi==0.112.0
20-
# via jobq-server (pyproject.toml)
22+
# via aai-jobq-server (pyproject.toml)
2123
google-auth==2.33.0
2224
# via kubernetes
2325
h11==0.14.0
@@ -26,10 +28,8 @@ idna==3.7
2628
# via
2729
# anyio
2830
# requests
29-
jobq @ git+https://github.com/aai-institute/jobq.git@3c3f339cac979bfa8b54a0019ce6a78045f2a33a#subdirectory=client
30-
# via jobq-server (pyproject.toml)
3131
kubernetes==30.1.0
32-
# via jobq-server (pyproject.toml)
32+
# via aai-jobq-server (pyproject.toml)
3333
oauthlib==3.2.2
3434
# via
3535
# kubernetes
@@ -42,15 +42,15 @@ pyasn1-modules==0.4.0
4242
# via google-auth
4343
pydantic==2.8.2
4444
# via
45+
# aai-jobq
4546
# fastapi
46-
# jobq
4747
pydantic-core==2.20.1
4848
# via pydantic
4949
python-dateutil==2.9.0.post0
5050
# via kubernetes
5151
pyyaml==6.0.2
5252
# via
53-
# jobq
53+
# aai-jobq
5454
# kubernetes
5555
requests==2.32.3
5656
# via
@@ -80,6 +80,6 @@ urllib3==2.2.2
8080
# kubernetes
8181
# requests
8282
uvicorn==0.30.6
83-
# via jobq-server (pyproject.toml)
83+
# via aai-jobq-server (pyproject.toml)
8484
websocket-client==1.8.0
8585
# via kubernetes

client/pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ requires = ["setuptools>=62", "setuptools-scm[toml]", "wheel"]
33
build-backend = "setuptools.build_meta"
44

55
[project]
6-
name = "jobq"
6+
name = "aai-jobq"
77
description = ""
88
version = "0.1.0"
99
readme = "README.md"

client/requirements-dev.txt

+25-25
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
annotated-types==0.7.0
44
# via pydantic
55
appnope==0.1.4
6-
# via jobq (pyproject.toml)
6+
# via aai-jobq (pyproject.toml)
77
babel==2.16.0
88
# via mkdocs-material
99
black==24.8.0
10-
# via jobq (pyproject.toml)
10+
# via aai-jobq (pyproject.toml)
1111
build==1.2.1
12-
# via jobq (pyproject.toml)
12+
# via aai-jobq (pyproject.toml)
1313
certifi==2024.8.30
1414
# via requests
1515
cfgv==3.4.0
@@ -18,7 +18,7 @@ charset-normalizer==3.3.2
1818
# via requests
1919
click==8.1.7
2020
# via
21-
# jobq (pyproject.toml)
21+
# aai-jobq (pyproject.toml)
2222
# black
2323
# mkdocs
2424
# mkdocstrings
@@ -31,17 +31,17 @@ coverage==7.6.1
3131
distlib==0.3.8
3232
# via virtualenv
3333
docker==7.1.0
34-
# via jobq (pyproject.toml)
34+
# via aai-jobq (pyproject.toml)
3535
docstring-parser==0.16
36-
# via jobq (pyproject.toml)
36+
# via aai-jobq (pyproject.toml)
3737
filelock==3.15.4
3838
# via virtualenv
3939
ghp-import==2.1.0
4040
# via mkdocs
4141
griffe==1.2.0
4242
# via mkdocstrings-python
4343
humanize==4.10.0
44-
# via jobq (pyproject.toml)
44+
# via aai-jobq (pyproject.toml)
4545
identify==2.6.0
4646
# via pre-commit
4747
idna==3.8
@@ -80,10 +80,10 @@ mergedeep==1.3.4
8080
# mkdocs
8181
# mkdocs-get-deps
8282
mike==2.1.3
83-
# via jobq (pyproject.toml)
83+
# via aai-jobq (pyproject.toml)
8484
mkdocs==1.6.1
8585
# via
86-
# jobq (pyproject.toml)
86+
# aai-jobq (pyproject.toml)
8787
# mike
8888
# mkdocs-autorefs
8989
# mkdocs-callouts
@@ -98,24 +98,24 @@ mkdocs-autorefs==1.2.0
9898
# mkdocstrings
9999
# mkdocstrings-python
100100
mkdocs-callouts==1.14.0
101-
# via jobq (pyproject.toml)
101+
# via aai-jobq (pyproject.toml)
102102
mkdocs-gen-files==0.5.0
103-
# via jobq (pyproject.toml)
103+
# via aai-jobq (pyproject.toml)
104104
mkdocs-get-deps==0.2.0
105105
# via mkdocs
106106
mkdocs-include-dir-to-nav==1.2.0
107-
# via jobq (pyproject.toml)
107+
# via aai-jobq (pyproject.toml)
108108
mkdocs-literate-nav==0.6.1
109-
# via jobq (pyproject.toml)
109+
# via aai-jobq (pyproject.toml)
110110
mkdocs-material==9.5.34
111-
# via jobq (pyproject.toml)
111+
# via aai-jobq (pyproject.toml)
112112
mkdocs-material-extensions==1.3.1
113113
# via mkdocs-material
114114
mkdocs-section-index==0.3.9
115-
# via jobq (pyproject.toml)
115+
# via aai-jobq (pyproject.toml)
116116
mkdocstrings==0.26.0
117117
# via
118-
# jobq (pyproject.toml)
118+
# aai-jobq (pyproject.toml)
119119
# mkdocstrings-python
120120
mkdocstrings-python==1.11.1
121121
# via mkdocstrings
@@ -144,15 +144,15 @@ platformdirs==4.2.2
144144
pluggy==1.5.0
145145
# via pytest
146146
pre-commit==3.8.0
147-
# via jobq (pyproject.toml)
147+
# via aai-jobq (pyproject.toml)
148148
pydantic==2.9.0
149149
# via
150-
# jobq (pyproject.toml)
150+
# aai-jobq (pyproject.toml)
151151
# pydantic-settings
152152
pydantic-core==2.23.2
153153
# via pydantic
154154
pydantic-settings==2.5.2
155-
# via jobq (pyproject.toml)
155+
# via aai-jobq (pyproject.toml)
156156
pygments==2.18.0
157157
# via
158158
# mkdocs-material
@@ -167,19 +167,19 @@ pyproject-hooks==1.1.0
167167
# via build
168168
pytest==8.3.2
169169
# via
170-
# jobq (pyproject.toml)
170+
# aai-jobq (pyproject.toml)
171171
# pytest-cov
172172
pytest-cov==5.0.0
173-
# via jobq (pyproject.toml)
173+
# via aai-jobq (pyproject.toml)
174174
python-dateutil==2.9.0.post0
175175
# via
176-
# jobq (pyproject.toml)
176+
# aai-jobq (pyproject.toml)
177177
# ghp-import
178178
python-dotenv==1.0.1
179179
# via pydantic-settings
180180
pyyaml==6.0.2
181181
# via
182-
# jobq (pyproject.toml)
182+
# aai-jobq (pyproject.toml)
183183
# mike
184184
# mkdocs
185185
# mkdocs-get-deps
@@ -197,9 +197,9 @@ requests==2.32.3
197197
# docker
198198
# mkdocs-material
199199
rich==13.8.0
200-
# via jobq (pyproject.toml)
200+
# via aai-jobq (pyproject.toml)
201201
ruff==0.6.4
202-
# via jobq (pyproject.toml)
202+
# via aai-jobq (pyproject.toml)
203203
six==1.16.0
204204
# via python-dateutil
205205
typing-extensions==4.12.2

client/requirements.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
annotated-types==0.7.0
44
# via pydantic
55
pydantic==2.9.0
6-
# via jobq (pyproject.toml)
6+
# via aai-jobq (pyproject.toml)
77
pydantic-core==2.23.2
88
# via pydantic
99
pyyaml==6.0.2
10-
# via jobq (pyproject.toml)
10+
# via aai-jobq (pyproject.toml)
1111
typing-extensions==4.12.2
1212
# via
1313
# pydantic

0 commit comments

Comments
 (0)