Notificações do Cloud Pub/Sub para Google Cloud Source Repositories

Nesta página, você tem uma visão geral das notificações do Cloud Pub/Sub para Google Cloud Source Repositories. Para saber como configurar e usar o Cloud Pub/Sub Notifications, consulte Como configurar o Cloud Pub/Sub Notifications.

O Cloud Source Repositories publica mensagens sobre seu repositório em recursos nomeados, chamados de tópicos. Essas mensagens são recebidas por aplicativos assinantes dos tópicos do Cloud Pub/Sub. Eles recebem notificações quando o estado do repositório é alterado. Além disso, é possível configurar papéis e permissões para os tópicos do Cloud Pub/Sub, com a finalidade de controlar como os usuários interagem com os eventos de Pub/Sub gerados pelo repositório.

Escopo

Você pode configurar o Cloud Source Repositories para publicar eventos em um tópico do Cloud Pub/Sub. É possível fazer isso para um repositório individual ou um projeto inteiro do GCP.

Permissões

Você pode usar o controle de acesso do Cloud Pub/Sub para configurar permissões para seu projeto e recursos. Use os controles de acesso como mais uma forma de proteger os dados de evento gerados pelo repositório.

Configure os controles de acesso do Cloud Pub/Sub na página do IAM no Console do GCP ou por meio da API IAM.

O Cloud Source Repositories usa a conta de serviço padrão do Compute Engine para publicar notificações no seu tópico do Cloud Pub/Sub. Essa conta de serviço tem as permissões necessárias para publicar mensagens em tópicos do Cloud Pub/Sub. Para selecionar uma conta de serviço diferente, use as ferramentas de linha de comando gcloud.

Para configurar as permissões de assinatura, use um destes papéis:

  • roles/owner
  • roles/editor
  • roles/pubsub.admin
  • roles/pubsub.editor
  • roles/pubsub.subscriber

Tipos de evento

Você pode usar as notificações do Cloud Pub/Sub para acompanhar quando um usuário cria ou exclui um repositório ou envia um commit para um repositório. Cada evento tem um tipo específico. A tabela a seguir lista os tipos atualizados e a definição de cada um.

Tipo de evento Descrição
CreateRepo Ocorre quando um usuário cria um repositório.
RefUpdate Ocorre quando um usuário executa um comando “git push”.
DeleteRepo Ocorre quando um usuário exclui um repositório.

Formato da notificação

É possível configurar as notificações do Cloud Pub/Sub para Cloud Source Repositories para usar um dos dois formatos abaixo:

  • JSON
  • Protocol Buffers

Dados da notificação

Cada notificação do Cloud Pub/Sub contém as informações a seguir sobre um evento:

Nome do campo Descrição
name O nome do repositório.
url O URL do repositório.
eventTime O horário em que a alteração ocorreu.
refUpdateEvent Informações sobre uma alteração específica.
createRepoEvent Indica se um usuário criou um repositório.
deleteRepoEvent Indica se um usuário excluiu um repositório.

Se a notificação for sobre um comando git push, ela conterá o campo refUpdateEvent com as informações a seguir:

Nome do campo Descrição
email O endereço de e-mail do usuário que fez a alteração.
refUpdates Informações sobre o commit.

O campo refUpdate contém os detalhes a seguir sobre o comando git push:

Nome do campo Descrição
refName O nome do branch.
updateType O tipo de atualização. Consulte a seção Tipos de atualização para saber mais.
oldId O código do commit anterior do repositório.
newId O novo código do repositório.

Tipos de atualização

Um evento git push pode ter um dos quatro tipos de atualização abaixo. Para saber o tipo, veja o campo updateType da notificação.

Tipo de atualização Descrição
CREATE Ocorre quando o comando cria uma referência nova.
UPDATE_FAST_FORWARD Ocorre quando o comando atualiza um objeto.
UPDATE_NON_FAST_FORWARD Ocorre quando o comando usa a sinalização -f. Por exemplo: git push -f.
DELETE Ocorre quando o comando exclui uma referência.

Exemplo de notificação

Veja abaixo um exemplo dos dados contidos em uma notificação do Cloud Pub/Sub. Esta notificação usa o formato JSON.

"name": "projects/test-project/repos/pubsub-test",
"url": "[URL_PATH]",
"eventTime": "2018-02-21T21:23:25.566175Z",
"refUpdateEvent": {
  "email": "someone@somecompany.com",
  "refUpdates": {
    "refs/heads/master": {
    "refName": "refs/heads/master",
    "updateType": "UPDATE_FAST_FORWARD",
    "oldId": "c7a28dd5de3403cc384a025834c9fce2886fe763",
    "newId": "f00768887da8de62061210295914a0a8a2a38226"
    }
  }
}
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Cloud Source Repositories