


Vertrauenswürdige Veröffentlichung – Es war noch nie einfacher, Ihre Python-Pakete zu veröffentlichen
Das Veröffentlichen von Python-Paketen war früher eine entmutigende Aufgabe, aber nicht mehr. Noch besser: Es ist deutlich sicherer geworden. Vorbei sind die Zeiten, in denen man mit Benutzernamen, Passwörtern oder API-Tokens jonglieren und sich dabei auf CLI-Tools verlassen musste. Beim Trusted Publishing stellen Sie PyPI einfach die Details Ihres GitHub-Repositorys zur Verfügung und GitHub Actions übernimmt die schwere Arbeit.
So veröffentlichen Sie Ihr Python-Paket mit Trusted Publishing
Ich werde einen Workflow einführen, der Ihr Paket auf TestPyPi veröffentlicht, wenn ein Tag erstellt wird (im Entwicklungszweig), oder auf PyPi, wenn Sie es mit dem Hauptzweig zusammenführen.
Bereiten Sie Ihr Paket für die Veröffentlichung vor
Stellen Sie sicher, dass Ihr Python-Paket den Verpackungsrichtlinien von PyPI entspricht. Sie benötigen mindestens:
- Eine
setup.py- oderpyproject.toml-Datei, die Ihre Paketmetadaten definiert. - Richtig strukturierter Code mit klarem Verzeichnislayout.
- Eine README-Datei zur Präsentation Ihres Projekts auf PyPI.
Eine detaillierte Checkliste finden Sie im Python Packaging-Benutzerhandbuch.
Konfigurieren Sie GitHub-Aktionen in Ihrem Repository
Beginnen wir mit der Erstellung einer neuen GitHub-Aktion .github/workflows/test-build-publish.yml.
name: test-build-publish on: [push, pull_request] permissions: contents: read jobs: build-and-check-package: name: Build & inspect our package. runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: hynek/build-and-inspect-python-package@v2
Diese Aktion erstellt Ihr Paket und lädt das erstellte Rad und die Quelldistribution (SDist) als GitHub Actions-Artefakte hoch.
Als nächstes fügen wir einen Schritt zum Veröffentlichen in TestPyPI hinzu. Dieser Schritt wird jedes Mal ausgeführt, wenn ein Tag erstellt wird, um sicherzustellen, dass der Build aus dem vorherigen Schritt erfolgreich abgeschlossen wurde. Ersetzen Sie PROJECT_OWNER und PROJECT_NAME durch die entsprechenden Werte für Ihr Repository.
test-publish: if: >- github.event_name == 'push' && github.repository == 'PROJECT_OWNER/PROJECT_NAME' && startsWith(github.ref, 'refs/tags') needs: build-and-check-package name: Test publish on TestPyPI runs-on: ubuntu-latest environment: test-release permissions: id-token: write steps: - name: Download packages built by build-and-check-package uses: actions/download-artifact@v4 with: name: Packages path: dist - name: Upload package to Test PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: repository-url: https://test.pypi.org/legacy/
In diesem Schritt werden die während des Build-Prozesses erstellten Artefakte heruntergeladen und zum Testen auf TestPyPI hochgeladen.
Im letzten Schritt laden wir das Paket auf PyPI hoch, wenn eine Pull-Anfrage in den Hauptzweig eingebunden wird.
publish: if: >- github.event_name == 'push' && github.repository == 'PROJECT_OWNER/PROJECT_NAME' && github.ref == 'refs/heads/main' needs: build-and-check-package name: Publish to PyPI runs-on: ubuntu-latest environment: release permissions: id-token: write steps: - name: Download packages built by build-and-check-package uses: actions/download-artifact@v4 with: name: Packages path: dist - name: Publish distribution ? to PyPI for push to main uses: pypa/gh-action-pypi-publish@release/v1
Konfigurieren Sie GitHub-Umgebungen
Um sicherzustellen, dass nur bestimmte Tags den Veröffentlichungsworkflow auslösen und die Kontrolle über Ihren Veröffentlichungsprozess behalten.
Erstellen Sie eine neue Testversion der Umgebung, indem Sie zu „Einstellungen“ -> „Einstellungen“ navigieren. Umgebungen in Ihrem GitHub-Repository.
Richten Sie die Umgebung ein und fügen Sie eine Bereitstellungs-Tag-Regel hinzu.
Beschränken Sie anhand von Regeln oder Benennungsmustern, welche Zweige und Tags in dieser Umgebung bereitgestellt werden können.
Begrenzen Sie basierend auf Benennungsmustern, welche Zweige und Tags in dieser Umgebung bereitgestellt werden können.
Konfigurieren Sie die Ziel-Tags.
Das Muster [0-9]*.[0-9]*.[0-9]* entspricht semantischen Versionierungs-Tags wie 1.2.3, 0.1.0 oder 2.5.1b3, schließt jedoch beliebige Tags wie aus Bugfix-567 oder Feature-Update.
Wiederholen Sie dies für die Release-Umgebung, um den Hauptzweig auf die gleiche Weise zu schützen, diesmal jedoch mit Ausrichtung auf den Hauptzweig.
Richten Sie ein PyPI-Projekt ein und verknüpfen Sie Ihr GitHub-Repository
Erstellen Sie ein Konto auf TestPyPI, falls Sie noch keins haben.
Navigieren Sie zu Ihrem Konto, „Veröffentlichen“ und fügen Sie einen neuen ausstehenden Herausgeber hinzu.
Verknüpfen Sie Ihr GitHub-Repository mit dem PyPI-Projekt, indem Sie dessen Namen, Ihren GitHub-Benutzernamen, den Repository-Namen, den Workflow-Namen (test-build-publish.yml) und den Umgebungsnamen (test-release) angeben.
Wiederholen Sie den obigen Vorgang für PyPI, wobei der Umgebungsname auf „Release“ eingestellt ist.
Testen Sie den Workflow
Wenn Sie jetzt ein Tag in Ihrem Entwicklungszweig erstellen, wird ein Release auf TestPyPI hochgeladen, und durch das Zusammenführen des Entwicklungszweigs mit dem Hauptzweig wird ein Release auf PyPI hochgeladen.
Was nicht abgedeckt war
Während dieser Leitfaden eine Einführung in vertrauenswürdige Veröffentlichungsworkflows bietet, gibt es zusätzliche Schritte und Best Practices, die Sie möglicherweise in Betracht ziehen. Durch das Einrichten von Zweigschutzregeln kann beispielsweise sichergestellt werden, dass nur autorisierte Mitarbeiter Tags übertragen oder in geschützte Zweige wie „main“ oder „develop“ einbinden können. Sie können auch Statusprüfungen erzwingen oder Pull-Request-Überprüfungen vor der Zusammenführung verlangen und so eine weitere Ebene der Qualitätssicherung hinzufügen.
Schauen Sie sich meine Python-Repository-Vorlage an, die zusätzliche Verbesserungen dieses Workflows abdeckt, z. B. das Erfordernis, dass Unit- und statische Tests bestanden werden müssen, das Überprüfen des Pakets mit Pyroma und das Sicherstellen, dass Ihr Tag mit der Version Ihres Pakets übereinstimmt, mit Vercheck.
Zusammenfassung
Wenn Sie bisher mit der Veröffentlichung Ihrer Arbeit zurückgehalten haben, ist jetzt der perfekte Zeitpunkt, Trusted Publishing auszuprobieren.
- Vorstellung von „vertrauenswürdigen Herausgebern“ Der Python Package Index Blog stellt eine sicherere Veröffentlichungsmethode vor, die keine Weitergabe langlebiger Passwörter oder API-Tokens an externe Systeme erfordert
- Mit einem vertrauenswürdigen Herausgeber auf PyPI veröffentlichen Die offizielle PyPI-Dokumentation für den Einstieg in die Verwendung vertrauenswürdiger Herausgeber auf PyPI.
- Erstellen und Testen von Python in den offiziellen GitHub-Dokumenten.
Das obige ist der detaillierte Inhalt vonVertrauenswürdige Veröffentlichung – Es war noch nie einfacher, Ihre Python-Pakete zu veröffentlichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Fastapi ...

Verwenden Sie Python im Linux -Terminal ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Über Pythonasyncio ...

Verständnis der Anti-Crawling-Strategie von Investing.com Viele Menschen versuchen oft, Nachrichten von Investing.com (https://cn.investing.com/news/latest-news) zu kriechen ...

Laden Sie die Gurkendatei in Python 3.6 Umgebungsfehler: ModulenotFoundError: Nomodulenamed ...

Diskussion über die Gründe, warum Pipeline -Dateien beim Lernen und Verwendung von Scapy -Crawlern für anhaltende Datenspeicher nicht geschrieben werden können, können Sie auf Pipeline -Dateien begegnen ...
