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
Copier après la connexion
Copier après la connexion
É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
Copier après la connexion
Copier après la connexion
Étape 3 : Configurer le registre d'artefacts Google
- 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",
)
Copier après la connexion
- Créez un dépôt Python :
gcloud services enable artifactregistry.googleapis.com
Copier après la connexion
Étape 4 : Configurer l'authentification
- Créez un compte de service :
gcloud artifacts repositories create python-packages \
--repository-format=python \
--location=us-central1 \
--description="Python packages repository"
Copier après la connexion
- Accordez les autorisations nécessaires :
gcloud iam service-accounts create artifact-publisher \
--description="Service account for publishing to Artifact Registry"
Copier après la connexion
- 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"
Copier après la connexion
Étape 5 : Créer et télécharger le package
- Installer les outils de build :
gcloud iam service-accounts keys create key.json \
--iam-account=artifact-publisher@${PROJECT_ID}.iam.gserviceaccount.com
Copier après la connexion
- Construisez le package :
pip install build twine
Copier après la connexion
- Configurer Twine pour Artifact Registry :
python -m build
Copier après la connexion
- 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
Copier après la connexion
Étape 6 : Utilisez le package
Dans les fonctions cloud
- Créez un fichier exigences.txt :
twine upload --repository common-logic-repo dist/*
Copier après la connexion
- 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
Copier après la connexion
Copier après la connexion
Dans le code serveur
- 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
Copier après la connexion
- 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
Copier après la connexion
Copier après la connexion
Étape 7 : Intégration CI/CD
- Ajoutez la clé du compte de service comme secret dans votre référentiel GitHub.
- Mettez à jour votre configuration Cloud Build :
from common_logic import ...
# Your server code using the imported functions
Copier après la connexion
Étape 8 : Gestion des versions
- Mettez à jour la version dans setup.py.
- Créez et téléchargez la nouvelle version.
- Mettez à jour le fichier Requirements.txt dans Cloud Functions et dans le code du serveur.
- 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!