Cette page explique comment utiliser Cloud Build pour compiler et tester vos applications Go, importer vos artefacts dans Artifact Registry, générer des informations de provenance et 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:
-
Enable the Cloud Build, Cloud Run, and Artifact Registry APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Pour exécuter les commandes
gcloudsur cette page, installez Google Cloud CLI. - Préparez votre projet Go.
- Disposer d'un dépôt Go 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.
- Assurez-vous de connaître l'ID du compte de service d'exécution pour Cloud Run.
Créer un compte de service Cloud Build personnalisé
Créez un compte de service Cloud Build personnalisé en exécutant la commande suivante dans Google Cloud CLI :
gcloud iam service-accounts create cloud-build-go \
--description="Build and test Go applications" \
--display-name="Cloud Build Go" \
--project="PROJECT_NAME"
Vous utiliserez ce compte de service pour compiler et tester votre application Go.
Configurer les autorisations IAM
Pour configurer votre nouveau compte de service avec les autorisations requises pour créer et déployer des applications Go, procédez comme suit :
-
Dans la console Google Cloud , accédez à la page Autorisations settings Cloud Build :
Accédez au menu Compte de service et sélectionnez votre compte de service
cloud-build-go.Définissez l'état des rôles suivants sur Activé :
- Administrateur Cloud Run (
roles/run.admin) : permet à Cloud Build de déployer de nouveaux services sur Cloud Run.- Dans le panneau "Attribuer le rôle Utilisateur du compte de service", sélectionnez votre compte de service d'exécution, puis cliquez sur Attribuer une autorisation. Cette configuration permet à votre compte de service Cloud Build personnalisé d'emprunter l'identité du compte de service d'exécution lorsqu'il interagit avec le service géré Cloud Run. Pour en savoir plus, consultez Configurer l'emprunt d'identité du compte de service Cloud Build pour les services gérés.
- Administrateur de l'espace de stockage (
roles/storage.admin) : permet de lire et d'écrire dans Cloud Storage. - Rédacteur Artifact Registry (
roles/artifactregistry.writer) : permet d'extraire des images d'Artifact Registry et d'y écrire des données. - Rédacteur de journaux (
roles/logging.logWriter) : permet d'écrire des entrées de journal dans Cloud Logging. - Éditeur Cloud Build (
roles/cloudbuild.builds.editor) : permet à votre compte de service d'exécuter des builds.
- Administrateur Cloud Run (
Configurer des compilations Go
L'image golang publique de Docker Hub est compatible avec la compilation utilisant des modules Go.
Utiliser cette image comme étape de compilation dans votre fichier de configuration Cloud Build vous permet d'appeler des commandes go au sein de 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 explique comment créer un exemple de fichier de configuration de compilation pour une application Go à partir du dépôt Git cloud-build-samples. Le fichier de configuration de compilation comporte des étapes pour compiler l'application, ajouter des tests unitaires et, une fois les tests réussis, déployer l'application.
Pour compiler l'exemple d'application Go :
Configurer des tests unitaires : si vous avez défini des tests unitaires dans votre application, 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 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.steps: # Run tests and save to file - name: golang:1.23 entrypoint: /bin/bash args: - -c - | go install github.com/jstemmer/go-junit-report/v2@latest 2>&1 go test -timeout 1m -v ./... | /go/bin/go-junit-report -set-exit-code -iocopy -out ${SHORT_SHA}_test_log.xml
Importer dans Artifact Registry : dans votre fichier de configuration, utilisez le champ
goModulespour spécifier le chemin d'accès à votre application et votre dépôt Go dans Artifact Registry :# Upload Go module to artifact registry artifacts: goModules: - repositoryName: 'repositoryName' repositoryLocation: 'location' repositoryProjectId: 'projectId' sourcePath: 'sourcePath' modulePath: 'appPath' moduleVersion: 'version'Remplacez les valeurs suivantes :
- repositoryName : nom de votre dépôt Go dans Artifact Registry.
- location : emplacement de votre dépôt dans Artifact Registry.
- projectId : ID du projet Google Cloud contenant votre dépôt Artifact Registry.
- sourcePath : chemin d'accès au fichier
go.moddans l'espace de travail de compilation. - appPath : chemin d'accès à votre application packagée.
- version : numéro de version de votre application, au format numérique avec des points (par exemple,
v1.0.1).
Facultatif : Activer la génération de provenance
Cloud Build peut générer des métadonnées de provenance de compilation SLSA (Supply-chain Levels for Software Artifacts) vérifiables pour vous aider à sécuriser votre pipeline d'intégration continue.
Pour activer la génération de la provenance, ajoutez
requestedVerifyOption: VERIFIEDà la sectionoptionsde votre fichier de configuration.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 de la compilation et valider la provenance.
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:
# Save test logs to Google Cloud Storage artifacts: objects: location: gs://$_BUCKET_NAME/ paths: - ${SHORT_SHA}_test_log.xmlL'extrait de code suivant montre le fichier de configuration de compilation complet pour les étapes précédentes :
steps: # Run tests and save to file - name: golang:1.23 entrypoint: /bin/bash args: - -c - | go install github.com/jstemmer/go-junit-report/v2@latest 2>&1 go test -timeout 1m -v ./... | /go/bin/go-junit-report -set-exit-code -iocopy -out ${SHORT_SHA}_test_log.xml # Store golang modules in Google Artifact Registry artifacts: goModules: - repositoryName: 'repositoryName' repositoryLocation: 'location' repositoryProjectId: 'projectId' sourcePath: 'sourcePath' modulePath: 'appPath' moduleVersion: 'version'Démarrez la compilation à l'aide de la gcloud CLI ou créez un déclencheur de compilation :
Google Cloud CLI
gcloud builds submit --region=us-west2 --config=cloudbuild.yaml \
--substitutions=_AR_REPO_NAME="AR_REPO_NAME"
Déclencheurs de compilation
Suivez les étapes de la section Créer un déclencheur de compilation. Dans le champ Variables de substitution, vous devez également indiquer le nom de votre dépôt Artifact Registry et celui de votre bucket Cloud Storage pour les journaux de test.
Étapes suivantes
- Découvrez comment effectuer des déploiements bleu-vert sur Compute Engine.
- Découvrez comment résoudre les erreurs de compilation.