Maison >développement back-end >Tutoriel Python >GCP publie le package Python en production

GCP publie le package Python en production

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-20 12:29:13622parcourir

GCP publish python package in production

GCP : publier un package Python en production

Ce guide explique comment utiliser Google Artifact Registry pour gérer le code Python partagé sous forme de package. Cette approche élimine la duplication de code entre vos fonctions Cloud et votre serveur.


Étape 1 : Structurez votre code partagé

Créez un nouveau package Python pour votre logique partagée (par exemple, common_logic).

common_logic/
├── setup.py
├── common_logic/
│   ├── __init__.py

Étape 2 : Créer setup.py

Définissez la configuration de votre package dans un fichier setup.py :

common_logic/
├── setup.py
├── common_logic/
│   ├── __init__.py

Étape 3 : Configurer le registre d'artefacts Google

  1. Activez l'API Artifact Registry :
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",
)
  1. Créez un dépôt Python :
   gcloud services enable artifactregistry.googleapis.com

Étape 4 : Configurer l'authentification

  1. Créez un compte de service :
   gcloud artifacts repositories create python-packages \
       --repository-format=python \
       --location=us-central1 \
       --description="Python packages repository"
  1. Accordez les autorisations nécessaires :
   gcloud iam service-accounts create artifact-publisher \
       --description="Service account for publishing to Artifact Registry"
  1. Créer et télécharger une clé :
   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"

Étape 5 : Créer et télécharger le package

  1. Installer les outils de build :
   gcloud iam service-accounts keys create key.json \
       --iam-account=artifact-publisher@${PROJECT_ID}.iam.gserviceaccount.com
  1. Construisez le package :
   pip install build twine
  1. Configurer Twine pour Artifact Registry :
   python -m build
  1. Téléchargez le package :
   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

Étape 6 : Utilisez le package

Dans les fonctions cloud

  1. Créez un fichier exigences.txt :
   twine upload --repository common-logic-repo dist/*
  1. Utilisez le package dans votre fonction Cloud :
   --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

Dans le code serveur

  1. Ajoutez au fichier requis.txt de votre serveur :
   from common_logic import ...

   def cloud_function(request):
       # Your cloud function code using the imported functions
       pass
  1. Utilisez-le dans le code de votre serveur :
   --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

Étape 7 : Intégration CI/CD

  1. Ajoutez la clé du compte de service comme secret dans votre référentiel GitHub.
  2. Mettez à jour votre configuration Cloud Build :
   from common_logic import ...
   # Your server code using the imported functions

Étape 8 : Gestion des versions

  1. Mettez à jour la version dans setup.py.
  2. Créez et téléchargez la nouvelle version.
  3. Mettez à jour le fichier Requirements.txt dans Cloud Functions et dans le code du serveur.
  4. Déployez les deux composants.

Meilleures pratiques

  • Utilisez le versionnement sémantique pour votre package.
  • Épinglez des versions spécifiques dans Requirements.txt.
  • Testez minutieusement les nouvelles versions avant de les déployer.
  • Tenir un journal des modifications de version.
  • Utilisez les variables d'environnement pour PROJECT_ID et LOCATION.
  • Incluez une documentation complète dans votre colis.

Problèmes courants et solutions

Erreurs d'authentification

  • Vérifiez les autorisations du compte de service.
  • Assurez-vous que key.json est correctement codé.
  • Vérifiez la configuration de .pypirc.

Paquet introuvable

  • Vérifiez le format de l'URL du référentiel.
  • Vérifiez si le package a été téléchargé avec succès.
  • Assurez-vous que le fichier requis.txt utilise le format d'URL correct.

Conflits de versions

  • Épinglez des versions spécifiques des dépendances.
  • Utilisez des environnements virtuels pour les tests.
  • Documenter clairement les exigences de dépendance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn