Cette page explique comment utiliser Cloud Build pour compiler, tester, conteneuriser et déployer des applications Go, et comment enregistrer vos journaux de test dans Cloud Storage.
Avant de commencer
Les instructions de cette page partent du principe que vous connaissez bien Go. Notez en outre les points suivants:
-
Activez les API Cloud Build, Cloud Run et Artifact Registry, si ce n'est pas déjà fait.
Rôles requis pour activer les API
Pour activer les API, vous devez disposer de l'autorisation
serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles. - Pour exécuter les commandes
gcloudsur cette page, installez Google Cloud CLI. - Gardez à portée de main votre projet Go.
- Si vous souhaitez conteneuriser votre application Go à l'aide de Cloud Build, vous avez besoin d'un fichier
Dockerfileet du code source. - Si vous souhaitez stocker le conteneur créé dans Artifact Registry, créez un dépôt Docker dans Artifact Registry.
- Si vous souhaitez stocker les journaux de test dans Cloud Storage, créez un bucket dans Cloud Storage.
Autorisations IAM requises
Pour stocker les journaux de test dans Logging, accordez le rôle Créateur d'objets Storage (
roles/storage.objectCreator) pour le bucket Cloud Storage à votre compte de service de compilation.Pour stocker les images créées dans Artifact Registry, attribuez le rôle Rédacteur Artifact Registry (
roles/artifactregistry.writer) à votre 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 Go
L'image golang publique de Docker Hub est compatible avec la compilation utilisant des modules Go.
L'utilisation de cette image comme étape de compilation dans votre fichier de configuration Cloud Build vous permet d'appeler des commandes go dans l'image. Les arguments transmis à cette étape de compilation sont directement transmis à l'outil golang, ce qui vous permet d'exécuter n'importe quelle commande go dans cette image.
Cette section présente un exemple de fichier de configuration de compilation pour une application Go. Il comporte des étapes de compilation pour créer l'application, ajouter des tests unitaires et, une fois les tests réussis, conteneuriser et déployer l'application.
Pour compiler votre application Go :
Dans le répertoire racine de votre projet, créez un fichier de configuration Cloud Build nommé
cloudbuild.yaml.Compilation et test: si vous avez défini des tests unitaires dans votre application, vous pouvez configurer Cloud Build pour exécuter les tests en ajoutant les champs suivants dans une étape de compilation:
name: définissez la valeur de ce champ surgolangpour utiliser l'image golang de Docker Hub pour votre tâche.entrypoint: définissez la valeur de ce champ sur/bin/bash. Cela vous permet d'exécuter des commandes Bash multilignes directement à partir de l'étape de compilation.args: Le champargsd'une étape de compilation prend une liste d'arguments et la transmet à l'image à laquelle le champnamefait référence. Dans l'exemple suivant, le champargsutilise les arguments pour:- Exécuter l'outil de mise en forme du journal de test pour télécharger la sortie du journal de test
- Affichage de la sortie du journal.
- Enregistrement des résultats du test dans
sponge.log. - Génération des résultats dans
sponge.logdans un fichier XML JUnit Le nom du fichier XML JUnit est construit à l'aide de 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.
Conteneuriser l'application: après avoir ajouté l'étape de compilation pour vous assurer que les tests sont concluants, vous pouvez compiler l'application. Cloud Build fournit une image Docker prédéfinie que vous pouvez utiliser pour conteneuriser votre application Go. Pour conteneuriser votre application, ajoutez les champs suivants à l'étape de compilation:
name: définissez la valeur de ce champ surgcr.io/cloud-builders/dockerpour utiliser l'image Docker prédéfinie pour votre tâche.args: ajoutez les arguments de la commandedocker builden tant que valeurs pour ce champ.
L'étape de compilation suivante crée l'image
myimageet lui ajoute un tag correspondant à la version abrégée de votre ID de commit. L'étape de compilation utilise des substitutions pour l'ID de projet, le nom du dépôt et les valeurs SHA courtes. Ces valeurs sont donc automatiquement substituées au moment de la compilation. Notez que vous devrez créer ou disposer d'un dépôt Docker existant dans Artifact Registry pour stocker l'image.Transférez le conteneur vers Artifact Registry : vous pouvez stocker le conteneur créé dans Artifact Registry, un service Google Cloud qui vous permet de stocker, de gérer et de sécuriser les artefacts de compilation. Pour ce faire, vous devez disposer d'un dépôt Docker existant dans Artifact Registry. Pour configurer Cloud Build afin de stocker l'image dans un dépôt Docker Artifact Registry, ajoutez une étape de compilation avec les champs suivants:
name: définissez la valeur de ce champ surgcr.io/cloud-builders/dockerpour utiliser l'image du compilateurdockerofficielle pour votre tâche.args: ajoutez les arguments de la commandedocker pushen tant que valeurs de ce champ. Pour l'URL de destination, saisissez le dépôt Docker Artifact Registry dans lequel vous souhaitez stocker l'image.
L'étape de compilation suivante transfère l'image que vous avez créée lors de l'étape précédente vers Artifact Registry:
Déployez le conteneur sur Cloud Run: pour déployer l'image sur Cloud Run, ajoutez une étape de compilation avec les champs suivants:
name: définissez la valeur de ce champ surgoogle/cloud-sdkpour utiliser l'image gcloud CLI afin d'appeler la commandegcloudpour déployer l'image sur Cloud Run.args: ajoutez les arguments de la commandegcloud run deployen tant que valeurs de ce champ.
L'étape de compilation suivante déploie l'image créée précédemment sur Cloud Run:
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:
L'extrait de code suivant montre le fichier de configuration de compilation complet pour les étapes précédentes :
Démarrez la compilation à l'aide de la gcloud CLI ou des déclencheurs de compilation. Vous devez spécifier le nom du dépôt Artifact Registry lorsque vous démarrez la compilation.
Pour spécifier le dépôt Artifact Registry lorsque vous lancez la compilation à l'aide de la gcloud CLI :
gcloud builds submit --region=us-west2 --config=cloudbuild.yaml \ --substitutions=_AR_REPO_NAME="AR_REPO_NAME"Remplacez
AR_REPO_NAMEpar le nom de votre dépôt Artifact Registry.Pour spécifier le dépôt Artifact Registry lors de la compilation avec des déclencheurs de compilation, indiquez le nom de votre dépôt Artifact Registry dans le champ Variables de substitution lorsque vous créez le déclencheur de compilation.
Étapes suivantes
- Découvrez comment effectuer des déploiements bleu-vert sur Compute Engine.
- Découvrez comment créer des images de conteneurs.
- Découvrez comment résoudre les erreurs de compilation.