Configurer des tâches

Ce document explique comment configurer des tâches dans Cloud Deploy. Une tâche est une unité de travail qui peut être utilisée comme hook de déploiement, pour la vérification du déploiement, pour l'analyse du déploiement ou pour un rendu personnalisé ou un déploiement personnalisé dans un type de cible personnalisée.

Vous pouvez configurer une tâche sur le pipeline de déploiement (dans le cadre de la stratégie) ou le rendu ou le déploiement du type de cible personnalisée.

Avec les tâches, vous pouvez utiliser des paramètres système en les intégrant dans la configuration de votre tâche.

Définir une tâche

Vous pouvez définir une tâche dans la configuration de votre pipeline de diffusion ou dans la définition d'un type de cible personnalisé. Le code YAML suivant montre la strophe task utilisée dans les deux cas :

  task:
    type: container
    image: IMAGE
    command: [COMMANDS_TO_RUN]
    args: [LIST_OF_ARGS]
    env:
    - KEY1:VAL1
    - KEY2:VAL2
    ...

Pour la configuration task :

  • type

    Spécifie le type de tâche en cours de configuration. Seule l'option container est acceptée.

  • image

    Chemin d'accès à l'image du conteneur.

  • command

    Il s'agit de la ou des commandes à exécuter sur le conteneur.

  • args

    Collection d'arguments pour command.

  • env

    Il s'agit d'une collection de variables d'environnement à fournir au conteneur en cours d'exécution.

Paramètres système en tant que variables d'environnement de la tâche

Cloud Deploy propose des paramètres générés par le système que vous pouvez utiliser comme variables d'environnement dans vos tâches, à l'aide du champ env de la tâche container. Les paramètres de modèle peuvent être présents dans les champs de clé ou de valeur d'une entrée de carte env.

Voici quelques exemples de cas d'utilisation :

  • Transmettez le nom du service Cloud Run, l'URL du service et le nom de la révision en tant que variables d'environnement.

    task:
      type: container
      image: my-image
      command: ["/bin/bash"]
      env:
      - RUN_SERVICE_NAME : "${{ render.metadata.cloud_run.service.name }}"
      - RUN_SERVICE_URL: "${{ rollout.metadata.cloud_run.service_url }}"
      - RUN_REVISION_NAME: "${{ render.metadata.cloud_run.revision.name }}"
    
  • Utiliser plusieurs paramètres dans une même entrée.

    task:
      type: container
      image: my-image
      command: ["/bin/bash"]
      env:
      - DEPLOY_PARAMS_KEY : "${{ deploy_params['FOO'] }}-with-${{ deploy_params['BAR'] }}"
      - "${{ project.id }}_${{ location }}" : "${{ target.id }}"
    

Paramètres système disponibles

Cloud Deploy fournit les paramètres système suivants que vous pouvez utiliser dans la configuration de vos tâches au format suivant :

${{ parameter }}

$${{ }}.

Voici la liste des paramètres disponibles pour la création de modèles :

Nom Définition
location Région contenant les ressources Cloud Deploy.
Disponible lors de la création de la version.
project.num Numéro du projet Google Cloud contenant les ressources Cloud Deploy.
Disponible lors de la création de la version.
project.id ID du projet Google Cloud .
Disponible lors de la création de la version.
delivery_pipeline.name Nom de ressource entièrement spécifié du pipeline de diffusion.
Disponible lors de la création de la version.
delivery_pipeline.id ID du pipeline de livraison.
Disponible lors de la création de la version.
target.name Nom de ressource entièrement spécifié de la cible.
Disponible lors de la création de la version.
target.id ID de la cible.
Disponible lors de la création de la version.
release.name Nom de ressource complet de la version.
Disponible lors de la création de la version.
release.id ID de la version.
Disponible lors de la création de la version.
rollout.name Nom de ressource complet du déploiement.
Disponible lors de la création du déploiement.
rollout.id ID du déploiement.
Disponible lors de la création du déploiement.
job.id ID du job en cours d'exécution.
Disponible lors de la création du déploiement.
phase.id La phase du déploiement qui contient le job pour les tâches.
Disponible lors de la création du déploiement.
job_run.name Nom de ressource entièrement spécifié de l'exécution du job qui représente l'exécution actuelle du job.
Disponible lors de la création du déploiement.
job_run.id ID de l'exécution de job qui représente l'exécution actuelle du job.
Disponible lors de la création du déploiement.
deploy_params Carte des paramètres de déploiement associés à la cible.
Exemple : deploy_params['KEY']
Si vous essayez d'accéder à une clé qui n'existe pas, une chaîne vide est renvoyée.
Disponible lors de la création de la version.
Pour les cibles de type RUN :
cloud_run.project Projet dans lequel le service Cloud Run a été créé.
Disponible lors de la création de la version.
cloud_run.location Région dans laquelle le service Cloud Run est déployé.
Disponible lors de la création de la version.
render.metadata.cloud_run.service.name Nom du service Cloud Run déployé.
Disponible une fois l'opération de rendu terminée.
render.metadata.cloud_run.service.id ID du service Cloud Run déployé.
Disponible une fois l'opération de rendu terminée.
rollout.metadata.cloud_run.service.url URL que les utilisateurs finaux utiliseront pour accéder à votre service. Vous les trouverez dans les détails du service Cloud Run pour votre service, dans la console Google Cloud .
Disponible une fois l'opération de déploiement terminée.
render.metadata.cloud_run.revision.name Nom complet de la révision du service Cloud Run en cours de déploiement.
Disponible une fois l'opération de rendu terminée.
render.metadata.cloud_run.revision.id ID de révision du service Cloud Run en cours de déploiement.
Disponible une fois l'opération de rendu terminée.
rollout.metadata.cloud_run.previous_revision.name Nom complet de la révision précédente du service Cloud Run en cours de déploiement.
Disponible une fois l'opération de déploiement terminée.
rollout.metadata.cloud_run.previous_revision.id ID de révision précédent du service Cloud Run en cours de déploiement.
Disponible une fois l'opération de déploiement terminée.
Pour les cibles de type GKE :
gke.cluster.name Nom complet de la ressource du cluster GKE.
Disponible lors de la création de la version.
gke.cluster.id ID du cluster GKE.
Disponible lors de la création de la version.
gke.cluster.project ID/numéro du projet du cluster GKE.
Disponible lors de la création de la version.
gke.cluster.location Emplacement du cluster GKE.
Disponible lors de la création de la version.
Pour les cibles de type ANTHOS :
anthos.membership.project ID/numéro du projet du cluster GKE Enterprise.
Disponible lors de la création de la version.
anthos.membership.location Emplacement du cluster GKE Enterprise.
Disponible lors de la création de la version.
anthos.membership.name Nom de ressource complet de l'abonnement GKE Enterprise.
Disponible lors de la création de la version.
anthos.membership.id ID de l'abonnement GKE Enterprise.
Disponible lors de la création de la version.
Pour les cibles Kubernetes (cibles de type GKE et ANTHOS) :
render.metadata.kubernetes.deployment Nom du déploiement en cours de mise à jour. Cette valeur n'est pas définie si les fichiers manifestes contiennent plusieurs déploiements.
Disponible une fois l'opération de rendu terminée.
render.metadata.kubernetes.canary_deployment Nom du déploiement Canary dans un déploiement Canary automatisé. Pour la phase stable, cette valeur est la même que render.metadata.kubernetes.deployment, car il n'y a pas de version Canary dans la phase stable. Pour les autres phases, cela équivaut à render.metadata.kubernetes.deployment avec -canary à la fin.
Disponible une fois l'opération de rendu terminée.
render.metadata.kubernetes.namespace Espace de noms des ressources déployées. Cette valeur n'est pas définie si les fichiers manifestes contiennent plusieurs espaces de noms.
Disponible une fois l'opération de rendu terminée.
Pour les cibles de type CUSTOM_TARGET_TYPE :
render.metadata.custom Carte des métadonnées de rendu à partir d'un rendu personnalisé.
Exemple : render.metadata.custom['KEY']
Toute tentative d'accès à une clé inexistante génère une chaîne vide.
Disponible une fois l'opération de rendu terminée.
rollout.metadata.custom Carte des métadonnées de déploiement à partir d'un déploiement personnalisé.
Exemple : rollout.metadata.custom['KEY']
Toute tentative d'accès à une clé inexistante génère une chaîne vide.
Disponible une fois l'opération de déploiement terminée.

Variables d'environnement disponibles

Cloud Deploy fournit et renseigne également les variables d'environnement suivantes dans l'environnement d'exécution. Vous pouvez utiliser ces variables d'environnement dans votre hook de déploiement, votre tâche de validation ou votre cible personnalisée pour le rendu ou le déploiement.

  • ANTHOS_MEMBERSHIP

    Pour les cibles de type ANTHOS, nom complet de la ressource de l'abonnement Anthos.

  • CLOUD_RUN_LOCATION

    Pour les cibles de type RUN, la région dans laquelle le service Cloud Run est déployé.

  • CLOUD_RUN_PROJECT

    Pour les cibles de type RUN, il s'agit du projet dans lequel le service Cloud Run a été créé.

  • CLOUD_RUN_SERVICE

    Pour les cibles de type RUN, nom du service Cloud Run déployé.

  • CLOUD_RUN_SERVICE_URLS

    Pour les cibles de type RUN, il s'agit de l'URL ou des URL (liste séparée par des virgules) que les utilisateurs finaux utiliseront pour accéder à votre service. Vous les trouverez dans les détails du service Cloud Run pour votre service, dans la consoleGoogle Cloud . Les URL sont générées par Cloud Run une fois que votre ou vos services Cloud Run ont été déployés. Par conséquent, cette variable d'environnement n'est disponible que dans les hooks post-déploiement et les jobs de validation.

  • CLOUD_RUN_REVISION

    Pour les cibles de type RUN, il s'agit de la révision spécifique du service Cloud Run.

  • GKE_CLUSTER

    Pour les cibles de type GKE, le nom de ressource complet du cluster Google Kubernetes Engine, par exemple projects/p/locations/us-central1/clusters/dev.

  • TARGET_TYPE

    Type d'exécution spécifique de la cible. GKE, ANTHOS ou RUN. Pour les cibles personnalisées, cette valeur ne sera pas définie.

  • CLOUD_DEPLOY_LOCATION

    Région contenant les ressources Cloud Deploy.

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    ID du pipeline de livraison.

  • CLOUD_DEPLOY_TARGET

    ID de la cible.

  • CLOUD_DEPLOY_PROJECT

    Numéro de projet Google Cloud pour le projet contenant les ressources Cloud Deploy.

  • CLOUD_DEPLOY_PROJECT_ID

    ID du projet Google Cloud .

  • CLOUD_DEPLOY_RELEASE

    ID de la version dans laquelle les hooks s'exécuteront.

  • CLOUD_DEPLOY_ROLLOUT

    ID du déploiement contenant les jobs pour les hooks.

  • CLOUD_DEPLOY_JOB_RUN

    ID de l'exécution du job qui représente l'exécution actuelle du job.

  • CLOUD_DEPLOY_PHASE

    La phase du déploiement qui contient le job pour le crochet de déploiement, le job de validation ou le rendu ou déploiement personnalisé.

Étapes suivantes