Ce document explique comment appeler votre pipeline de diffusion Google Cloud Deploy à partir de votre système d'intégration continue (CI).
Pour intégrer Google Cloud Deploy à votre système CI, il suffit d'ajouter un appel à la CLI Google Cloud Deploy gcloud
. Cet appel se produit au stade dans votre pipeline de CI auquel votre application est prête à être déployée.
Avant de commencer
Les instructions figurant sur cette page partent du principe que vous remplissez déjà les conditions suivantes:
Vous avez activé les API applicables.
Vous avez au moins un pipeline de diffusion défini et enregistré avec Google Cloud Deploy.
Vous avez au moins une cible définie et votre pipeline de diffusion fait référence à cette cible.
Appeler Google Cloud Deploy à partir de votre pipeline CI
La commande suivante crée une version, appelant ainsi une instance de pipeline de diffusion:
gcloud deploy releases create RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION
--annotations=[KEY=VALUE,...]
--images=[IMAGE_LIST]
Où...
RELEASE_NAME
est le nom que vous donnez à cette version. Veuillez indiquer une valeur.
PIPELINE_NAME
est le nom de votre pipeline de diffusion enregistré. Veuillez indiquer une valeur.
REGION
est la région dans laquelle vous créez cette version. La région ne doit pas nécessairement être celle dans laquelle vous déployez votre application.
[KEY=VALUE,...]
est une liste facultative d'une ou de plusieurs annotations à appliquer à la version, sous la forme de paires clé/valeur.
Vous pouvez utiliser des annotations pour suivre la provenance de la version, par exemple en transmettant une annotation telle que
commitId=0065ca0
. Toutes les annotations de la version sont renvoyées lorsque vous exécutez la commandelist
ouget
sur la version et s'affichent avec la version dans Google Cloud Console pour que vous puissiez également consulter la provenance de la version.[IMAGE_LIST]
est une liste de remplacements de noms d'images séparés par une virgule. Exemple :
--images=image1=path/to/image1:v1@sha256:45db24,image2=path/to/image2:v1@sha256:55xy18
.Cette valeur n'est pas nécessaire si vous transmettez
--build-artifacts
, qui identifie un fichier de sortie d'artefacts de compilation Skaffold.Lorsque Google Cloud Deploy affiche le fichier manifeste, le nom de l'image dans le fichier manifeste non affiché est remplacé par la référence complète de l'image dans le fichier manifeste rendu. C'est-à-dire que, dans cet exemple,
image1
est dans le fichier manifeste non affiché et est remplacé dans le fichier manifeste rendu parpath/to/image1:v1@sha256:45db24
.
Exemple utilisant la référence directe à une image
La commande suivante crée une nouvelle version en transmettant directement une référence à une image plutôt qu'un fichier d'artefacts de compilation:
gcloud deploy releases create my-release \
--delivery-pipeline=web-app \
--region=us-central1
--images=image1=path/to/image1:v1@sha256:45db24
Artefacts de compilation et images
La commande gcloud deploy releases create
vous permet de transmettre un ensemble de références d'images ou une référence de fichier d'artefacts de compilation.
Utilisez
--images=[NAME=TAG,...]
pour faire référence à une ou plusieurs images de conteneurs individuelles.Cette valeur est une référence à un ensemble de remplacements de nom d'image spécifique par un chemin complet d'image. Exemple :
gcloud deploy releases create my-release --images=image1=path/to/image1:v1@sha256:45db24
Utilisez
--build-artifacts=
pour pointer vers un fichier de sortie d'artefacts Skaffold.
Exemples Cloud Build, transfert d'un fichier d'artefacts de compilation
Exemple de compilation Docker
Le fichier YAML suivant présente Cloud Build pour un transfert d'image de compilation Docker et crée automatiquement une version de Google Cloud Deploy.
Cet exemple crée et transfère une image vers un dépôt d'artefacts, et crée une commande permettant de créer une version, avec un nom de version basé sur le SHA court du commit. Cet exemple doit être utilisé comme déclencheur Cloud Build SCM, car il repose sur la variable $COMMIT_SHA
.
Cet exemple transfère une image vers un libellé Docker identique au hachage de commit du dépôt source. Le même hachage de commit, comme un libellé Docker, est ensuite référencé à partir des arguments de la commande release.
# Build and tag using commit sha
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '.', '-t', 'REPO_LOCATION/$PROJECT_ID/IMAGE_NAME:${COMMIT_SHA}', '-f', 'Dockerfile']
# Push the container image
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'REPO_LOCATION/$PROJECT_ID/IMAGE_NAME:${COMMIT_SHA}']
# Create release in Google Cloud Deploy
- name: gcr.io/google.com/cloudsdktool/cloud-sdk
entrypoint: gcloud
args:
[
"deploy", "releases", "create", "rel-${SHORT_SHA}",
"--delivery-pipeline", "PIPELINE_NAME",
"--region", "us-central1",
"--annotations", "commitId=${REVISION_ID}",
"--images", "IMAGE_NAME=REPO_LOCATION/$PROJECT_ID/IMAGE_NAME:${COMMIT_SHA}"
]
Notez que le nom de l'image à la fin de cet exemple est "--images", "IMAGE_NAME=
dans le fichier manifeste rendu par la référence complète de l'image.
Exemple de configuration Cloud Build avec Skaffold
Le fichier YAML suivant contient le contenu d'une configuration de compilation Cloud Build qui inclut un appel à Google Cloud Deploy pour créer une version, avec un nom de version basé sur la date. Cet exemple présente également Skaffold utilisé pour la compilation.
- name: gcr.io/k8s-skaffold/skaffold
args:
- skaffold
- build
- '--interactive=false'
- '--file-output=/workspace/artifacts.json'
- name: gcr.io/google.com/cloudsdktool/cloud-sdk
entrypoint: gcloud
args:
[
"deploy", "releases", "create", "rel-${SHORT_SHA}",
"--delivery-pipeline", "PIPELINE_NAME",
"--region", "us-central1",
"--annotations", "commitId=${REVISION_ID}",
"--build-artifacts", "/workspace/artifacts.json"
]
Utiliser des annotations pour suivre la provenance de la version
L'option --annotations=
vous permet d'appliquer une ou plusieurs paires clé/valeur arbitraires à la version créée par cette commande. Vous devez ajouter cette option à la commande gcloud deploy releases create
.
Par exemple, vous pouvez utiliser les paires clé/valeur suivantes pour suivre la source de l'image à déployer.
Exemple :
gcloud deploy releases create web-app-1029rel \
--delivery-pipeline=web-app \
--region=us-central1
--annotations=commitId=0065ca0,author=user@company.com
--images=image1=path/to/image1:v1@sha256:45db24
Vous pouvez également créer une annotation dont la valeur correspond à l'URL pointant vers la demande d'extraction, par exemple. Pour en savoir plus, consultez la page Utiliser des libellés et des annotations avec Google Cloud Deploy.