Como usar as notificações do Cloud Deploy

Esta página descreve como usar as notificações de serviço do Cloud Deploy, incluindo como se inscrever nelas.

O Cloud Deploy usa o Pub/Sub para publicar notificações para dois fins:

  • Permitir a integração do Cloud Deploy com ferramentas de terceiros e outras ferramentas do Google, como ferramentas para tíquetes de fluxo de trabalho ou infraestrutura de teste.

  • Para estender o Cloud Deploy com uma lógica de negócios complementar.

Tópicos disponíveis

O Cloud Deploy publica mensagens no seguinte conjunto de tópicos do Google Pub/Sub:

  • clouddeploy-resources

    Quando há uma operação (criar, atualizar, excluir) em relação a qualquer recurso principal do Cloud Deploy (automação, tipo de segmentação personalizada, pipeline de entrega, execução de job, versão, lançamento, destino).

  • clouddeploy-operations

    • Quando o Cloud Deploy renderiza a configuração do Skaffold.
    • Quando o Cloud Deploy é implantado em um destino (Start, Succeed, Failure, Terminated (execução de job), Cancelled (lançamento)).
  • clouddeploy-approvals

    • Quando o Cloud Deploy precisa de uma aprovação (ou rejeição) de um lançamento.
    • Quando um lançamento é aprovado ou rejeitado.
  • clouddeploy-advances

    • Quando o lançamento do Cloud Deploy avançou de uma fase para a próxima.
    • Quando um lançamento estiver pronto para ser avançado.

É possível usar um modelo push ou pull nas assinaturas do Pub/Sub.

Receber notificações de serviço do Cloud Deploy

Para receber notificações do serviço do Cloud Deploy:

  1. Ative a API Cloud Deploy:

    Ativar a API Cloud Deploy

    A conta de serviço do Agente de serviço do Cloud Deploy é adicionada automaticamente ao seu projeto quando você chama a API Cloud Deploy pela primeira vez. Essa conta de serviço permite que você receba notificações de serviço do Cloud Deploy usando o Pub/Sub.

    O nome da conta de serviço tem o seguinte formato, em que project-number é o número do projeto:

     service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
    

    Se você ainda não encontrar a conta de serviço do Agente de serviço do Cloud Deploy na página do IAM ou não conseguir receber notificações do Pub/Sub, adicione essa conta de serviço ao seu projeto:

    1. Abra a página IAM no console do Google Cloud:

      Abrir a página "IAM"

    2. Clique em Add.

    3. Adicione a seguinte conta principal, em que project-number é o número do projeto:

      service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
      
    4. Selecione Gerenciamento de Serviço > Agente de serviço do Cloud Deploy como seu papel.

    5. Clique em Save.

  2. Habilitar a API Pub/Sub:

    Habilitar a API Pub/Sub

  3. Crie o tópico ou tópicos do Pub/Sub, com base nos tipos de notificação que você quer receber:

    gcloud pubsub topics create clouddeploy-resources
    gcloud pubsub topics create clouddeploy-operations
    gcloud pubsub topics create clouddeploy-approvals
    gcloud pubsub topics create clouddeploy-advances
    

    Para saber mais sobre como gerenciar tópicos do Pub/Sub, consulte Como gerenciar tópicos e assinaturas.

Inscrever-se para receber notificações de serviço do Cloud Deploy

Você tem várias opções para se inscrever para receber notificações. Por exemplo, é possível enviar mensagens por push para um endpoint ou gravar um aplicativo Python para pesquisar sua assinatura.

Para saber como configurar assinaturas do Pub/Sub para notificações de serviço do Cloud Deploy, leia o Guia de assinantes do Pub/Sub. Você também pode aprender sobre Bibliotecas cliente do Pub/Sub, que facilitam o desenvolvimento de aplicativos assinantes.

Valores de campo

Esta seção lista os valores possíveis para campos nas mensagens do Cloud Deploy Pub/Sub.

Para Action

Nessas notificações, os valores possíveis para Action são os seguintes.

  • Para recursos

    • Create
    • Update
    • Delete
  • Para operações:

    • Start
    • Succeed
    • Failure
    • Terminated
    • Cancelled
  • Para aprovações:

    • Required
    • Approved
    • Rejected
  • Para adiantamentos:

    • Required
    • Advanced

Para ResourceType

Os valores possíveis para ResourceType são os seguintes:

  • DeliveryPipeline
  • Target
  • Release
  • Rollout
  • JobRun

Mensagens de amostra

Os exemplos a seguir mostram vários tipos de mensagens do Pub/Sub dos tópicos do Cloud Deploy.

Criação do pipeline de entrega

Veja a seguir um exemplo de uma mensagem do Pub/Sub publicada em clouddeploy-resources em resposta à criação de uma nova deliveryPipeline:

{
  "ackId":   "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQBQgUBXx9cEFMdVhddmhRDRlyfWByY11AAgVMVnldURsHaE5tdR_Wg6LHS0NVaF4TBgpGVX5fXx0IYVtedi_m7r_2wPXOXkAvOYXL6Mtpe735h9xvZiM9XxJLLD5-IzRFQV5AEkwoAURJUytDCypYEU4EISE-MD5FUw",
  "message": {
    "attributes": {
      "Action": "Create",
      "Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest",
      "ResourceType": "DeliveryPipeline",
      "Location": "us-central1",
      "DeliveryPipelineId": "etest",
      "ProjectNumber": "120123456789",

    },
    "messageId": "2407836004659723",
    "publishTime": "2021-05-17T21:24:48.204Z"
  }
}

Início da renderização

Veja a seguir um exemplo de uma mensagem do Pub/Sub publicada em clouddeploy-operations para notificar que uma versão foi renderizada:

{
  "ackId": "U0RQBhYsXUZIUTcZCGhRDk9eIz81IChFFwYIFAV8fXBBTHVeXHRoUQ0Zcn1gcmNfR1MLFlN5WFEaB2hObXUfioKix0tDVWheEwYKRVZ3W1kdBGFVXH0v_qD5rMP1zl5AKDnZyujLaXudkqxfZiM9XxJLLD5-PTNFQV5AEkw2BkRJUytDCypYEU4EISE-MD5F",
  "message": {
    "attributes": {
      "Action": "Start",
      "Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2",
      "ResourceType": "Release"
      "Location": "us-central1",
      "DeliveryPipelineId": "etest",
      "ProjectNumber": "120123456789",
      "ReleaseId": "f2",
    },
    "messageId": "2407805942699908",
    "publishTime": "2021-05-17T21:28:04.201Z"
  }
}

Aprovação necessária

Veja a seguir um exemplo de uma mensagem do Pub/Sub publicada em clouddeploy-approvals para notificar que um lançamento requer aprovação:

{
   "ackId": "RVNEUAYWLF1GSFE3GQhoUQ5PXiM_NSAoRRILUxNRXHQBWhBpWF8aB1ENGXJ8ZnxtCRBVU0FWf1VbEQ16bVxti6C2rERfQXduWhQJBkBXd11aHQhoXF9dotnkpeTv2kFwYSuN8_7mSH_Mo6AYZiA9XBJLLD5-IzZFQV5AEkwoA0RJUytDCypYEU4EISE-MD4",
   "message": {
     "attributes": {
       "Action": "Required",
       "Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123"
       "ReleaseId": "f2",
       "RolloutId": "rollout-123",
       "TargetId": "prod",
       "Location": "us-central1",
       "ProjectNumber": "120123456789",
     },
     "messageId": "2407845492165003",
     "publishTime": "2021-05-17T21:31:25.143Z"
   }
 }

Avançar lançamento

Confira a seguir um exemplo de uma mensagem do Pub/Sub publicada em clouddeploy-advances para notificar que um lançamento foi avançado de uma fase para a próxima:

{
  "ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUSAwVPAihdeTFXKkFZdWhRDRlyfWB9bV4UUFZMV38OURoHaE5tdR_z4ILjS0NVbVkQBApEUHldXhkEa1RcfC-a0fmv1OzMV0AvOaCoyO9pe77r3NluZiM9XhJLLD5-Jz1FQV5AEkwsCERJUytDCypYEU4EISE-MD5FUw",
  "message": {
    "attributes": {
      "Action": "Advanced",
      "Location": "us-central1",
      "PhaseId": "stable",
      "ProjectNumber": "120123456789",
      "ReleaseId": "rollout-123",
      "Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123",
      "RolloutId": "rollout-123",
      "TargetId": "prod"
    },
    "messageId": "7335813725293809",
    "publishTime": "2023-04-03T15:16:30.425Z"
  }
}

Nesta mensagem, PhaseId identifica a fase em que o lançamento foi avançado.

A seguir