Cette page explique comment démarrer manuellement une compilation dans Cloud Build à l'aide de la CLI Google Cloud et de l'API Cloud Build.
Avant de commencer
- Si vous voulez vous servir des exemples de ligne de commande de ce guide, installez Google Cloud CLI.
- Pour compiler à l'aide de la configuration de compilation Cloud Build, compilez à l'aide d'un fichier de configuration de compilation.
- Pour compiler à l'aide d'un fichier
Dockerfile
, gardez votre fichierDockerfile
à portée de main. - Si votre compilation nécessite un code source, gardez-le à portée de main.
Autorisations IAM requises
- Si vous stockez des journaux de compilation dans le bucket des journaux par défaut, vous avez besoin des rôles Lecteur de projet et Éditeur Cloud Build pour exécuter une compilation.
- Si vous stockez des journaux de compilation dans le bucket de journaux créé par l'utilisateur, vous devez disposer du rôle Éditeur Cloud Build pour exécuter une compilation.
Pour obtenir des instructions sur l'attribution de rôles IAM, consultez la page Configurer l'accès aux ressources Cloud Build.
Exécuter des compilations
gcloud
Utiliser un fichier Dockerfile :
Votre fichier Dockerfile
contient toutes les informations nécessaires à la compilation d'une image Docker à l'aide de Cloud Build.
Pour exécuter une requête de compilation à l'aide de votre fichier Dockerfile
, exécutez la commande suivante à partir du répertoire contenant votre code d'application, votre fichier Dockerfile
et toutes les autres ressources :
gcloud builds submit --region=us-west2 --tag gcr.io/project-id/image-name .
Où :
- project-id est le nom de votre projet Cloud ;
- image-name est l'image à compiler.
.
indique que le code source se trouve dans le répertoire de travail actuel.
Le nom complet de l'image à compiler est `gcr.io/project-id/image-name. Les images envoyées vers Container Registry utilisent le format du nom de registre.
La commande gcloud builds submit
:
- compresse le code de l'application, le fichier
Dockerfile
et toutes les autres ressources contenues dans le répertoire courant, comme indiqué par.
; - importe les fichiers dans un bucket Cloud Storage ;
- lance une compilation à l'emplacement
us-west2
en utilisant les fichiers importés en entrée ; - marque l'image à l'aide du nom fourni ;
- envoie l'image compilée vers Container Registry.
Au fur et à mesure de la compilation, les résultats s'affichent dans la fenêtre de votre interface système ou de votre terminal. Une fois la compilation terminée, un résultat semblable aux lignes suivantes doit s'afficher :
DONE
---------------------------------------------------------------------------------
ID CREATE_TIME DURATION STATUS
$BUILD_ID 2016-10-28T15:21:18+00:00 12S SUCCESS
où $BUILD_ID
correspond à l'identifiant unique de la compilation.
Utiliser le fichier de configuration de compilation Cloud Build :
Pour envoyer une compilation à l'aide de la configuration de compilation, exécutez la commande suivante :
gcloud builds submit --region=us-west2 --config build-config source-code
où :
- build-config est le chemin d'accès du fichier de configuration de compilation
- source-code est le code source du chemin d'accès ou de l'URL
Lorsque vous exécutez gcloud builds submit
pour la première fois dans un projet Cloud, Cloud Build crée un bucket Cloud Storage nommé [YOUR_PROJECT_NAME]_cloudbuild
dans ce projet. Cloud Build utilise ce bucket pour stocker tout code source pouvant servir pour vos builds. Cloud Build ne supprime pas automatiquement le contenu de ce bucket. Pour supprimer les objets que vous n'utilisez plus pour les builds, vous pouvez soit définir la configuration du cycle de vie sur le bucket, soit supprimer les objets manuellement.
La commande suivante envoie la requête de compilation cloudbuild.yaml
à l'aide du code source archivé et stocké dans un bucket Cloud Storage.
gcloud builds submit --region=us-west2 --config cloudbuild.yaml \
gs://cloud-build-examples/node-docker-example.tar.gz
Vous pouvez utiliser .
pour spécifier que le code source se trouve dans le répertoire de travail courant :
gcloud builds submit --region=us-west2 --config cloudbuild.yaml .
gcloudignore : lors de l'inclusion du code source dans la compilation, la commande ci-dessus importe tous les fichiers du répertoire spécifié vers Google Cloud Platform pour compiler. Si vous souhaitez exclure certains fichiers du répertoire, vous pouvez inclure un fichier nommé .gcloudignore
dans le répertoire d'importation de premier niveau. Les fichiers spécifiés seront ignorés. Si aucun fichier .gcloudignore
ne figure dans le répertoire d'importation de premier niveau, mais qu'un fichier .gitignore
est présent, la CLI gcloud génère un fichier .gcloudignore
compatible avec Git qui respecte vos fichiers .gitignore
. Pour en savoir plus, consultez la documentation gcloudignore
.
Si vous n'avez pas de code source à transmettre à votre compilation, utilisez l'option --no-source
, où build-config est le chemin d'accès du fichier de configuration de compilation :
gcloud builds submit --region=us-west2 --config build-config --no-source
API
Pour envoyer la requête de compilation à l'aide de curl
:
Créez un fichier nommé
request.json
avec le contenu suivant :{ "source": { "storageSource": { "bucket": "cloud-build-examples", "object": "node-docker-example.tar.gz" } }, "steps": [{ "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/$PROJECT_ID/my-image", "." ] }], "images": [ "gcr.io/$PROJECT_ID/my-image" ] }
Dans cette requête de compilation, Cloud Build appelle l'étape de compilation
docker
avec les argumentsbuild -t gcr.io/$PROJECT_ID/cb-demo-img .
.Le nom complet de l'image à compiler est
gcr.io/$PROJECT_ID/cb-demo-img
. Les images envoyées vers Container Registry utilisent le format du nom de registre.Le code source à compiler se trouve dans une archive
tar
compressée,node-docker-example.tar.gz
. Le fichier est stocké dans un bucket Cloud Storage nommécloud-build-examples
.Exécutez la commande suivante, où
project-id
est l'ID de votre projet Cloud et REGION est l'une des régions compatibles :curl -X POST -T request.json -H "Authorization: Bearer $(gcloud config config-helper \ --format='value(credential.access_token)')" \ https://cloudbuild.googleapis.com/v1/projects/project-id/locations/REGION/builds
Dans cette commande,
curl
envoie le fichierrequest.json
dans une requête POST au point de terminaisonbuilds
pour la méthode API projects.builds.create.La commande affiche des détails sur la compilation dans la fenêtre d'interface système ou de terminal. Le résultat est une réponse JSON et ressemble à ce qui suit :
{ "name": "operations/build/$PROJECT-ID/NmZhZW...", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": $BUILD-ID, "status": "QUEUED", "source": { "storageSource": { "bucket": "cloud-build-examples", "object": "node-docker-example.tar.gz" } }, "createTime": "2017-05-12T18:58:07.341526Z", "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/$PROJECT-ID/cb-demo-img", "." ] } ], "timeout": "600s", "images": [ "gcr.io/$PROJECT-ID/cb-demo-img" ], "projectId": $PROJECT-ID, "logsBucket": "gs://...", "sourceProvenance": { "resolvedStorageSource": { "bucket": "cloud-build-examples", "object": "node-docker-example.tar.gz", "generation": "..." } }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/...?project=$PROJECT-ID" } } }
La réponse JSON est modélisée sous la forme de ressource
Operation
dans l'API Cloud Build. Le champmetadata
est modélisé sous la forme de ressourceBuild
. L'étatQUEUED
indique que la compilation est en attente d'exécution.
Étapes suivantes
- Découvrez comment créer des déclencheurs manuels.
- Découvrez comment compiler et déboguer en local.
- Découvrez comment afficher les résultats de la compilation.
- Découvrez comment résoudre les erreurs de compilation.