GCP: Python-Paket in der Produktion veröffentlichen
In dieser Anleitung wird erläutert, wie Sie mit Google Artifact Registry gemeinsam genutzten Python-Code als Paket verwalten. Dieser Ansatz eliminiert die Codeduplizierung zwischen Ihren Cloud-Funktionen und dem Server.
Schritt 1: Strukturieren Sie Ihren gemeinsamen Code
Erstellen Sie ein neues Python-Paket für Ihre gemeinsame Logik (z. B. common_logic).
common_logic/
├── setup.py
├── common_logic/
│ ├── __init__.py
Nach dem Login kopieren
Nach dem Login kopieren
Schritt 2: Erstellen Sie setup.py
Definieren Sie Ihre Paketkonfiguration in einer setup.py-Datei:
common_logic/
├── setup.py
├── common_logic/
│ ├── __init__.py
Nach dem Login kopieren
Nach dem Login kopieren
Schritt 3: Richten Sie Google Artifact Registry ein
- Aktivieren Sie die Artifact Registry API:
from setuptools import setup, find_packages
setup(
name="common_logic",
version="0.1.0",
packages=find_packages(),
install_requires=[
"pandas>=1.3.0",
],
author="Your Name",
author_email="your.email@example.com",
description="Common logic for app",
)
Nach dem Login kopieren
- Erstellen Sie ein Python-Repository:
gcloud services enable artifactregistry.googleapis.com
Nach dem Login kopieren
Schritt 4: Authentifizierung konfigurieren
- Erstellen Sie ein Dienstkonto:
gcloud artifacts repositories create python-packages \
--repository-format=python \
--location=us-central1 \
--description="Python packages repository"
Nach dem Login kopieren
- Erteilen Sie die erforderlichen Berechtigungen:
gcloud iam service-accounts create artifact-publisher \
--description="Service account for publishing to Artifact Registry"
Nach dem Login kopieren
- Erstellen Sie einen Schlüssel und laden Sie ihn herunter:
gcloud artifacts repositories add-iam-policy-binding python-packages \
--location=us-central1 \
--member="serviceAccount:artifact-publisher@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/artifactregistry.writer"
Nach dem Login kopieren
Schritt 5: Paket erstellen und hochladen
- Build-Tools installieren:
gcloud iam service-accounts keys create key.json \
--iam-account=artifact-publisher@${PROJECT_ID}.iam.gserviceaccount.com
Nach dem Login kopieren
- Erstellen Sie das Paket:
pip install build twine
Nach dem Login kopieren
- Binden für Artifact Registry konfigurieren:
python -m build
Nach dem Login kopieren
- Laden Sie das Paket hoch:
cat > ~/.pypirc << EOL
[distutils]
index-servers = common-logic-repo
[common-logic-repo]
repository: https://us-central1-python.pkg.dev/${PROJECT_ID}/python-packages/
username: _json_key_base64
password: $(base64 -w0 key.json)
EOL
Nach dem Login kopieren
Schritt 6: Verwenden Sie das Paket
In Cloud-Funktionen
- Erstellen Sie eine „requirements.txt“-Datei:
twine upload --repository common-logic-repo dist/*
Nach dem Login kopieren
- Verwenden Sie das Paket in Ihrer Cloud-Funktion:
--index-url https://pypi.org/simple
--extra-index-url https://oauth2accesstoken:${ARTIFACT_REGISTRY_TOKEN}@us-central1-python.pkg.dev/${PROJECT_ID}/python-packages/simple/
common-logic==0.1.0
Nach dem Login kopieren
Nach dem Login kopieren
Im Servercode
- Fügen Sie die Datei „Anforderungen Ihres Servers“ hinzu:
from common_logic import ...
def cloud_function(request):
# Your cloud function code using the imported functions
pass
Nach dem Login kopieren
- Verwenden Sie es in Ihrem Servercode:
--index-url https://pypi.org/simple
--extra-index-url https://oauth2accesstoken:${ARTIFACT_REGISTRY_TOKEN}@us-central1-python.pkg.dev/${PROJECT_ID}/python-packages/simple/
common-logic==0.1.0
Nach dem Login kopieren
Nach dem Login kopieren
Schritt 7: CI/CD-Integration
- Fügen Sie den Dienstkontoschlüssel als Geheimnis in Ihrem GitHub-Repository hinzu.
- Aktualisieren Sie Ihre Cloud Build-Konfiguration:
from common_logic import ...
# Your server code using the imported functions
Nach dem Login kopieren
Schritt 8: Versionsverwaltung
- Aktualisieren Sie die Version in setup.py.
- Erstellen und laden Sie die neue Version hoch.
- Anforderungen.txt sowohl in Cloud Functions als auch im Servercode aktualisieren.
- Stellen Sie beide Komponenten bereit.
Best Practices
- Verwenden Sie semantische Versionierung für Ihr Paket.
- Bestimmte Versionen in „requirements.txt“ anpinnen.
- Testen Sie neue Versionen gründlich, bevor Sie sie bereitstellen.
- Führen Sie ein Änderungsprotokoll über Versionsänderungen.
- Verwenden Sie Umgebungsvariablen für PROJECT_ID und LOCATION.
- Fügen Sie Ihrem Paket eine umfassende Dokumentation bei.
Häufige Probleme und Lösungen
Authentifizierungsfehler
- Überprüfen Sie die Dienstkontoberechtigungen.
- Stellen Sie sicher, dass key.json ordnungsgemäß codiert ist.
- Überprüfen Sie die .pypirc-Konfiguration.
Paket nicht gefunden
- Repository-URL-Format überprüfen.
- Überprüfen Sie, ob das Paket erfolgreich hochgeladen wurde.
- Stellen Sie sicher, dass „requirements.txt“ das richtige URL-Format verwendet.
Versionskonflikte
- Bestimmte Versionen von Abhängigkeiten anpinnen.
- Verwenden Sie virtuelle Umgebungen zum Testen.
- Abhängigkeitsanforderungen klar dokumentieren.
Das obige ist der detaillierte Inhalt vonGCP veröffentlicht Python-Paket in der Produktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!