@@ -30,7 +30,7 @@ This directory contains GitHub Actions workflows for automated building, testing
3030
3131** What it does** :
3232
33- - Uses pre-built Docker container with Poetry installed
33+ - Uses pre-built Docker container with uv installed
3434- Builds wheel packages for selected projects
3535- Publishes to PyPI or TestPyPI
3636- Uploads build artifacts
@@ -68,7 +68,7 @@ The project supports independent release workflows for agent and simunet:
6868
6969``` bash
7070# Update agent version in pyproject.toml (optional, will be updated by workflow)
71- poetry version 1.0.0 -C projects/agent
71+ sed -i ' s/^ version = ".*"/version = " 1.0.0"/ ' projects/agent/pyproject.toml
7272
7373# Commit version changes (optional)
7474git add projects/agent/pyproject.toml
@@ -98,7 +98,7 @@ git push origin agent-1.0.0
9898
9999``` bash
100100# Update simunet version in pyproject.toml (optional, will be updated by workflow)
101- poetry version 2.5.0 -C projects/simunet
101+ sed -i ' s/^ version = ".*"/version = " 2.5.0"/ ' projects/simunet/pyproject.toml
102102
103103# Commit version changes (optional)
104104git add projects/simunet/pyproject.toml
@@ -165,7 +165,7 @@ Use this when you only need to release the agent:
1651651 . ** Update version number** (optional):
166166
167167 ``` bash
168- poetry version 1.0.0 -C projects/agent
168+ sed -i ' s/^ version = ".*"/version = " 1.0.0"/ ' projects/agent/pyproject.toml
169169 ```
170170
1711712 . ** Commit changes** (optional):
@@ -197,7 +197,7 @@ Use this when you need to release simunet:
1971971 . ** Update version number** (optional):
198198
199199 ``` bash
200- poetry version 2.5.0 -C projects/simunet
200+ sed -i ' s/^ version = ".*"/version = " 2.5.0"/ ' projects/simunet/pyproject.toml
201201 ```
202202
2032032 . ** Commit changes** (optional):
@@ -235,8 +235,8 @@ To test publishing before official release:
2352352 . ** Or use CLI** :
236236
237237 ``` bash
238- poetry publish -P projects/agent -r testpypi
239- poetry publish -P projects/simunet -r testpypi
238+ uv publish --directory projects/agent --publish-url https://test.pypi.org/legacy/ --token $TESTPYPI_TOKEN
239+ uv publish --directory projects/simunet --publish-url https://test.pypi.org/legacy/ --token $TESTPYPI_TOKEN
240240 ```
241241
2422423 . ** Verify on TestPyPI** :
@@ -382,12 +382,12 @@ The project uses prefixed tag patterns for independent releases:
382382
383383### 5. Build CI Image (` build-ci-image.yml ` )
384384
385- ** Purpose** : Creates a Docker image with Poetry and Python pre-installed for faster CI/CD
385+ ** Purpose** : Creates a Docker image with uv and Python pre-installed for faster CI/CD
386386
387387** What it includes** :
388388
389389- Python 3.12
390- - Poetry with multiproject and polylith plugins
390+ - uv package manager
391391- Git and essential build tools
392392
393393** Building the image** :
@@ -408,24 +408,24 @@ The `publish-pypi.yml` workflow uses this approach:
408408jobs :
409409 publish :
410410 runs-on : ubuntu-latest
411- container :
412- image : ghcr.io/${{ github.repository }}/python-poetry:3.12
413411 steps :
414412 - uses : actions/checkout@v4
415- # Poetry and plugins are already installed!
416- - run : poetry build-project -C projects/agent
413+ - uses : astral-sh/setup-uv@v4
414+ - run : uv python install
415+ - run : uv sync
416+ - run : uv build --directory projects/agent
417417` ` `
418418
419419**Benefits of using Docker image**:
420420
421- - ⚡ **Faster**: No need to install Poetry and plugins on every run
421+ - ⚡ **Faster**: No need to install uv on every run
422422- 🔒 **Consistent**: Same environment across all workflows
423423- 💾 **Cacheable**: Image layers are cached by Docker
424424- 🎯 **Reproducible**: Exact same versions every time
425425
426426**Image locations**:
427427
428- - GitHub Container Registry: ` ghcr.io/opensecflow/netdriver/python-poetry :3.12`
428+ - GitHub Container Registry: ` ghcr.io/opensecflow/netdriver/python-uv :3.12`
429429- Available tags : ` latest` , `master`, `<branch>-<sha>`
430430
431431**Benefits**:
@@ -485,20 +485,18 @@ container:
485485 password: ${{ secrets.DOCKER_PASSWORD }}
486486` ` `
487487
488- # ## 3. Verify Poetry is available
488+ # ## 3. Verify uv is available
489489
490- Poetry and plugins are pre-installed, so you can use them directly :
490+ uv is pre-installed, so you can use it directly :
491491
492492` ` ` yaml
493- - name: Verify Poetry installation
493+ - name: Verify uv installation
494494 run: |
495- poetry --version
496- poetry self show plugins
495+ uv --version
497496` ` `
498497
499498# # References
500499
501- - [Poetry Documentation](https://python-poetry.org/docs/)
502- - [Poetry Polylith Plugin](https://github.com/DavidVujic/poetry-polylith-plugin)
500+ - [uv Documentation](https://docs.astral.sh/uv/)
503501- [PyPI Publishing Guide](https://packaging.python.org/tutorials/packaging-projects/)
504502- [GitHub Actions - Python](https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python)
0 commit comments