Configurar tarefas

Neste documento, descrevemos como configurar tarefas no Cloud Deploy. Uma tarefa é uma unidade de trabalho que pode ser usada como um hook de implantação para verificação de implantação, para análise de implantação ou para uma renderização personalizada ou implantação personalizada em um tipo de destino personalizado.

É possível configurar uma tarefa no pipeline de entrega (como parte da estratégia) ou na renderização ou implantação do tipo de destino personalizado.

Com as tarefas, é possível usar parâmetros do sistema ao criar modelos na configuração da tarefa.

Definir uma tarefa

É possível definir uma tarefa na configuração do pipeline de entrega ou como parte de uma definição de tipo de destino personalizada. O YAML a seguir mostra a estrofe task usada em qualquer um dos casos:

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

Para a configuração task:

  • type

    Especifica o tipo de tarefa que está sendo configurada. Somente container é aceito.

  • image

    É o caminho para a imagem do contêiner.

  • command

    É o comando ou os comandos a serem executados no contêiner.

  • args

    É uma coleção de argumentos para o command.

  • env

    É uma coleção de variáveis de ambiente a serem fornecidas ao contêiner em execução.

Parâmetros do sistema como variáveis de ambiente de tarefa

O Cloud Deploy oferece parâmetros gerados pelo sistema que podem ser usados como variáveis de ambiente nas tarefas, usando o campo env na tarefa container. Os parâmetros com modelo podem estar presentes nos campos de chave ou valor de uma entrada de mapa env.

Confira alguns exemplos de casos de uso:

  • Transmitindo o nome do serviço do Cloud Run, o URL do serviço e o nome da revisão como variáveis de ambiente.

    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 }}"
    
  • Usar vários parâmetros em uma única entrada.

    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 }}"
    

Parâmetros de sistema disponíveis

O Cloud Deploy fornece os seguintes parâmetros de sistema que podem ser usados na configuração de tarefas usando este formato:

${{ parameter }}

$${{ }}.

Confira a seguir a lista de parâmetros disponíveis para criação de modelos:

Nome Definição
location A região que contém os recursos do Cloud Deploy.
Disponível na criação da versão.
project.num O número do projeto Google Cloud que contém os recursos do Cloud Deploy.
Disponível na criação da versão.
project.id O ID do projeto Google Cloud .
Disponível na criação da versão.
delivery_pipeline.name O nome completo do recurso do pipeline de entrega.
Disponível na criação da versão.
delivery_pipeline.id O ID do pipeline de entrega.
Disponível na criação da versão.
target.name O nome totalmente especificado do recurso de destino.
Disponível na criação da versão.
target.id O ID da meta.
Disponível na criação da versão.
release.name O nome totalmente especificado do recurso da versão.
Disponível na criação da versão.
release.id O ID da versão.
Disponível na criação da versão.
rollout.name O nome do recurso totalmente especificado do lançamento.
Disponível na criação do lançamento.
rollout.id O ID do lançamento.
Disponível na criação do lançamento.
job.id O ID do job em execução.
Disponível na criação do lançamento.
phase.id A fase no lançamento que contém o job para as tarefas.
Disponível na criação do lançamento.
job_run.name O nome totalmente especificado do recurso da execução do job que representa a execução atual do job.
Disponível na criação do lançamento.
job_run.id O ID da execução de job que representa a execução atual do job.
Disponível na criação do lançamento.
deploy_params Um mapa dos parâmetros de implantação associados ao destino.
Exemplo: deploy_params['KEY']
Tentar acessar uma chave que não existe resulta em uma string vazia.
Disponível na criação da versão.
Para destinos do tipo RUN:
cloud_run.project O projeto em que o serviço do Cloud Run foi criado.
Disponível na criação da versão.
cloud_run.location A região em que o serviço do Cloud Run é implantado.
Disponível na criação da versão.
render.metadata.cloud_run.service.name O nome do serviço do Cloud Run implantado.
Disponível após a conclusão da operação de renderização.
render.metadata.cloud_run.service.id O ID do serviço do Cloud Run implantado.
Disponível após a conclusão da operação de renderização.
rollout.metadata.cloud_run.service.url O URL que os usuários finais vão usar para acessar seu serviço. É possível encontrar essas informações nos detalhes do serviço do Cloud Run, no console do Google Cloud .
Disponível após a conclusão da operação de implantação.
render.metadata.cloud_run.revision.name O nome completo da revisão do serviço do Cloud Run que está sendo implantado.
Disponível após a conclusão da operação de renderização.
render.metadata.cloud_run.revision.id O ID da revisão do serviço do Cloud Run que está sendo implantado.
Disponível após a conclusão da operação de renderização.
rollout.metadata.cloud_run.previous_revision.name O nome completo da revisão anterior do serviço do Cloud Run que está sendo implantado.
Disponível após a conclusão da operação de implantação.
rollout.metadata.cloud_run.previous_revision.id O ID da revisão anterior do serviço do Cloud Run que está sendo implantado.
Disponível após a conclusão da operação de implantação.
Para destinos do tipo GKE:
gke.cluster.name O nome do recurso totalmente especificado do cluster do GKE.
Disponível na criação da versão.
gke.cluster.id O ID do cluster do GKE.
Disponível na criação da versão.
gke.cluster.project O ID do projeto/número do cluster do GKE.
Disponível na criação da versão.
gke.cluster.location O local do cluster do GKE.
Disponível na criação da versão.
Para destinos do tipo ANTHOS:
anthos.membership.project O ID/número do projeto do cluster do GKE Enterprise.
Disponível na criação da versão.
anthos.membership.location O local do cluster do GKE Enterprise.
Disponível na criação da versão.
anthos.membership.name O nome totalmente especificado do recurso da associação do GKE Enterprise.
Disponível na criação da versão.
anthos.membership.id O ID da assinatura do GKE Enterprise.
Disponível na criação da versão.
Para destinos do Kubernetes (do tipo GKE e ANTHOS):
render.metadata.kubernetes.deployment O nome da implantação que está sendo atualizada. Esse campo não será definido se houver mais de uma implantação nos manifestos.
Disponível após a conclusão da operação de renderização.
render.metadata.kubernetes.canary_deployment O nome da implantação canário em um teste canário automatizado. Para a fase stable, isso é o mesmo que render.metadata.kubernetes.deployment, porque não há canário na fase stable. Para as outras fases, isso é o mesmo que render.metadata.kubernetes.deployment com -canary no final.
Disponível após a conclusão da operação de renderização.
render.metadata.kubernetes.namespace O namespace dos recursos que estão sendo implantados. Isso não é definido se houver mais de um namespace nos manifestos.
Disponível após a conclusão da operação de renderização.
Para destinos do tipo CUSTOM_TARGET_TYPE:
render.metadata.custom Um mapa dos metadados de renderização de uma renderização personalizada.
Exemplo: render.metadata.custom['KEY']
A tentativa de acessar uma chave que não existe resulta em uma string vazia.
Disponível após a conclusão da operação de renderização.
rollout.metadata.custom Um mapa dos metadados de lançamento de uma implantação personalizada.
Exemplo: rollout.metadata.custom['KEY']
A tentativa de acessar uma chave que não existe resulta em uma string vazia.
Disponível após a conclusão da operação de implantação.

Variáveis de ambiente disponíveis

O Cloud Deploy também fornece e preenche as seguintes variáveis de ambiente no ambiente de execução. É possível usar essas variáveis de ambiente como parte do hook de implantação, do job de verificação, ou da renderização ou implantação de destino personalizado.

  • ANTHOS_MEMBERSHIP

    Para destinos do tipo ANTHOS, o nome do recurso totalmente especificado da associação do Anthos.

  • CLOUD_RUN_LOCATION

    Para destinos do tipo RUN, a região em que o serviço do Cloud Run é implantado.

  • CLOUD_RUN_PROJECT

    Para destinos do tipo RUN, o projeto em que o serviço do Cloud Run foi criado.

  • CLOUD_RUN_SERVICE

    Para destinos do tipo RUN, o nome do serviço do Cloud Run implantado.

  • CLOUD_RUN_SERVICE_URLS

    Para destinos do tipo RUN, o URL ou URLs (lista separada por vírgulas) que os usuários finais vão usar para acessar seu serviço. Você pode encontrar essas informações nos detalhes do serviço do Cloud Run no consoleGoogle Cloud . Os URLs são gerados pelo Cloud Run depois que o serviço ou os serviços do Cloud Run são implantados com sucesso. Portanto, essa variável de ambiente só está disponível em hooks postdeploy e jobs de verificação.

  • CLOUD_RUN_REVISION

    Para destinos do tipo RUN, a revisão específica do serviço do Cloud Run.

  • GKE_CLUSTER

    Para destinos do tipo GKE, o nome totalmente especificado do recurso do cluster do Google Kubernetes Engine, por exemplo, projects/p/locations/us-central1/clusters/dev.

  • TARGET_TYPE

    O tipo de tempo de execução específico do destino. GKE, ANTHOS ou RUN. Para metas personalizadas, esse campo não será definido.

  • CLOUD_DEPLOY_LOCATION

    A região que contém os recursos do Cloud Deploy.

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    O ID do pipeline de entrega.

  • CLOUD_DEPLOY_TARGET

    O ID da meta.

  • CLOUD_DEPLOY_PROJECT

    O número do projeto Google Cloud que contém os recursos do Cloud Deploy.

  • CLOUD_DEPLOY_PROJECT_ID

    O ID do projeto Google Cloud .

  • CLOUD_DEPLOY_RELEASE

    O ID da versão em que os hooks serão executados.

  • CLOUD_DEPLOY_ROLLOUT

    O ID do lançamento que contém os jobs para os hooks.

  • CLOUD_DEPLOY_JOB_RUN

    O ID da execução do job que representa a execução atual do job.

  • CLOUD_DEPLOY_PHASE

    A fase no lançamento que contém o job para o hook de implantação, o job de verificação ou a renderização ou implantação personalizada.

A seguir