Tutorial: configurar um executor do Buildkite hospedado pelo CodeBuild
Este tutorial mostra como configurar projetos do CodeBuild para executar trabalhos do Buildkite. Consulte mais informações sobre como usar o Buildkite com o CodeBuild em Executor autogerenciado do Buildkite no AWS CodeBuild.
Para concluir este tutorial, você deve primeiramente:
-
Ter acesso a uma organização do Buildkite. Consulte mais informações sobre como configurar uma conta e uma organização do Buildkite em Getting Started Tutorial
. -
Crie um pipeline, um cluster e uma fila do Buildkite configurados para usar executores auto-hospedados. Consulte mais informações sobre como configurar esses recursos em Buildkite Pipeline Setup Tutorial
.
Etapa 1: gerar um token de agente do Buildkite
Nesta etapa, você gera um token de agente no Buildkite que será usado para autenticar os executores auto-hospedados do CodeBuild. Consulte mais informações sobre esse recurso em Buildkite Agent Tokens
Como gerar um token de agente do Buildkite
-
No cluster do Buildkite, escolha Tokens de agente e Novo token.
-
Adicione uma descrição ao token e clique em Criar token.
-
Salve o valor do token do agente, pois ele será usado posteriormente durante a configuração do projeto do CodeBuild.
Etapa 2: criar um projeto do CodeBuild com um webhook
Para criar um projeto do CodeBuild com um webhook
Abra o console do AWS CodeBuild em https://console.aws.amazon.com/codesuite/codebuild/home.
-
Crie um projeto de compilação auto-hospedado. Para obter informações, consulte Criar um projeto de compilação (console) e Executar uma compilação (console).
-
Em Configuração do projeto, selecione Projeto de executor. Em Executor:
-
Em Provedor de executor, escolha Buildkite.
-
Em Token de agente do Buildkite, escolha Criar um token de agente usando a página de criação secreta. Será exibida uma solicitação para criar um segredo no AWS Secrets Manager com um valor de segredo igual ao token do agente do Buildkite que você gerou acima.
-
(Opcional) Se você quiser usar as credenciais gerenciadas do CodeBuild para seu trabalho, selecione o provedor do repositório de origem correspondente nas Opções de credenciais de origem do Buildkite e verifique se as credenciais estão configuradas para sua conta. Além disso, verifique se o pipeline do Buildkite usa o Checkout via HTTPS.
nota
O Buildkite requer credenciais de origem no ambiente de compilação para extrair a origem do trabalho. Consulte as opções de credenciais de origem disponíveis em Autenticar o Buildkite em um repositório privado.
-
-
(Opcional) Em Ambiente:
-
Escolha uma Imagem de ambiente e Computação compatíveis.
Observe que você tem a opção de substituir as configurações de imagem e instância usando um rótulo nas etapas de YAML do Buildkite. Para obter mais informações, consulte Etapa 4: atualizar as etapas do pipeline do Buildkite.
-
-
(Opcional) Em Buildspec:
-
O buildspec será ignorado por padrão, a menos que
buildspec-override: "true"seja adicionado como rótulo. Em vez disso, o CodeBuild o substituirá para usar comandos que configurarão o executor auto-hospedado.nota
O CodeBuild não é compatível com arquivos buildspec para compilações de executores auto-hospedados. Para buildspecs em linha, será necessário habilitar git-credential-helper no buildspec se você tiver configurado as credenciais de origem gerenciada do CodeBuild
-
-
-
Continue com os valores padrão e escolha Criar projeto de compilação.
-
Salve o URL da carga útil e os valores de Segredo no pop-up Criar webhook. Siga as instruções no pop-up para criar um webhook da organização do Buildkite ou continue para a próxima seção.
Etapa 3: criar um webhook do CodeBuild no Buildkite
Nessa etapa, você usa os valores de URL de carga útil e Segredo do webhook do CodeBuild para criar um webhook no Buildkite. Esse webhook é usado para acionar compilações no CodeBuild quando um trabalho válido do Buildkite é iniciado.
Como criar um webhook no Buildkite
-
Acesse a página de Configurações da organização do Buildkite.
-
Em Integrações, selecione Serviços de notificação.
-
Escolha Adicionar ao lado da caixa Webhook. Na página Adicionar notificação de webhook, use a seguinte configuração:
-
Em URL do webhook, adicione o valor salvo de URL de carga útil.
-
Em Token, verifique se a opção Enviar o token como X-Buildkite-Token está selecionada. Adicione o valor de Segredo do webhook ao campo Token.
-
Em Token, verifique se a opção Enviar o token como X-Buildkite-Token está selecionada. Adicione o valor de Segredo do webhook ao campo Token.
-
Em Eventos, selecione o evento
job.scheduleddo webhook. -
(Opcional) Em Pipelines, você pode optar por acionar somente compilações para um pipeline específico.
-
-
Escolha Adicionar notificação de webhook.
Etapa 4: atualizar as etapas do pipeline do Buildkite
Nessa etapa, você atualiza as etapas do pipeline do Buildkite para adicionar os rótulos necessários e as substituições opcionais. Consulte a lista completa de versões compatíveis em Substituições de rótulos compatíveis com o executor do Buildkite hospedado pelo CodeBuild.
Atualizar as etapas do pipeline
-
Acesse a página de etapas do pipeline do Buildkite selecionando o pipeline do Buildkite, escolhendo Configurações e Etapas.
Se ainda não tiver feito isso, escolha Converter em etapas do YAML.
-
No mínimo, você precisará especificar uma Tag de agente do Buildkite
referenciando o nome do pipeline do CodeBuild. O nome do projeto é necessário para vincular as configurações relacionadas à AWS do trabalho do Buildkite a um projeto específico do CodeBuild. Ao incluir o nome do projeto no YAML, o CodeBuild pode invocar trabalhos com as configurações corretas do projeto. agents: project: "codebuild-<project name>"Veja a seguir um exemplo de etapas do pipeline do Buildkite com apenas a tag do rótulo do projeto:
agents: project: "codebuild-myProject" steps: - command: "echo \"Hello World\""Você também pode substituir a imagem e o tipo de computação no rótulo. Para obter uma lista das imagens disponíveis, consulte Imagens de computação compatíveis com o executor do Buildkite hospedado pelo CodeBuild. O tipo de computação e a imagem no rótulo substituirão as configurações do ambiente no projeto. Para substituir as configurações de ambiente por uma compilação de computação do CodeBuild EC2 ou Lambda, use a seguinte sintaxe:
agents: project: "codebuild-<project name>" image: "<environment-type>-<image-identifier>" instance-size: "<instance-size>"Veja a seguir um exemplo de etapas do pipeline do Buildkite com substituições de imagens e tamanhos de instância:
agents: project: "codebuild-myProject" image: "arm-3.0" instance-size: "small" steps: - command: "echo \"Hello World\""Você pode substituir a frota usada para a compilação no rótulo. Isso substituirá as configurações de frota definidas no projeto para usar a frota especificada. Consulte mais informações em Executar compilações em frotas de capacidade reservada.
Para substituir as configurações da frota para uma compilação computacional do Amazon EC2, use a seguinte sintaxe:
agents: project: "codebuild-<project name>" fleet: "<fleet-name>"Para substituir a frota e a imagem usadas para a compilação, use a seguinte sintaxe:
agents: project: "codebuild-<project name>" fleet: "<fleet-name>" image: "<environment-type>-<image-identifier>"Veja a seguir um exemplo de etapas do pipeline do Buildkite com substituições de frota e imagem:
agents: project: "codebuild-myProject" fleet: "myFleet" image: "arm-3.0" steps: - command: "echo \"Hello World\"" -
Você pode optar por executar comandos de buildspec em linha durante a compilação do executor do Buildkite auto-hospedado (consulte mais detalhes em Executar os comandos de buildspec nas fases INSTALL, PRE_BUILD e POST_BUILD). Para especificar que a compilação do CodeBuild deve executar comandos de buildspec durante a compilação do executor auto-hospedado do Buildkite, use a seguinte sintaxe:
agents: project: "codebuild-<project name>" buildspec-override: "true"Veja a seguir um exemplo de um pipeline do Buildkite com uma substituição de buildspec:
agents: project: "codebuild-myProject" buildspec-override: "true" steps: - command: "echo \"Hello World\"" -
Como opção, você pode fornecer rótulos além daqueles com que o CodeBuild é compatível. Esses rótulos serão ignorados com o objetivo de substituir os atributos da compilação, mas não falharão na solicitação do webhook. Por exemplo, adicionar
myLabel: “testLabel"como rótulo não impedirá a execução da compilação.
Etapa 5: revisar os resultados
Sempre que um trabalho do Buildkite é iniciado no pipeline, o CodeBuild recebe um evento job.scheduled do webhook por meio do webhook do Buildkite. Para cada trabalho na compilação do Buildkite, o CodeBuild inicia uma compilação para executar um executor temporário do Buildkite. O executor é responsável por executar um único trabalho do Buildkite. Depois que o trabalho for concluído, o executor e o processo de compilação associado serão encerrados imediatamente.
Para visualizar os logs de trabalho do fluxo de trabalho, acesse o pipeline do Buildkite e selecione a compilação mais recente (você pode acionar uma nova compilação escolhendo Nova compilação). Depois que a compilação associada do CodeBuild para cada um dos trabalhos começar e assumir o trabalho, você deverá ver os logs do trabalho no console do Buildkite.
Autenticar o Buildkite em um repositório privado
Se você tem um repositório privado configurado no pipeline do Buildkite, o Buildkite exige permissões adicionais no ambiente de compilação
Como fazer a autenticação com o CodeBuild
O CodeBuild oferece processamento de credenciais gerenciado para os tipos de origens compatíveis. Para usar as credenciais de origem do CodeBuild a fim de extrair o repositório de origem do trabalho, você pode seguir estas etapas:
-
No console do CodeBuild, acesse Editar projeto ou crie um projeto do CodeBuild usando as etapas em Etapa 2: criar um projeto do CodeBuild com um webhook.
-
Em Opções de credencial de origem do Buildkite, selecione o provedor do repositório de origem do trabalho.
-
Se você quiser usar as credenciais do CodeBuild no nível da conta, verifique se elas estão configuradas corretamente. Além disso, se o projeto tiver um buildspec em linha configurado, verifique se o git-credential-helper está habilitado.
-
Se você quiser usar as credenciais do CodeBuild no nível do projeto, selecione Usar credenciais de substituição somente para este projeto e configure as credenciais para o projeto.
-
-
Nas configurações do pipeline do Buildkite, acesse Configurações do repositório. Defina as configurações de checkout do repositório de origem como Checkout via HTTPS
Como fazer a autenticação com os segredos do Buildkite
O Buildkite mantém um plug-in de ssh-checkout
-
Gere uma chave SSH pública e privada usando o endereço de e-mail, por exemplo
ssh-keygen -t rsa -b 4096 -C "myEmail@address.com" -
Adicione a chave pública ao repositório de origem privado. Por exemplo, você pode seguir este guia
para adicionar uma chave a uma conta do GitHub. -
Adicione um novo segredo de chave SSH
ao cluster do Buildkite. No cluster do Buildkite, selecione Segredos → Novo segredo. Adicione um nome para o segredo no campo Chave e adicione a chave SSH privada no campo Valor:
-
No pipeline do Buildkite, acesse as configurações do repositório e defina o checkout para usar SSH.
-
Atualize as etapas do YAML do pipeline para usar o plug-in
git-ssh-checkout. Por exemplo, o arquivo YAML do pipeline a seguir usa a ação de checkout com a chave secreta do Buildkite acima:agents: project: "codebuild-myProject" steps: - command: "npm run build" plugins: - git-ssh-checkout#v0.4.1: ssh-secret-key-name: 'SOURCE_SSH_KEY' -
Ao executar um trabalho de execução auto-hospedado do Buildkite no CodeBuild, o Buildkite agora usa automaticamente o valor do segredo configurado ao extrair o repositório privado
Opções de configuração do executor
É possível especificar as seguintes variáveis de ambiente na configuração do projeto para modificar a configuração dos executores auto-hospedados:
-
CODEBUILD_CONFIG_BUILDKITE_AGENT_TOKEN: o CodeBuild busca o valor do segredo configurado como o valor dessa variável de ambiente de AWS Secrets Manager para registrar o agente de executor auto-hospedado do Buildkite. Essa variável de ambiente deve ser do tipoSECRETS_MANAGERe o valor deve ser o nome do segredo no Secrets Manager. Uma variável de ambiente do token do agente do Buildkite é necessária para todos os projetos do executor do Buildkite. -
CODEBUILD_CONFIG_BUILDKITE_CREDENTIAL_DISABLE: por padrão, o CodeBuild carrega as credenciais de origem no nível da conta ou do projeto no ambiente de compilação, pois essas credenciais são usadas pelo agente do Buildkite para extrair o repositório de origem do trabalho. Para desabilitar esse comportamento, você pode adicionar essa variável de ambiente ao projeto com o valor definido comotrue, o que impedirá que as credenciais de origem sejam carregadas no ambiente de compilação.