Intégrer Cloud Deploy à d'autres systèmes

Vous pouvez intégrer Cloud Deploy à certains des autres systèmes sur lesquels vous dépendez pour la livraison de logiciels. Cette page explique comment intégrer Cloud Deploy aux éléments suivants:

  • Outils de test
  • Gestion des workflows

Pour savoir comment appeler Cloud Deploy à partir de votre pipeline CI, consultez la page Intégrer à votre système CI.

Avant de commencer

Les instructions de cette page supposent que vous remplissez déjà les conditions suivantes:

Intégrer les tests automatisés

Vous pouvez utiliser Cloud Deploy avec Pub/Sub pour intégrer des tests à votre pipeline de livraison. Vous pouvez ainsi promouvoir automatiquement la version pour une livraison continue.

Vous pouvez également utiliser des annotations sur un déploiement pour fournir un lien vers les résultats du test. Pour en savoir plus, consultez Utiliser des étiquettes et des annotations avec Cloud Deploy.

Utiliser Pub/Sub pour automatiser la promotion

  1. Écoutez les messages Pub/Sub à partir du sujet clouddeploy-operations.

    Le message contient les attributs suivants:

    • Action: SUCCEED
    • ResourceType: Rollout
    • Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...
  2. Lorsque vous recevez une notification indiquant que le déploiement a réussi, exécutez vos tests sur l'application déployée.

  3. Une fois vos tests réussis, appelez Cloud Deploy pour passer automatiquement à l'étape suivante:

    gcloud deploy releases promote RELEASE_NAME \
    --delivery-pipeline=PIPELINE_NAME \
    --region=REGION \
    --annotations=KEY=VALUE,...
    

    où :

    • RELEASE_NAME

      est le nom de la version. Veuillez indiquer une valeur.

    • PIPELINE_NAME

      est le nom du pipeline de livraison qui gère cette version. Cette valeur est obligatoire.

    • REGION

      correspond à la région dans laquelle le pipeline s'exécute. Si vous avez défini la propriété deploy/region, vous pouvez omettre cet indicateur.

    • KEY=VALUE,...

      est une liste d'une ou plusieurs paires de chaînes clé/valeur, séparées par une virgule, qui peuvent contenir des informations sur les résultats des tests, ainsi que d'autres informations. Exemple :

      gcloud deploy releases promote --annotations="from_target=test,status=stable"

      Les annotations du déploiement sont immuables. Par conséquent, si vous ajoutez une annotation d'état, vous ne pourrez plus mettre à jour cet état lors du même déploiement.

Utiliser des annotations pour donner accès aux résultats des tests

Si l'URL pointe vers l'endroit où les résultats des tests sont accessibles, vous pouvez fournir cette URL en tant qu'annotation de déploiement à l'aide de l'option --annotations. Exemple :

gcloud deploy releases promote --delivery-pipeline=my-demo-app-1 --region=us-central1 --project=my-demo-app-1-project --release=test-release-001 --annotations="test_results_url=https://example.com/results/my-demo-app-test-results-dev"

Pour en savoir plus, consultez Utiliser des étiquettes et des annotations avec Cloud Deploy.

Intégration à la gestion des workflows tiers

Cloud Deploy publie des messages opérationnels sur Pub/Sub. Votre outil de gestion des workflows peut s'abonner à ces sujets Pub/Sub et les utiliser pour déclencher des workflows spécifiques.

Pour les approbations

Le sujet clouddeploy-approvals informe votre système lorsqu'une approbation est requise pour un déploiement. Votre système de workflow externe peut ensuite faire son travail pour obtenir l'approbation, puis appeler gcloud deploy rollouts approve.

Le compte qui émet la commande rollouts approve doit disposer du rôle IAM prédéfini roles/clouddeploy.approver.

Pour configurer un flux de travail d'approbation externe:

  1. Exigez une approbation sur la cible.

    Dans la définition de cette cible, incluez requireApproval: true.

  2. Pour utiliser les messages, abonnez-vous au sujet Pub/Sub clouddeploy-approvals et configurez votre système de gestion de workflows.

  3. Lorsque votre système de gestion de workflows reçoit un message du sujet clouddeploy-approvals incluant "Action": "Required", il lance un workflow d'approbation, configuré selon les exigences de votre organisation.

    Ce message inclut également une référence au déploiement à approuver, au format suivant:

    Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...

    Le résultat du workflow d'approbation correspond à l'approbation ou au refus du déploiement.

  4. Votre système de gestion de workflows renvoie l'approbation ou le refus à Cloud Deploy à l'aide de la commande suivante:

    La commande d'approbation se présente comme suit:

    gcloud deploy rollouts approve ROLLOUT \
    --delivery-pipeline=PIPELINE_NAME \
    --region=REGION \
    --release=RELEASE_NAME
    

    La commande permettant de refuser le déploiement est la suivante:

    gcloud deploy rollouts reject ROLLOUT \
    --delivery-pipeline=PIPELINE_NAME \
    --region=REGION \
    --release=RELEASE_NAME
    

    où :

    • ROLLOUT

      est le nom du déploiement pour lequel une approbation a été demandée.

    • PIPELINE_NAME

      est le pipeline de livraison qui gère le déploiement de votre application.

    • RELEASE_NAME

      est le nom de la version à laquelle ce déploiement est associé.

    • REGION

      correspond à la région dans laquelle le pipeline de livraison s'exécute.

Exemple :

gcloud deploy rollouts approve test-rollout --delivery-pipeline=web-app --release=test-release --region=us-central1