Como configurar notificações do Pub/Sub

É possível receber notificações de alterações nos repositórios do Google Cloud usando o Pub/Sub. Essas notificações informarão sobre operações de criação, exclusão e alteração de repositórios realizadas por usuários. É possível configurar notificações para repositórios específicos ou para todo um projeto do Google Cloud.

Para saber mais sobre o Pub/Sub, consulte O que é o Pub/Sub?

Antes de começar

  • Crie um repositório, caso ainda não tenha feito isso.
  • Verifique se você tem as permissões apropriadas para criar tópicos e assinaturas. Para mais informações, consulte Controle de acesso.
  • Verifique se você tem uma conta de serviço que possa publicar no tópico. Por padrão, o Cloud Source Repositories usa a conta de serviço padrão do Compute Engine para publicar mensagens. Para mais informações, consulte notificações do Pub/Sub para o Cloud Source Repositories.

Criar um tópico do Pub/Sub

Crie um tópico do Pub/Sub. para cada projeto ou repositório do Cloud Source Repositories em que você queira receber notificações. É possível criar um tópico usando o console do Google Cloud ou a linha de comando gcloud .

Ao criar um tópico, é necessário usar um URI qualificado para o repositório. O URI qualificado é:

projects/[PROJECT_ID]/topics/[TOPIC_NAME]

Em que:

  • [PROJECT_ID] é o ID do projeto do Google Cloud;
  • [TOPIC_NAME] é o nome do tópico.

Para criar um tópico, siga estas etapas.

Console

  1. No console do Google Cloud, acesse a página Tópicos do Pub/Sub.

    Acessar a página "Tópicos"

  2. Clique em Criar tópico.

  3. Digite um nome de tópico com o URI:

    projects/[PROJECT_ID]/topics/[TOPIC_NAME]
    

    Em que:

    • [PROJECT_ID] é o ID do projeto do Google Cloud;
    • [TOPIC_NAME] é o nome do tópico.
  4. Clique em Criar.

    A página Detalhes do tópico é aberta.

gcloud

Em uma janela de terminal, execute o comando a seguir:

gcloud pubsub topics create projects/[PROJECT_ID]/topics/[TOPIC_NAME]

Em que:

  • [PROJECT_ID] é o ID do projeto do Google Cloud;
  • [TOPIC_NAME] é o nome do tópico.

Para saber mais sobre o comando gcloud pubsub topics, consulte a documentação de topics.

Criar uma assinatura no Pub/Sub

Para receber os eventos publicados em um tópico, é necessário criar uma assinatura do Pub/Sub.

Um aplicativo de assinante recebe mensagens do tópico do repositório. Os assinantes podem enviar notificações ou acionar uma versão para responder os eventos do repositório.

Para criar uma assinatura, siga estas etapas.

Console

  1. No console do Google Cloud, acesse a página Tópicos do Pub/Sub.

    Acessar a página "Tópicos"

  2. Clique no nome do tópico do seu projeto.

  3. Clique em Criar assinatura.

    A página Adicionar assinatura ao tópico é aberta.

  4. Insira o nome da assinatura:

    projects/[PROJECT_ID]/subscriptions/[SUBSCRIPTION_NAME]
    

    Em que:

    • [PROJECT_ID] é o ID do projeto do Google Cloud;
    • [SUBSCRIPTION_NAME] é o nome da assinatura do Pub/Sub.
  5. Deixe o Tipo de entrega configurado como Pull.

  6. Clique em Criar.

gcloud

Em uma janela de terminal, execute o comando a seguir:

gcloud pubsub subscriptions create [SUBSCRIPTION_NAME] --topic=[TOPIC_NAME]

Em que:

  • [SUBSCRIPTION_NAME] é o nome da assinatura do Pub/Sub.
  • [TOPIC_NAME] é o nome do tópico.

Para saber mais sobre o comando gcloud pubsub subscriptions, consulte a documentação de subscriptions.

Adicionar um tópico

É possível associar um tópico do Pub/Sub a um projeto ou a um repositório do Google Cloud usando a CLI do Google Cloud.

Para associar um tópico a um projeto inteiro, digite o seguinte comando:

gcloud source project-configs update --add-topic=[TOPIC_NAME] --service-account=[SERVICE_ACCOUNT_NAME]

Em que:

  • [TOPIC_NAME] é o nome do tópico do Pub/Sub;
  • [SERVICE_ACCOUNT_NAME] é o nome da sua conta de serviço do Cloud Build.

Para associar um tópico a um repositório específico, digite o seguinte comando:

gcloud source repos update [REPOSITORY_NAME] --add-topic=[TOPIC_NAME] --service-account=[SERVICE_ACCOUNT_NAME]

Em que:

  • [REPOSITORY_NAME] é o nome do seu repositório do Google Cloud;
  • [TOPIC_NAME] é o nome do tópico do Pub/Sub;
  • [SERVICE_ACCOUNT_NAME] é o nome da sua conta de serviço do Cloud Build.

A conta de serviço precisa estar no mesmo projeto que o repositório e precisa ter a permissão pubsub.topics.publish para publicar uma mensagem no tópico especificado. É preciso ter a permissão iam.serviceAccounts.actAs na conta de serviço. Se a conta de serviço não for especificada, o padrão será a conta de serviço padrão do Compute Engine.

Remover um tópico

É possível remover uma associação entre um projeto ou repositório e um tópico do Pub/Sub usando a CLI do Google Cloud.

Para remover um tópico de um projeto inteiro, digite o seguinte comando:

gcloud source project-configs update --remove-topic=[TOPIC_NAME]

Para remover um tópico de um repositório específico, digite o seguinte comando:

gcloud source repos update [REPOSITORY_NAME] --remove-topic=[TOPIC_NAME]

Definir o formato do tópico

As notificações do Cloud Source Repositories usam o formato JSON ou Buffers de protocolo. Para definir o formato de um tópico, use o parâmetro --message-format ao adicionar o tópico:

gcloud source project-configs update --add-topic=[TOPIC_NAME] --message-format=[json|protobuf]

Também é possível usar o comando set-format:

gcloud source project-configs update --update-topic=[TOPIC_NAME] --message-format=[json|protobuf]

A seguir