Nesta página, descrevemos como configurar webhooks no Secure Source Manager.
Os webhooks são solicitações HTTP acionadas por um evento no Secure Source Manager e enviadas para um URL especificado pelo usuário.
Antes de começar
Funções exigidas
Para receber as permissões necessárias para criar webhooks, peça ao administrador os seguintes papéis do IAM:
-
Autenticar webhooks usando uma string de consulta sensível:
- Administrador de repositórios do Secure Source Manager (
roles/securesourcemanager.repoAdmin) no repositório do Secure Source Manager - Acessador de instâncias do Secure Source Manager (
roles/securesourcemanager.instanceAccessor) na instância do Secure Source Manager
- Administrador de repositórios do Secure Source Manager (
-
Autentique webhooks usando a autorização da conta de serviço:
- Usuário da conta de serviço (
roles/iam.serviceAccountUser) na conta de serviço do repositório do Secure Source Manager - Agente de serviço do SSM (
roles/iam.serviceAccountTokenCreator) na conta de serviço do repositório do Secure Source Manager - Invocador do Cloud Run (
roles/run.invoker) no serviço de destino (necessário apenas se o destino for o Cloud Run)
- Usuário da conta de serviço (
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Para informações sobre como conceder papéis do Secure Source Manager, consulte Controle de acesso com o IAM e Conceder acesso à instância aos usuários.
Configurar um webhook
Console
- Na interface da Web do Secure Source Manager, navegue até o repositório em que você quer criar um webhook.
- Clique em Configurações.
- Clique em Webhooks e em Adicionar webhook.
No campo ID do hook, insira um ID para o webhook.
No campo URL de destino, insira o URL do webhook. Por exemplo, se você quiser acionar um build no Jenkins, configure um gatilho de webhook e insira o URL do gatilho do Jenkins aqui para acionar o build no Jenkins.
Na seção Acionar em, selecione uma das seguintes opções:
- Push: para acionar um push no repositório.
- Estado da solicitação de pull mudou: para acionar uma mudança no estado da solicitação de pull.
Configure a autenticação do webhook usando uma string de consulta sensível ou a autenticação da conta de serviço:
String de consulta sensível:
A string de consulta sensível consiste nos valores
keyesecretdo URL do webhook, incluindo os prefixoskey=esecret=. Para configurar a autorização de string de consulta sensível, remova esses valores do URL do webhook e adicione-os ao campo String de consulta sensível:- Exclua o
?do URL do webhook. - Copie a parte restante do URL, começando com
key=. - Cole essa parte no campo String de consulta sensível.
- Exclua a mesma parte do URL do webhook.
Por exemplo, considerando o seguinte URL:
https://cloudbuild.googleapis.com/v1/projects/my-project/triggers/test-trigger:webhook?key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=My%20Secret%20Sua string de consulta sensível seria:
key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=My%20Secret%20- Exclua o
Autenticação de conta de serviço:
- Verifique se o repositório tem uma conta de serviço com os papéis do IAM definidos para autenticação de conta de serviço em Papéis obrigatórios.
- Selecione Ativar a autenticação da conta de serviço.
Se você selecionou Push, insira uma lista de permissões para eventos de push no campo Filtro de ramificação.
O campo Filtro de ramificação usa o padrão glob, e apenas operações nas ramificações correspondentes vão acionar um gatilho de compilação. Por exemplo,
{main,dev}é acionado em eventos de envio para as ramificaçõesmainedev. Se o campo estiver vazio ou for*, os eventos de push de todas as ramificações serão informados. Para informações sobre a sintaxe, consulte a documentação do glob.Clique em Add webhook.
O webhook é exibido na página Webhooks.
REST
Para criar um webhook, invoque o
método hooks.create enviando uma solicitação POST ao
endpoint hooks. É possível autenticar seu webhook usando uma
string de consulta sensível ou a autenticação da conta de serviço.
String de consulta sensível
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "targetUri": "https://${SERVICE_NAME}.app/webhook?key=${KEY}&secret=${SECRET}", "events": ["PUSH"] "sensitiveQueryString": "${SENSITIVE_QUERY_STRING_VALUE}" }' \ "https://securesourcemanager.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/repositories/${REPOSITORY}/hooks?hook_id=${HOOK_ID}"O
SENSITIVE_QUERY_STRING_VALUEprecisa ser o valor dekeyesecretno URL do webhook. Por exemplo, se okeyforeitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngfe osecretforMySecret, oSENSITIVE_QUERY_STRING_VALUEserákey=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=MySecret.Autenticação da conta de serviço
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "targetUri": "https://${SERVICE_NAME}.app/webhook", "events": ["PUSH"], "serviceAccountAuth": true }' \ "https://securesourcemanager.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/repositories/${REPOSITORY}/hooks?hook_id=${HOOK_ID}"
Testar o webhook
- Na página Webhooks do Secure Source Manager, clique no webhook que você quer testar.
Role até a parte de baixo da página e clique em Testar entrega.
Um evento substituto é adicionado à fila de entrega. Pode levar alguns segundos para que ele apareça no histórico de entrega.
Também é possível usar um comando
gitpara enviar ou mesclar uma solicitação de envio para testar o webhook.Verifique o status do build ou evento acionado no histórico de builds do serviço em que você configurou o gatilho de webhook.
Você também pode conferir a Solicitação e a Resposta da entrega de teste na seção Entregas recentes da página do webhook do Secure Source Manager depois de enviar a primeira entrega de teste.
Substituir variáveis YAML do Cloud Build por dados de payload
Se você estiver usando webhooks para se conectar ao Cloud Build, poderá substituir variáveis YAML do Cloud Build por dados de payload de webhook do Secure Source Manager.
Na página Webhooks do Secure Source Manager, na seção Entregas recentes, clique na linha de cima.
O cabeçalho Request e o conteúdo enviado pelo payload do webhook são mostrados.
Acesse o painel do Cloud Build e clique em Gatilhos.
Clique no gatilho que você quer configurar.
Na seção "Avançado", em Variáveis de substituição, clique em + Adicionar variável.
Insira o nome e o valor da variável. O prefixo do valor é
body.Por exemplo, para substituir
_REPO_URLpelo campo de dados do payloadrepository.clone_urle_COMMIT_SHApelo sha do commit mais recente no YAML do Cloud Build, insira os seguintes nomes e valores:- Variável 1:
_REPO_URLValor 1:$(body.repository.clone_url) - Variável 2:
_COMMIT_SHAValor 2:$(body.after)
O arquivo YAML do Cloud Build é semelhante a este:
steps: - name: gcr.io/cloud-builders/git env: - '_REPO_URL=$_REPO_URL' - '_COMMIT_SHA=$_COMMIT_SHA' script: | #!/bin/sh git clone ${_REPO_URL} /workspace cd /workspace git reset --hard ${_COMMIT_SHA}- Variável 1: