Ce document explique comment appeler votre pipeline de livraison Cloud Deploy de votre système d'intégration continue (CI).
Intégrer Cloud Deploy à votre système CI est aussi simple que d'ajouter un appel à la CLI gcloud
de Cloud Deploy. Cet appel se produit au point de votre pipeline CI où votre application est prête à être déployée.
Avant de commencer
Les instructions de cette page partent du principe que vous remplissez déjà les conditions suivantes :
Vous avez activé les API applicables.
Vous avez défini au moins un pipeline de livraison. et inscrit(e) avec Cloud Deploy.
Vous avez défini au moins une cible, et votre pipeline de diffusion fait référence à cette cible.
Appeler Cloud Deploy à partir de votre pipeline CI
La commande suivante crée une version, ce qui appelle une instance de pipeline de livraison :
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.
Vous pouvez spécifier des noms de version dynamiques en incluant
'$DATE'
,'$TIME'
ou les deux. Par exemple, si vous appelez cette commande à 15h07 UTC,'rel-$TIME'
correspond àrel-1507
.'$DATE'
et'$TIME'
doivent être entre guillemets simples.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 finalement votre application.
[KEY=VALUE,...]
est une liste facultative d'une ou plusieurs annotations à appliquer à la version, sous la forme de paires clé-valeur.
Vous pouvez utiliser des annotations pour suivre la provenance des versions, par exemple en transmettant une annotation telle que
commitId=0065ca0
. Toutes les annotations de l'album sont renvoyées lorsque vous utilisez la méthodelist
ouget
pour la version, et s'affichent avec le paramètre dans la console Google Cloud, ce qui vous permet aussi de voir la provenance des versions.[IMAGE_LIST]
est une liste de remplacements de nom d'image/chemin d'image 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 obligatoire si vous transmettez
--build-artifacts
, qui identifie un Fichier de sortie des artefacts de compilation Skaffold.Lorsque Cloud Deploy affiche le fichier manifeste, le nom de l'image dans le fichier manifeste non affiché est remplacé par la référence de l'image complète dans fichier manifeste. Autrement dit,
image1
, dans cet exemple, se trouve dans le fichier manifeste non affiché et est remplacé dans le fichier manifeste affiché parpath/to/image1:v1@sha256:45db24
.
Exemple d'utilisation de références directes à des images
La commande suivante crée une version en transmettant une référence d'image directement, 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
Dans cet exemple, my-release
est le nom de la version. Si vous souhaitez générer un nom de version en fonction de la date ou de l'heure, vous pouvez inclure '$DATE'
ou 'TIME'
, ou les deux. L'heure est celle de l'UTC sur la machine sur laquelle vous appelez la commande. '$DATE'
et '$TIME'
doivent être entre guillemets simples.
Exemple :
gcloud deploy releases create rel-'$DATE'-'$TIME' \
--delivery-pipeline=web-app \
--region=us-central1 \
--images=image1=path/to/image1:v1@sha256:45db24
Dans cet exemple, la commande génère un nom de version avec le préfixe rel-
,
ainsi que la date et l'heure. Par exemple: rel-20220131-1507
.
Il est également courant d'utiliser le SHA Git dans le nom d'une version. Consultez le Exemples Cloud Build et Docker dans ce document.
Artefacts de compilation par rapport aux images
Sur la commande gcloud deploy releases create
, vous pouvez transmettre un ensemble
ou une référence à un fichier d'artefacts de compilation.
Utilisez
--images=[NAME=TAG,...]
pour faire référence à un ou plusieurs conteneurs individuels images.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 faire pointer vers un fichier de sortie d'artefacts de compilation Skaffold.
Exemples de Cloud Build, transmettant un fichier d'artefacts de compilation
Exemple de compilation Docker
Le fichier YAML suivant illustre Cloud Build pour Docker build l'image push, puis crée une version Cloud Deploy.
Cet exemple crée et transfère une image vers un dépôt d'artefacts, puis génère une commande pour créer une version, avec un nom de version basé sur l'ID de commit court SHA. Cet exemple doit être utilisé en tant que SCM Cloud Build
trigger, car il
s'appuie sur la variable $COMMIT_SHA
.
Cet exemple envoie une image vers un tag Docker qui est identique au hachage du commit du dépôt source. Ensuite, le même hachage de commit, sous la forme d'un tag Docker, est référencées à partir des arguments release-command.
steps:
# 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, "--images", "IMAGE_NAME=
, est remplacé par la référence complète de l'image dans le fichier manifeste affiché.
Exemple de configuration Cloud Build à l'aide de Skaffold
Le fichier YAML suivant correspond au contenu d'Cloud Build de compilation incluant un appel à Cloud Deploy pour créer sortie, avec un nom de sortie basé sur la date. Cet exemple montre aussi Skaffold utilisée pour la compilation.
steps:
- 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"
]
Connecter GitHub Actions à Cloud Deploy
Si vous utilisez GitHub Actions pour l'intégration continue ou d'autres logiciels
liées à la livraison, vous pouvez vous connecter à Cloud Deploy
la livraison continue
create-cloud-deploy-release
Action GitHub.
Connecter GitLab à Cloud Deploy
Si vous utilisez GitLab pour l'intégration continue, vous pouvez utiliser Composant GitLab Cloud Deploy create-cloud-deploy-release pour créer une version Cloud Deploy.
Vous pouvez également suivre le tutoriel complet pour utiliser GitLab avec Google Cloud.
Utiliser des annotations pour suivre la provenance des versions
L'indicateur --annotations=
vous permet d'appliquer une ou plusieurs paires clé-valeur arbitraires à la version créée par cette commande. Vous devez ajouter cet indicateur
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 est l'URL pointant vers la requête de pull, par exemple. Pour en savoir plus, consultez Utiliser des étiquettes et des annotations avec Cloud Deploy