

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Tutorial: Configurar um executor do CodeBuild-hosted Buildite
<a name="sample-runner-buildkite"></a>

Este tutorial mostra como configurar seus CodeBuild projetos para executar trabalhos do Buildkite. Para obter mais informações sobre como usar o Buildkite com, consulte. CodeBuild [Self-managed Corredor do Buildkite em AWS CodeBuild](buildkite-runner.md)<a name="sample-runner-buildkite-prerequisites"></a>

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](https://buildkite.com/docs/pipelines/getting-started).
+ 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](https://buildkite.com/docs/pipelines/create-your-own).  
![Criar um projeto no Buildkite](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/buildkite-first.png)

## Etapa 1: gerar um token de agente do Buildkite
<a name="w2aac26c33c12c13b7"></a>

Nesta etapa, você gerará um token de agente no Buildkite que será usado para autenticar os executores auto-hospedados. CodeBuild Consulte mais informações sobre esse recurso em [Buildkite Agent Tokens](https://buildkite.com/docs/agent/v3/tokens). 

**Como gerar um token de agente do Buildkite**

1. No cluster do Buildkite, escolha **Tokens de agente** e **Novo token**.

1. Adicione uma descrição ao token e clique em **Criar token**.

1. Salve o valor do token do agente, pois ele será usado posteriormente durante a configuração do CodeBuild projeto.  
![Tokens de agente no Buildkite](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/buildkite-createtoken.png)

## Etapa 2: criar um CodeBuild projeto com um webhook
<a name="sample-runner-buildkite-create-project"></a>

**Para criar um CodeBuild projeto com um webhook**

1. Abra o AWS CodeBuild console em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Crie um projeto de compilação auto-hospedado. Para obter informações, consulte [Criar um projeto de compilação (console)](create-project.md#create-project-console) e [Executar uma compilação (console)](run-build-console.md).
   +  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**. Você será solicitado a criar um novo segredo AWS Secrets Manager com um valor secreto igual ao token do agente Buildkite que você gerou acima.
     + (Opcional) Se você quiser usar credenciais CodeBuild gerenciadas para seu trabalho, selecione o provedor do repositório de origem do seu trabalho 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](#sample-runner-buildkite-config).
   + (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](#sample-runner-buildkite-update-pipeline).
   + (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 substituirá para usar comandos que configurarão o executor auto-hospedado.
**nota**  
CodeBuild não oferece suporte a arquivos buildspec para compilações de executores auto-hospedados do Buildkite. Para especificações de construção embutidas, você precisará habilitar o [git-credential-helper em seu buildspec se tiver configurado as credenciais](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.env.git-credential-helper) de origem gerenciada CodeBuild 

1. Continue com os valores padrão e escolha **Criar projeto de compilação**.

1. 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: Crie um CodeBuild webhook no Buildkite
<a name="sample-runner-buildkite-codebuild-webhook"></a>

Nesta etapa, você usará os valores **Payload URL** e **Secret** do CodeBuild webhook para criar um novo webhook no Buildkite. Esse webhook será usado para acionar compilações CodeBuild quando um trabalho válido do Buildkite for iniciado.

**Como criar um webhook no Buildkite**

1. Acesse a página de **Configurações** da organização do Buildkite.

1. Em **Integrações**, selecione **Serviços de notificação**.

1. Escolha **Adicionar** ao lado da caixa **Webhook**. Na página **Adicionar notificação de webhook**, use a seguinte configuração:

   1. Em **URL do webhook**, adicione o valor salvo de **URL de carga útil**.

   1. 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**.

   1. Em, verifique se a opção **Enviar o token como X-Buildkite-Token** está selecionada. Adicione o valor de **Segredo** do webhook ao campo **Token**.

   1. Em **Eventos**, selecione o evento `job.scheduled` do webhook.

   1. (Opcional) Em **Pipelines**, você pode optar por acionar somente compilações para um pipeline específico.

1. Escolha **Adicionar notificação de webhook**.

## Etapa 4: atualizar as etapas do pipeline do Buildkite
<a name="sample-runner-buildkite-update-pipeline"></a>

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 etiquetas suportadas com o executor CodeBuild-hosted Buildkite](buildkite-runner-update-labels.md).

**Atualizar as etapas do pipeline**

1. 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.**  
![Etapas para atualizar o YAML.](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/buildkite-steps.png)

1. No mínimo, você precisará especificar uma [tag do agente Buildkite](https://buildkite.com/docs/agent/v3/cli-start#agent-targeting) referenciando o nome do seu pipeline. CodeBuild O nome do projeto é necessário para vincular as configurações AWS relacionadas do seu trabalho no Buildkite a um projeto específico. CodeBuild Ao incluir o nome do projeto no YAML, CodeBuild é permitido 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 CodeBuild-hosted Buildkite](buildkite-runner-update-yaml.images.md). O tipo de computação e a imagem no rótulo substituirão as configurações do ambiente no projeto. Para substituir suas configurações de ambiente para uma compilação de computação 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](https://docs.aws.amazon.com/codebuild/latest/userguide/fleets.html).

   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\""
   ```

1. 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](sample-runner-buildkite-buildspec.md)). Para especificar que a CodeBuild compilação deve executar comandos buildspec durante a compilação do executor autohospedado 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\""
   ```

1. Opcionalmente, você pode fornecer rótulos fora dos CodeBuild compatíveis. 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: analise seus resultados
<a name="sample-runner-buildkite-verify"></a>

Sempre que um trabalho do Buildkite for iniciado em seu pipeline, CodeBuild receberá um evento de webhook por meio do `job.scheduled` webhook do Buildkite. Para cada trabalho em sua compilação do Buildkite, CodeBuild iniciará uma compilação para executar um executor efêmero 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 CodeBuild compilação associada a cada um dos seus trabalhos começar e continuar com o trabalho, você deverá ver os registros do trabalho no console do Buildkite

![Analise os resultados.](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/buildkite-log.png)


## Autenticar o Buildkite em um repositório privado
<a name="sample-runner-buildkite-config"></a>

Se você tem um repositório privado configurado no pipeline do Buildkite, o Buildkite exige [permissões adicionais no ambiente de compilação](https://buildkite.com/docs/agent/v3/github-ssh-keys) para extrair o repositório, pois o Buildkite não vende credenciais para executores auto-hospedados extraírem de repositórios privados. Para autenticar o agente executor auto-hospedado do Buildkite no repositório externo de origem privada, você pode usar uma das opções a seguir.

**Para autenticar com CodeBuild**

CodeBuild oferece tratamento gerenciado de credenciais para tipos de fontes compatíveis. Para usar as credenciais de CodeBuild origem para extrair o repositório de origem do seu trabalho, você pode usar as seguintes etapas:

1. No CodeBuild console, navegue até **Editar projeto** ou crie um novo CodeBuild projeto usando as etapas em[Etapa 2: criar um CodeBuild projeto com um webhook](#sample-runner-buildkite-create-project).

1. Em **Opções de credencial de origem do Buildkite**, selecione o provedor do repositório de origem do trabalho.

   1. Se você quiser usar CodeBuild credenciais 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](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.env.git-credential-helper) está habilitado.

   1. Se você quiser usar CodeBuild credenciais em nível de projeto, selecione **Usar credenciais de substituição somente para este projeto** e configure credenciais para seu projeto.

1. 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**  
![Analise os resultados.](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/buildkite-repo-https.png)

**Como fazer a autenticação com os segredos do Buildkite**

O Buildkite mantém um [plug-in de ssh-checkout](https://github.com/buildkite-plugins/git-ssh-checkout-buildkite-plugin) que pode ser usado para autenticar o executor auto-hospedado em um repositório de origem externo usando uma chave SSH. O valor da chave é armazenado como um [segredo do Buildkite](https://buildkite.com/docs/pipelines/security/secrets/buildkite-secrets) e obtido automaticamente pelo agente de executor auto-hospedado do Buildkite ao tentar extrair um repositório privado. Para configurar o plug-in ssh-checkout do pipeline do Buildkite, siga estas etapas:

1. 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"`

1. Adicione a chave pública ao repositório de origem privado. Por exemplo, você pode seguir [este guia](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account) para adicionar uma chave a uma GitHub conta.

1. Adicione um [novo segredo de chave SSH](https://buildkite.com/docs/pipelines/hosted-agents/code-access#private-repositories-with-other-providers-add-the-ssh-key-secret) 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**:  
![Analise os resultados.](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/buildkite-secret.png)

1. No pipeline do Buildkite, acesse as configurações do repositório e defina o checkout para usar **SSH**.  
![Analise os resultados.](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/buildkite-repo.png)

1. 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'
   ```

1. Ao executar um trabalho de execução auto-hospedado do Buildkite CodeBuild, o Buildkite agora usará automaticamente seu valor secreto configurado ao extrair seu repositório privado

## Opções de configuração do executor
<a name="sample-buildkite-runner-auth"></a>

É 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`: CodeBuild buscará o valor secreto configurado como o valor dessa variável de ambiente para registrar o agente AWS Secrets Manager executor auto-hospedado do Buildkite. Essa variável de ambiente deve ser do tipo `SECRETS_MANAGER` e 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, CodeBuild carregará as credenciais de origem em nível de conta ou projeto no ambiente de compilação, pois essas credenciais são usadas pelo agente 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 como `true`, o que impedirá que as credenciais de origem sejam carregadas no ambiente de compilação.