Wie automatisiere ich die Versionierung über CI in einem Python-Projekt?Python

Python-Programme
Anonymous
 Wie automatisiere ich die Versionierung über CI in einem Python-Projekt?

Post by Anonymous »

Ich habe ein Python-Projekt, das pyproject.toml verwendet und möchte die beste Methode herausfinden, um die Versionserhöhung zu automatisieren. Die Anforderungen sind:
  • Jedes Mal, wenn das Paket geändert wird (z. B. src/**, pyproject.toml oder Anforderungen.txt), wird die Patch-Version automatisch erhöht und ein neues Paket veröffentlicht.
  • Ermöglicht bei Bedarf die manuelle Erhöhung der Haupt-/Nebenversionen
Meine Lösung bestand bisher darin, in den Repo-Einstellungen eine Variable $NEXT_VERSION festzulegen. Dies definiert, welche Version bei der nächsten Veröffentlichung des Pakets verwendet werden soll. Dann enthält mein pyproject.toml:

Code: Select all

[tool.hatch.version]
source = "env"
variable = "NEXT_VERSION"
Jedes Mal, wenn ich eine Änderung in den angegebenen Dateien zusammenführe, veröffentlicht die CI-Pipeline das Paket und erhöht dann die Patch-Version von $NEXT_VERSION, die bei der nächsten Veröffentlichung verwendet wird.
Wenn ich die Haupt-/Nebenversion erhöhen muss, gehe ich vor dem Zusammenführen der Änderung zu den Repo-Einstellungen und aktualisiere diese $NEXT_VERSION auf das, was ich möchte sein.
Das erfüllt, was ich brauche, wird aber nervig, wenn ich von der Quelle installiere; Ich muss immer diese Umgebungsvariable definieren, sonst schlägt der Build fehl:

Code: Select all

NEXT_VERSION=0.0.1 pip install .
Ich habe darüber nachgedacht, die Strategie auf die Definition der Version in pyproject.toml oder src/myproject/__init__.py umzustellen und die Hatch-CLI zum Inkrementieren zu verwenden, z. B.: Hatch-Versionspatch.
Aber das macht die CI-Pipeline etwas komplizierter, da die Pipeline nach dem Inkrementieren der Version diese Änderung dann in den Zweig übernehmen und von hier aus veröffentlichen und taggen muss Aktualisiertes Commit.
Also unterm Strich: Was ist die allgemeine/Best Practice für die Automatisierung der Inkrementierung der Paketversion in Python-Projekten?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post