É possível iniciar builds automáticos com gatilhos do Jenkins e webhooks do Secure Source Manager.
Funções exigidas
Para receber as permissões necessárias para criar gatilhos de build do Jenkins, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Administrador de repositórios do Secure Source Manager (
roles/securesourcemanager.repoAdmin) no seu repositório -
Acessador de instâncias do Secure Source Manager (
roles/securesourcemanager.instanceAccessor) na instância do Secure Source Manager
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 gatilho de webhook
O Jenkins usa plug-ins de gatilho de compilação para ativar a automação de CI/CD. Você pode configurar acionadores para detectar eventos de entrada, como quando uma nova confirmação é enviada para um repositório ou quando uma solicitação de envio é iniciada e, em seguida, executar um build automaticamente quando novos eventos chegam. Também é possível configurar acionadores para criar código em qualquer alteração no seu repositório de origem ou somente em alterações que corresponderem a determinados critérios.
Para configurar um gatilho de webhook genérico do Jenkins:
Instale o plug-in Git, plug-in de credenciais SSH e plug-in de gatilho de webhook genérico no seu servidor Jenkins.
Gere um par de chaves SSH válido no seu servidor Jenkins. O Secure Source Manager só é compatível com chaves do tipo RSA.
Adicione o domínio da instância do Secure Source Manager ao arquivo SSH
known_hostsdo servidor Jenkins executando o seguinte comando:ssh -t git@INSTANCE_ID-INSTANCE_PROJECT_NUMBER-ssh.us-central1.sourcemanager.devEm que:
- INSTANCE_ID é o nome da sua instância do Secure Source Manager.
- INSTANCE_PROJECT_NUMBER é o número do projeto da sua instância do Secure Source Manager. Consulte Identificar projetos para saber onde encontrar o número do projeto.
Por exemplo, o comando a seguir adiciona o domínio da instância para uma instância chamada
prod-test-instancecom um número de projeto de123456789.ssh -t git@prod-test-instance-123456789-ssh.us-central1.sourcemanager.devResponda
yespara adicionar o domínio da instância à lista de hosts conhecidos.Na página Gerenciar credenciais do Jenkins:
- Selecione Nome de usuário SSH com chave privada.
- Cole a chave privada SSH do servidor Jenkins.
- No menu suspenso Tipo, preencha os outros campos conforme necessário.
Clique em Criar.
Na interface da Web do Jenkins, crie um job.
Na página de configuração do job do Jenkins, na seção Gerenciamento de código-fonte, selecione Git.
Na seção Git, cole o URL SSH do repositório do Secure Source Manager como o URL do repositório, insira suas ramificações de build (por exemplo,
*/main) e selecione a credencial de chave SSH privada salva que você adicionou anteriormente na página Gerenciar credenciais.Na seção Gatilhos de build, selecione Gatilho de webhook genérico.
Se quiser, adicione um token para que o job seja acionado apenas se ele for fornecido durante a invocação. Para adicionar um token, na seção Acionador de webhook genérico, insira um token no campo Token.
Na seção Build, forneça um script de build que você quer para este job do Jenkins. Por exemplo, execute
cat README.mdpara imprimir o conteúdo de README.md.Clique em Salvar para criar o job do Jenkins.
Configurar uma conta de serviço e conceder as permissões necessárias
Se você ainda não tiver uma conta de serviço que queira usar, crie uma.
Verifique se você tem a permissão
iam.serviceAccounts.actAsna conta de serviço. Essa permissão faz parte do papel Usuário da conta de serviço (roles/iam.serviceAccountUser).Na interface da Web do Secure Source Manager, clique no menu mais opções.
Clique em Chaves SSH da conta de serviço. A página Chaves SSH da conta de serviço é aberta, e uma lista das chaves adicionadas é exibida.
Clique em Adicionar chave.
Na página Adicionar chave SSH, insira os seguintes valores para sua chave:
Conta de serviço: o e-mail da conta de serviço que você quer usar com a chave SSH no formato
SA_NAME@PROJECT_ID.iam.gserviceaccount.comOnde
SA_NAMEé o nome da conta de serviço.PROJECT_IDé o ID do projeto em que a conta de serviço foi criada.
Chave pública SSH: sua chave pública SSH do Jenkins.
Conceder permissões ao agente de serviço do Secure Source Manager
Se a conta de serviço não estiver no mesmo projeto da sua instância do Secure Source Manager, conceda ao agente de serviço do Secure Source Manager o papel de criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator) ou a permissão iam.serviceAccounts.signJwt.
Se a conta de serviço estiver no mesmo projeto da instância do Secure Source Manager, pule para Conceder à conta de serviço uma função de repositório.
Execute o seguinte comando para receber a política do IAM atual da sua conta de serviço:
gcloud iam service-accounts get-iam-policy SERVICE_ACCOUNT \ --format jsonEm que SERVICE_ACCOUNT é a conta de serviço que você quer usar. A conta precisa ser formatada como um ID numérico de conta de serviço ou como um e-mail, assim:
123456789876543212345oumy-iam-account@somedomain.com.A saída inclui todas as vinculações atuais ou, se não houver nenhuma, o valor
etagsemelhante a este:{ "etag": "BwUjHYKJUiQ=" }Copie a saída para um novo arquivo chamado
policy.json.Para conceder ao agente de serviço do Secure Source Manager o papel de criador de token da conta de serviço (
roles/iam.ServiceAccountTokenCreator), modifique opolicy.jsonpara adicionar o seguinte:{ "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:service-INSTANCE_PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com" ] }em que
INSTANCE_PROJECT_NUMBERé o número do projeto da sua instância do Secure Source Manager.Execute o comando a seguir para substituir a política do IAM atual da conta de serviço:
gcloud iam service-accounts set-iam-policy SERVICE_ACCOUNT POLICY_FILESubstitua:
- SERVICE_ACCOUNT pelo ID ou e-mail da conta de serviço.
- POLICY_FILE com o local e o nome do arquivo formatado em JSON, incluindo a nova política.
Conceder um papel de repositório à conta de serviço
- Na interface da Web do Secure Source Manager, navegue até o repositório em que você quer conceder permissões à conta de serviço.
- Clique na guia Permissões.
- Clique em Adicionar usuários.
- No campo Adicionar principal, insira o endereço de e-mail da conta de serviço.
- No menu suspenso Papel, selecione Leitor do repositório do Secure Source Manager.
Atribua à conta de serviço o papel
securesourcemanager.instanceAccessorexecutando o seguinte comando:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SA_EMAIL \ --role=roles/securesourcemanager.instanceAccessorSubstitua:
PROJECT_IDcom o ID do projeto da instância do Secure Source Manager.SA_EMAILpelo e-mail da conta de serviço.
Configurar um webhook
- 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 gatilho do Jenkins.
Se você usou o token opcional ao configurar o gatilho do Jenkins, o URL do gatilho vai conter esse token no final. Para evitar o vazamento do token, remova-o do final do URL de destino e copie para o campo String de consulta sensível.
Para localizar o token no URL do gatilho, procure o texto que começa com
token=Por exemplo, se o URL for semelhante a este:
https://jenkins-server.com/generic-webhook-trigger/invoke?token=jenkins-job1Copie e remova a parte que começa com o ponto de interrogação
?token=jenkins-job1do campo URL de destino. Em seguida, remova o ponto de interrogação inicial e mova a parte restantetoken=jenkins-job1para o campo String de consulta sensível.Na seção Acionar em, selecione uma das seguintes opções:
- Push: para acionar um envio para o repositório.
- Estado da solicitação de pull alterado: para acionar uma mudança no estado da solicitação de pull.
Se você selecionou Push, insira uma lista de permissão para eventos de envio 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. Se o campo estiver vazio ou for
*, os eventos de push de todas as ramificações serão informados.Clique em Add webhook.
O webhook é exibido na página Webhooks.
Testar seu 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 falso é adicionado à fila de entrega. Pode levar alguns segundos para que ele apareça no histórico de entregas.
Também é possível usar um comando
gitpara enviar ou mesclar uma solicitação de envio e testar o webhook.No projeto do Jenkins, confira o build acionado pelo evento de teste em Histórico de builds.
Você também pode conferir a Solicitação e a Resposta da entrega do teste na seção Entregas recentes da página do webhook do Secure Source Manager depois de enviar sua primeira entrega de teste.
A seguir
- Consulte a documentação do Jenkins.