Maison >développement back-end >Tutoriel Python >Transférer des packages Python vers Artifact Registry à l'aide de Cloud Build

Transférer des packages Python vers Artifact Registry à l'aide de Cloud Build

Linda Hamilton
Linda Hamiltonoriginal
2024-11-27 16:09:10817parcourir

Pushing Python Packages to Artifact Registry Using Cloud Build

Google Artifact Registry est une solution puissante pour gérer et héberger les artefacts de packages Python de manière privée, sécurisée et évolutive. Ce guide fournit une procédure étape par étape pour transférer les fichiers .whl du package Python vers Artifact Registry à l'aide de Google Cloud Build et d'un secret (crédits) de Google Secret Manager pour l'authentification.


Conditions préalables

  1. Configuration du registre d'artefacts :

    • Créez un référentiel Python dans votre registre d'artefacts :
     gcloud artifacts repositories create python-packages \
       --repository-format=python \
       --location=us-central1 \
       --description="Python packages repository"
    
  2. Configuration secrète :

    • Stockez votre clé en tant que secret dans Google Secret Manager :
     gcloud secrets create creds --data-file=path/to/key.json
    
  • Accorder à Cloud Build l'accès au secret :(Facultatif, peut également être effectué à l'aide d'IAM)

     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. Autorisations de création de cloud : Assurez-vous que votre compte de service Cloud Build dispose des autorisations nécessaires pour accéder à Artifact Registry et à Secret Manager.

Configuration YAML de Cloud Build

Voici le fichier cloudbuild.yaml complet et fonctionnel :

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

Explication étape par étape

  1. Définir les options de construction :

    • Définissez le type de machine, le comportement de substitution et les options de journalisation.
    • Ces configurations garantissent des builds efficaces et des journaux gérables.
  2. Récupérer le secret key.json :

    • Utilisez l'accès aux versions de gcloud secrets pour récupérer le fichier key.json en toute sécurité depuis Secret Manager.
    • Enregistrez le fichier dans un emplacement connu (/workspace/key.json).
  3. Configurer .pypirc :

    • Générez dynamiquement un fichier .pypirc. Ce fichier est requis pour que Twine s'authentifie auprès du registre des artefacts.
    • Le mot de passe est un contenu codé en base64 de key.json.
  4. Construire et pousser le package :

    • Installer les outils nécessaires (ficelle, build).
    • Construisez le package Python (python -m build).
    • Utilisez le téléchargement Twine pour transférer le fichier .whl vers le registre des artefacts.

Déclencher la construction

Enregistrez le fichier cloudbuild.yaml et déclenchez la build ou pouvez vous connecter au référentiel github :

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

Points clés

  • Gestion sécurisée des secrets : le secret (key.json) est accessible de manière sécurisée à l'aide de Google Secret Manager.
  • Configuration dynamique : .pypirc est généré lors de la construction, garantissant qu'aucune donnée sensible n'est stockée dans le référentiel.
  • Téléchargement automatisé : le processus automatise la création et le transfert des packages, réduisant ainsi les interventions manuelles.

Validation

Une fois la construction terminée :

  1. Vérifiez le package téléchargé dans Artifact Registry :
 gcloud secrets create creds --data-file=path/to/key.json
  1. Vérifiez les erreurs ou les avertissements dans les journaux de build.

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