Como integrar o Cloud Deploy a outros sistemas

É possível integrar o Cloud Deploy a alguns dos outros sistemas em que você confia para a entrega de software. Esta página descreve como integrar o Cloud Deploy com o seguinte:

  • Ferramentas de teste
  • Gerenciamento do fluxo de trabalho

Consulte Como integrar com seu sistema de CI para saber como chamar o Cloud Deploy do seu pipeline de CI.

Antes de começar

As instruções nesta página pressupõem que você já atende às seguintes condições:

Como fazer a integração com testes automatizados

O Cloud Deploy pode ser usado com o Pub/Sub para integrar testes com seu pipeline de entrega, para que você possa promover o lançamento automaticamente para entrega contínua.

Também é possível usar anotações em um lançamento para fornecer um link de teste. Para mais informações, consulte Como usar rótulos e anotações com o Cloud Deploy.

Como usar o Pub/Sub para automatizar a promoção

  1. Detecte mensagens do Pub/Sub do tópico clouddeploy-operations.

    A mensagem contém os seguintes atributos:

    • Action: SUCCEED
    • ResourceType: Rollout
    • Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...
  2. Quando você receber uma notificação de que a implantação foi bem-sucedida, execute os testes no aplicativo implantado.

  3. Quando os testes forem bem-sucedidos, chame o Cloud Deploy para promover automaticamente o próximo estágio:

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

    em que:

    • RELEASE_NAME

      é o nome da versão. Esse valor é obrigatório.

    • PIPELINE_NAME

      é o nome do pipeline de entrega que gerencia esta versão. Esse valor é obrigatórios.

    • REGION

      é a região em que o pipeline está sendo executado. Se você definiu a propriedade deploy/region, pode omitir essa flag.

    • KEY=VALUE,...

      é uma lista de um ou mais pares de strings de chave-valor, separados por vírgula, que podem contêm informações sobre os resultados e outras informações do teste. Veja um exemplo:

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

      As anotações na implementação são imutáveis. Portanto, se você adicionar uma anotação de status, não será possível atualizar esse status posteriormente no mesmo lançamento.

Como usar anotações para fornecer acesso a resultados de testes

Se você tiver o URL que aponta para onde os resultados do teste podem ser acessados, forneça esse URL como uma anotação em um lançamento, usando a sinalização --annotations. Veja um exemplo:

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"

Para mais informações, consulte Como usar rótulos e anotações com o Cloud Deploy.

Integração com o gerenciamento de fluxos de trabalho de terceiros

O Cloud Deploy publica mensagens operacionais no Pub/Sub. Sua ferramenta de gerenciamento de fluxo de trabalho pode se inscrever nesses tópicos do Pub/Sub e usá-los para acionar fluxos de trabalho específicos.

Para aprovações

O tópico clouddeploy-approvals notifica seu sistema quando uma aprovação é necessária para um lançamento. Seu sistema de fluxo de trabalho externo pode trabalhar na mágica para receber a aprovação e, em seguida, chamar gcloud deploy rollouts approve.

A conta que emite o comando rollouts approve precisa ter o papel predefinido roles/clouddeploy.approver do IAM.

Para configurar um fluxo de trabalho de aprovação externo:

  1. Exigir aprovação no destino.

    Na definição desse destino, inclua requireApproval: true.

  2. Para consumir as mensagens, inscreva-se no tópico clouddeploy-approvals do Pub/Sub e configure o sistema de gerenciamento do fluxo de trabalho.

  3. Quando seu sistema de gerenciamento de fluxo de trabalho recebe uma mensagem do tópico clouddeploy-approvals que inclui "Action": "Required", ele inicia um fluxo de trabalho de aprovação, configurado de acordo com os requisitos da sua organização.

    A mensagem também inclui uma referência ao lançamento a ser aprovado, no seguinte formato:

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

    A saída do fluxo de trabalho de aprovação é uma aprovação ou rejeição do lançamento.

  4. Seu sistema de gerenciamento de fluxo de trabalho retorna a aprovação ou rejeição para Cloud Deploy na forma do seguinte comando:

    O comando para aprovação é o seguinte:

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

    O comando para rejeitar o lançamento é o seguinte:

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

    onde:

    • ROLLOUT

      é o nome do lançamento para o qual a aprovação foi solicitada.

    • PIPELINE_NAME

      é o pipeline de entrega que gerencia a implantação do aplicativo.

    • RELEASE_NAME

      é o nome da versão associada ao lançamento.

    • REGION

      é a região em que o pipeline de entrega está sendo executado.

Veja um exemplo:

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