Heim >Backend-Entwicklung >Python-Tutorial >Python-Pakete mit Cloud Build an Artifact Registry übertragen

Python-Pakete mit Cloud Build an Artifact Registry übertragen

Linda Hamilton
Linda HamiltonOriginal
2024-11-27 16:09:10819Durchsuche

Pushing Python Packages to Artifact Registry Using Cloud Build

Google Artifact Registry ist eine leistungsstarke Lösung zum privaten, sicheren und skalierbaren Verwalten und Hosten von Python-Paketartefakten. Diese Anleitung bietet eine Schritt-für-Schritt-Anleitung zum Übertragen von .whl-Dateien des Python-Pakets in die Artifact Registry mithilfe von Google Cloud Build und einem Geheimnis (Creds) von Google Secret Manager zur Authentifizierung.


Voraussetzungen

  1. Artefaktregistrierungs-Setup:

    • Erstellen Sie ein Python-Repository in Ihrer Artifact Registry:
     gcloud artifacts repositories create python-packages \
       --repository-format=python \
       --location=us-central1 \
       --description="Python packages repository"
    
  2. Geheimes Setup:

    • Speichern Sie Ihren Schlüssel als Geheimnis im Google Secret Manager:
     gcloud secrets create creds --data-file=path/to/key.json
    
  • Gewähren Sie Cloud Build-Zugriff auf das Geheimnis: (Optional, kann auch mit IAM erfolgen)

     gcloud secrets add-iam-policy-binding creds \
       --member="serviceAccount:$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')@cloudbuild.gserviceaccount.com" \
       --role="roles/secretmanager.secretAccessor"
    
  1. Cloud Build-Berechtigungen: Stellen Sie sicher, dass Ihr Cloud Build-Dienstkonto über die erforderlichen Berechtigungen für den Zugriff auf Artifact Registry und Secret Manager verfügt.

Cloud Build YAML-Konfiguration

Hier ist die vollständig funktionierende cloudbuild.yaml-Datei:

options:
  machineType: E2_HIGHCPU_8
  substitutionOption: ALLOW_LOOSE
  logging: CLOUD_LOGGING_ONLY

steps:
  # Step 1: Access the secret `creds` and save it as `key.json`
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: bash
    args:
      - '-c'
      - |
        gcloud secrets versions access latest --secret=creds > /workspace/key.json

  # Step 2: Configure `.pypirc` with the Artifact Registry credentials
  - name: 'python'
    entrypoint: bash
    args:
      - '-c'
      - |
        cat > ~/.pypirc << EOL
        [distutils]
        index-servers = tower-common-repo

        [tower-common-repo]
        repository: https://us-central1-python.pkg.dev/$PROJECT_ID/python-packages/
        username: _json_key_base64
        password: $(base64 -w0 /workspace/key.json)
        EOL

        # Step 3: Build and upload the Python package
        pip install twine build && \
        python -m build && \
        twine upload --repository tower-common-repo dist/* --verbose

Schritt-für-Schritt-Erklärung

  1. Build-Optionen definieren:

    • Legen Sie den Maschinentyp, das Ersetzungsverhalten und die Protokollierungsoptionen fest.
    • Diese Konfigurationen gewährleisten effiziente Builds und verwaltbare Protokolle.
  2. key.json Secret abrufen:

    • Verwenden Sie den Zugriff auf gcloud Secrets-Versionen, um die Datei key.json sicher vom Secret Manager abzurufen.
    • Speichern Sie die Datei an einem bekannten Speicherort (/workspace/key.json).
  3. .pypirc konfigurieren:

    • Generieren Sie dynamisch eine .pypirc-Datei. Diese Datei ist für die Authentifizierung von Twine bei der Artifact Registry erforderlich.
    • Das Passwort ist Base64-codierter Inhalt von key.json.
  4. Paket erstellen und pushen:

    • Installieren Sie die erforderlichen Werkzeuge (Schnur, Bau).
    • Erstellen Sie das Python-Paket (python -m build).
    • Verwenden Sie Twine-Upload, um die .whl-Datei in die Artifact Registry zu übertragen.

Auslösen des Builds

Speichern Sie die Datei cloudbuild.yaml und lösen Sie den Build aus oder stellen Sie eine Verbindung zum Github-Repository her:

 gcloud artifacts repositories create python-packages \
   --repository-format=python \
   --location=us-central1 \
   --description="Python packages repository"

Wichtige Punkte

  • Sichere Geheimnisverwaltung: Der Zugriff auf das Geheimnis (key.json) erfolgt sicher mit Google Secret Manager.
  • Dynamische Konfiguration: .pypirc wird während des Builds generiert, um sicherzustellen, dass keine sensiblen Daten im Repository gespeichert werden.
  • Automatisierter Upload: Der Prozess automatisiert das Erstellen und Verschieben von Paketen und reduziert so manuelle Eingriffe.

Validierung

Nach Abschluss des Builds:

  1. Überprüfen Sie das hochgeladene Paket im Artifact Registry:
 gcloud secrets create creds --data-file=path/to/key.json
  1. Überprüfen Sie die Build-Protokolle auf Fehler oder Warnungen.

Das obige ist der detaillierte Inhalt vonPython-Pakete mit Cloud Build an Artifact Registry übertragen. 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