- Změna kódu přes pull request, zelené CI (
python-ci.yml), schválení. - Samostatný PR "release": zvýšit
versionvpyproject.toml(SemVer, PEP 440) a doplnit sekci## [X.Y.Z]doCHANGELOG.md. Sloučit domain. - Správce vytvoří tag na commitu z
main:git tag vX.Y.Z && git push origin vX.Y.Z. Existující tagy se nepřepisují (žádnýgit tag -f, žádný force push). - Spustí se
publish.yml:verify: tag musí býtvX.Y.Z, commit musí být namain, sestaví se wheel+sdist,twine check --strict, název a verze v obou archivech musí odpovídat parametru a tagu, verze nesmí na PyPI existovat.publish: čeká na environmentpypi(schválení, pokud je dostupné), publikuje přes OIDC.release: vytvoří GitHub Release zCHANGELOG.mds odkazem na PyPI projekt.
- Ověřte instalaci v čistém venv:
pip install sysnet-priklad==X.Y.Z && python -c "import ...".
- Selhal
verifynebopublishpřed nahráním: opravte příčinu (mimo tag) a použijte Re-run; tag se nemění. Pokud je třeba změnit kód, vydejte novou verzi. - Verze už na PyPI je:
verifyselže záměrně. Nahrazení neexistuje. - Selhal jen
release: Re-run failed jobs. Job je idempotentní (vytvoří nebo aktualizuje release).
Publikovanou verzi na PyPI nelze přepsat ani znovu nahrát (ani po smazání). Postup:
- Vadnou verzi označte na PyPI jako yanked (Manage -> Release -> Yank, s důvodem). Instalace s přesným
pinem funguje dál, běžné
pip installji přeskočí. - Opravu vydejte jako vyšší verzi (např. 1.2.4), nikdy ne přes opětovné použití čísla.
- Do GitHub Release vadné verze doplňte upozornění; tag nemažte ani nepřepisujte.
- Okamžitě yank dotčených verzí; je-li to nutné, smazání verze/projektu provádí jen vlastník PyPI.
- Odeberte Trusted Publisher (PyPI -> Publishing), případně dočasně zrušte oprávnění uživatelů projektu.
- Zkontrolujte audit log PyPI, historii tagů a běhy workflow; zrušte všechny dlouhodobé tokeny (
PYPI_API_TOKEN). - Vydejte čistou verzi z ověřeného commitu, nové přihlašovací údaje a Trusted Publisher nastavte až po analýze.
- Informujte konzumenty (závislé repozitáře:
sysnet-auth->sysnet-pyutils,sysnet-docversion->sysnet-soft-delete).