Cette page explique comment configurer Cloud Build pour compiler et tester vos applications Python, importer vos artefacts dans Artifact Registry, générer des informations sur la provenance et enregistrer vos journaux de test dans Cloud Storage.
Cloud Build permet d'exécuter vos tâches à l'aide de n'importe quelle image de conteneur
disponible publiquement. L'image python
publique de Docker Hub est fournie avec les outils python
et pip
préinstallés. Vous pouvez configurer Cloud Build pour installer des dépendances, compiler, et exécuter des tests unitaires à l'aide de ces outils.
Avant de commencer
Les instructions de cette page partent du principe que vous connaissez bien Python. Autres caractéristiques :
-
Enable the Cloud Build, Artifact Registry, and Cloud Storage APIs.
- Pour exécuter les commandes
gcloud
sur cette page, installez Google Cloud CLI. - Gardez à portée de main votre projet Python.
- disposer d'un dépôt Python dans Artifact Registry ; Si vous n'en avez pas, créez un dépôt.
- Si vous souhaitez stocker les journaux de test dans Cloud Storage, créez un bucket dans Cloud Storage.
Autorisations IAM requises
Pour stocker des journaux de test dans Logging, attribuez le rôle Créateur des objets de stockage (
roles/storage.objectCreator
) pour le bucket Cloud Storage à votre compte de service de compilation.Pour stocker les images compilées dans Artifact Registry, accordez le rôle Rédacteur Artifact Registry (
roles/artifactregistry.writer
) au compte de service de compilation.
Pour obtenir des instructions sur l'attribution de rôles, consultez la page Attribuer un rôle à l'aide de la page IAM.
Configurer des compilations Python
Cette section décrit un exemple de fichier de configuration de compilation pour une application Python. Il comporte des étapes de compilation pour installer les exigences, ajouter des tests unitaires et une fois les tests réussis, créer et déployer l'application.
Dans le répertoire racine de votre projet, créez un fichier de configuration Cloud Build nommé
cloudbuild.yaml
.Conditions d'installation: l'image
python
de Docker Hub est fournie préinstallée avecpip
. Pour installer des dépendances à partir depip
, ajoutez une étape de compilation avec les champs suivants:name
: définissez la valeur de ce champ surpython
oupython:<tag>
pour utiliser la à partir de Docker Hub pour cette tâche. Pour obtenir la liste des balises disponibles pour d'autres images Python, consultez la documentation de référence Docker Hub pour l'image Python.entrypoint
: la définition de ce champ remplace le point d'entrée par défaut de l'image référencée dansname
. Définissez la valeur de ce champ surpip
pour appelerpip
en tant que point d'entrée de l'étape de compilation et exécuter les commandespip
.args
: Le champargs
d'une étape de compilation prend une liste d'arguments et la transmet à l'image à laquelle le champname
fait référence. Transmettez les arguments pour exécuter la commandepip install
dans ce champ. L'option--user
de la commandepip install
garantit que les étapes de compilation suivantes peuvent accéder aux modules installés dans cette étape de compilation.
L'étape de compilation suivante ajoute des arguments aux exigences d'installation :
steps: - name: 'python' entrypoint: 'python' args: ['-m', 'pip', 'install', '--upgrade', 'pip'] - name: python entrypoint: python args: ['-m', 'pip', 'install', 'build', 'pytest', 'Flask', '--user']
Ajouter des tests unitaires: si vous avez défini des tests unitaires dans votre application à l'aide d'un framework de test tel que
pytest
, vous pouvez configurer Cloud Build pour qu'il exécute les tests en ajoutant les champs suivants dans une étape de compilation:name
: définissez la valeur de ce champ surpython
pour utiliser l'image Python de Docker Hub pour votre tâche.entrypoint
: définissez la valeur de ce champ surpython
pour exécuter les commandespython
.args
: ajoutez les arguments pour exécuter la commandepython pytest
.
L'étape de compilation suivante enregistre la sortie du journal
pytest
dans un fichier XML JUnit. Le nom de ce fichier est créé à l'aide de$SHORT_SHA
, la version courte de l'ID de commit associé à votre compilation. Une étape de compilation ultérieure enregistrera les journaux de ce fichier dans Cloud Storage.- name: 'python' entrypoint: 'python' args: ['-m', 'pytest', '--junitxml=${SHORT_SHA}_test_log.xml']
Compilation: dans votre fichier de configuration de compilation, définissez le compilateur et le
args
pour compiler votre application:name
: définissez la valeur de ce champ surpython
pour utiliser l'image Python de Docker Hub pour votre tâche.entrypoint
: définissez la valeur de ce champ surpython
pour exécuter les commandespython
.args
: ajoutez les arguments pour exécuter votre compilation.
L'étape de compilation suivante lance la compilation :
- name: 'python' entrypoint: 'python' args: ['-m', 'build']
Importer dans Artifact Registry :
Dans votre fichier de configuration, ajoutez le champ
pythonPackages
et spécifiez votre dépôt Python dans Artifact Registry:artifacts: pythonPackages: - repository: 'https://LOCATION-python.pkg.dev/PROJECT-ID/REPOSITORY' paths: ['dist/*']
Remplacez les valeurs suivantes :
- PROJECT-ID est l'ID du projet Google Cloud contenant votre dépôt Artifact Registry.
- REPOSITORY est l'ID du dépôt.
- LOCATION est l'emplacement régional ou multirégional du dépôt.
Facultatif: Activer la génération de la provenance
Cloud Build peut générer des prédictions Compilation Niveaux de la chaîne d'approvisionnement pour les artefacts logiciels (SLSA) des métadonnées de provenance pour vous aider à sécuriser votre pipeline d'intégration continue.
Pour activer la génération de la provenance, ajoutez
requestedVerifyOption: VERIFIED
à la sectionoptions
de votre fichier de configuration.Enregistrer les journaux de test dans Cloud Storage: vous pouvez configurer Cloud Build pour stocker tous les journaux de test dans Cloud Storage en spécifiant un emplacement de bucket et un chemin d'accès existants vers les journaux de test. L'étape de compilation suivante stocke les journaux de test que vous avez enregistrés dans le fichier XML JUnit dans un bucket Cloud Storage:
artifacts: objects: location: 'gs://${_BUCKET_NAME}/' paths: - '${SHORT_SHA}_test_log.xml'
Démarrer votre build: manuellement ou à l'aide de déclencheurs de compilation.
Une fois la compilation terminée, vous pouvez afficher les détails du dépôt. dans Artifact Registry.
Vous pouvez également afficher les métadonnées de provenance des compilations et en valider la provenance.
Étape suivante
- Découvrez comment afficher les résultats de la compilation.
- Découvrez comment protéger les builds.
- Découvrez comment créer et conteneuriser des applications Python.
- Découvrez comment utiliser des dépendances privées.
- Découvrez comment effectuer des déploiements bleu-vert sur Compute Engine.
- Découvrez comment résoudre les erreurs de compilation.