CI: installs whichever uv is newest and never audits the locked dependencies, here and in the other five Python plugin repositories #13
Labels
No labels
bug
documentation
enhancement
security
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo-apprise#13
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found on 2026-09-29 in a read-only review of postulo-apprise at
7637d899d, comparing its workflows with the core's (postulo 95348908d) after postulo/postulo#233.The core pinned uv and audits its lock on every push and weekly. The plugin workflows were not brought along: each installs whatever uv the installer serves that day, and none audits anything. It is filed here because this plugin brings the largest tree of its own into an instance.
.forgejo/workflows/ci.yml:45-48and.forgejo/workflows/release.yml:38-41:curl -LsSf https://astral.sh/uv/install.sh | sh..forgejo/workflows/ci.yml:50-53:uv sync --locked --python 3.14, the only Python tested, againstrequires-python = ">=3.12"inpyproject.toml:6.pip-auditstep and noschedule:trigger in either file..forgejo/workflows/ci.yml:47,release.yml:39), postulo-helloworld (ci.yml:46), postulo-imap (ci.yml:47,release.yml:40), postulo-dav (ci.yml:47,release.yml:39) and postulo-mcp (ci.yml:22); none of them has an audit step either..forgejo/workflows/ci.yml:31-36setsUV_VERSION: "0.12.17"with the reason, "a lock file read by an unpinned tool is pinned only in name (#233)", and itssecurityjob (ci.yml:264-299) exports the lock without the project and runspip-audit==2.10.1 --strictover it, on push and on the weeklycron.pyproject.toml:20declaresapprise>=1.9, anduv.lockholds Apprise 1.13.1 withrequests,requests-oauthlib,PyYAML,Markdown,certifiandclick. When an advisory is published against one of them, the core's audit says nothing, because the core does not depend on Apprise, and no job here looks. The lock is what the tests run against, not what an instance receives (the installer resolves a plugin's requirements from PyPI at install time,plugins/installing.py:26-27), so the audit's use is to tell the maintainer when the floor independencieshas to rise; today nothing tells them.https://astral.sh/uv/${UV_VERSION}/install.sh) with theUV_VERSIONthe core names. Add a job that runsuv export --no-emit-project --all-groups --format requirements-txt --no-hashesand a pinnedpip-audit --strictover the result, on push and on a weekly schedule. Either add 3.12 and 3.13 to the test job or raiserequires-pythonto what is tested. The same change applies to the five repositories listed above.Related to postulo/postulo#233 (closed), which fixed the core only.
Done when
astral.sh/uv/install.shwithout a version, andUV_VERSIONequals the core's.pip-audit, and fails when run against a lock holding a dependency with a known advisory.tests/(for exampletests/test_workflows.py) reads.forgejo/workflows/*.ymland fails on an unversioned uv installer line; it fails today.curl | shand audits no dependency, and no existing issue names this repository #15