suchen
HeimBackend-EntwicklungPython-TutorialVertrauenswü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- oder pyproject.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.

Trusted publishing ‐ It has never been easier to publish your python packages

Trusted publishing ‐ It has never been easier to publish your python packages

Beschränken Sie anhand von Regeln oder Benennungsmustern, welche Zweige und Tags in dieser Umgebung bereitgestellt werden können.

Trusted publishing ‐ It has never been easier to publish your python packages

Begrenzen Sie basierend auf Benennungsmustern, welche Zweige und Tags in dieser Umgebung bereitgestellt werden können.

Trusted publishing ‐ It has never been easier to publish your python packages

Konfigurieren Sie die Ziel-Tags.

Trusted publishing ‐ It has never been easier to publish your python packages

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.

Trusted publishing ‐ It has never been easier to publish your python packages

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.

Trusted publishing ‐ It has never been easier to publish your python packages

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!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Python vs. C: Anwendungen und Anwendungsfälle verglichenPython vs. C: Anwendungen und Anwendungsfälle verglichenApr 12, 2025 am 12:01 AM

Python eignet sich für Datenwissenschafts-, Webentwicklungs- und Automatisierungsaufgaben, während C für Systemprogrammierung, Spieleentwicklung und eingebettete Systeme geeignet ist. Python ist bekannt für seine Einfachheit und sein starkes Ökosystem, während C für seine hohen Leistung und die zugrunde liegenden Kontrollfunktionen bekannt ist.

Der 2-stündige Python-Plan: ein realistischer AnsatzDer 2-stündige Python-Plan: ein realistischer AnsatzApr 11, 2025 am 12:04 AM

Sie können grundlegende Programmierkonzepte und Fähigkeiten von Python innerhalb von 2 Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master Control Flow (bedingte Anweisungen und Schleifen), 3.. Verstehen Sie die Definition und Verwendung von Funktionen, 4. Beginnen Sie schnell mit der Python -Programmierung durch einfache Beispiele und Code -Snippets.

Python: Erforschen der primären AnwendungenPython: Erforschen der primären AnwendungenApr 10, 2025 am 09:41 AM

Python wird in den Bereichen Webentwicklung, Datenwissenschaft, maschinelles Lernen, Automatisierung und Skripten häufig verwendet. 1) In der Webentwicklung vereinfachen Django und Flask Frameworks den Entwicklungsprozess. 2) In den Bereichen Datenwissenschaft und maschinelles Lernen bieten Numpy-, Pandas-, Scikit-Learn- und TensorFlow-Bibliotheken eine starke Unterstützung. 3) In Bezug auf Automatisierung und Skript ist Python für Aufgaben wie automatisiertes Test und Systemmanagement geeignet.

Wie viel Python können Sie in 2 Stunden lernen?Wie viel Python können Sie in 2 Stunden lernen?Apr 09, 2025 pm 04:33 PM

Sie können die Grundlagen von Python innerhalb von zwei Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master -Steuerungsstrukturen wie wenn Aussagen und Schleifen, 3. Verstehen Sie die Definition und Verwendung von Funktionen. Diese werden Ihnen helfen, einfache Python -Programme zu schreiben.

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer-Anfänger-Programmierbasis in Projekt- und problemorientierten Methoden?Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer-Anfänger-Programmierbasis in Projekt- und problemorientierten Methoden?Apr 02, 2025 am 07:18 AM

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 ...

Wie kann man vom Browser vermeiden, wenn man überall Fiddler für das Lesen des Menschen in der Mitte verwendet?Wie kann man vom Browser vermeiden, wenn man überall Fiddler für das Lesen des Menschen in der Mitte verwendet?Apr 02, 2025 am 07:15 AM

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

Was soll ich tun, wenn das Modul '__builtin__' beim Laden der Gurkendatei in Python 3.6 nicht gefunden wird?Was soll ich tun, wenn das Modul '__builtin__' beim Laden der Gurkendatei in Python 3.6 nicht gefunden wird?Apr 02, 2025 am 07:12 AM

Laden Sie Gurkendateien in Python 3.6 Umgebungsbericht Fehler: ModulenotFoundError: Nomodulennamen ...

Wie verbessert man die Genauigkeit der Jiebeba -Wortsegmentierung in der malerischen Spot -Kommentaranalyse?Wie verbessert man die Genauigkeit der Jiebeba -Wortsegmentierung in der malerischen Spot -Kommentaranalyse?Apr 02, 2025 am 07:09 AM

Wie löste ich das Problem der Jiebeba -Wortsegmentierung in der malerischen Spot -Kommentaranalyse? Wenn wir malerische Spot -Kommentare und -analysen durchführen, verwenden wir häufig das Jieba -Word -Segmentierungstool, um den Text zu verarbeiten ...

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion