Configure executores de GitHub ações auto-hospedados em AWS CodeBuild - AWS CodeBuild

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á.

Configure executores de GitHub ações auto-hospedados em AWS CodeBuild

Você pode configurar seu projeto para configurar executores de GitHub ações auto-hospedados em CodeBuild contêineres para processar seus trabalhos de fluxo de trabalho do GitHub Actions. Isso pode ser feito configurando um webhook usando seu CodeBuild projeto e atualizando seu fluxo de trabalho de GitHub ações YAML para usar executores auto-hospedados hospedados em máquinas. CodeBuild Para obter mais informações, consulte Sobre executores auto-hospedados.

As etapas de alto nível para configurar um CodeBuild projeto para executar trabalhos de GitHub ações são as seguintes:

  1. Se você ainda não tiver feito isso, crie um token de acesso pessoal ou conecte-se a um aplicativo OAuth ao qual conectar seu projeto. GitHub

  2. Navegue até o CodeBuild console, crie um CodeBuild projeto com um webhook e configure seus filtros de webhook.

  3. Atualize seu fluxo de trabalho de GitHub ações YAML GitHub para configurar seu ambiente de compilação.

Para obter um procedimento mais detalhado, consulteTutorial: Configurar um executor de GitHub ações CodeBuild auto-hospedado.

Esse recurso permite que seus trabalhos de fluxo de trabalho do GitHub Actions obtenham integração nativa AWS, o que fornece segurança e conveniência por meio de recursos como IAM AWS CloudTrail, AWS Secrets Manager integração e Amazon VPC. Você pode acessar os tipos de instância mais recentes, incluindo instâncias baseadas em ARM.

Tutorial: Configurar um executor de GitHub ações CodeBuild auto-hospedado

Este tutorial mostra como configurar seus CodeBuild projetos para executar trabalhos do GitHub Actions.

Pré-requisitos

Para concluir este tutorial, você deve primeiramente:

  • Conecte-se com um aplicativo OAuth ou crie um token de acesso pessoal. Se quiser se conectar a um aplicativo OAuth, você deve usar o CodeBuild console para fazer isso. Se quiser criar um token de acesso pessoal, você pode usar o CodeBuild console ou usar a ImportSourceCredentials API. Para obter mais instruções, consulteGitHub e token de acesso do GitHub Enterprise Server.

  • Conecte-se CodeBuild à sua GitHub conta. Para fazer isso, é possível utilizar uma das seguintes opções:

    nota

    Isso só precisa ser feito se você não estiver conectado GitHub à sua conta.

Etapa 1: criar um CodeBuild projeto com um webhook

Nesta etapa, você criará um CodeBuild projeto com um webhook e o revisará no GitHub console.

Para criar um CodeBuild projeto com um webhook
  1. Abra o AWS CodeBuild console em https://console.aws.amazon.com/codesuite/codebuild/home.

  2. Crie um projeto de compilação. Para obter informações, consulte Criar um projeto de compilação (console) e Executar uma compilação (console).

    • Em Source (Origem):

      • Em Source provider, escolha GitHub.

      • Em Repositório, escolha Repositório na minha GitHub conta.

      • Em Repository URL (URL do repositório), insira https://github.com/user-name/repository-name.

    • Em eventos de webhook de fonte primária:

      • Para Webhook, opcional, selecione Reconstruir sempre que uma alteração de código for enviada para esse repositório.

      • Em Tipo de evento, selecione WORKFLOW_JOB_QUEUED. Depois que isso for ativado, as compilações serão acionadas somente pelos eventos de trabalhos do fluxo de trabalho do GitHub Actions.

        nota

        CodeBuild só processará eventos de trabalhos do fluxo de trabalho do GitHub Actions se um webhook tiver grupos de filtros contendo o filtro de eventos WORKFLOW_JOB_QUEUED.

    • Em Environment (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 no seu fluxo de trabalho de GitHub ações YAML. Para mais informações, consulte Etapa 2: atualizar seu fluxo de trabalho de GitHub ações YAML.

    • Em Buildspec:

      • Observe que seu Buildspec será ignorado. Em vez disso, o CodeBuild substituirá para usar comandos que configurarão o executor auto-hospedado. A principal responsabilidade deste projeto é configurar um executor auto-hospedado para executar trabalhos de fluxo de CodeBuild trabalho do GitHub Actions.

  3. Continue com os valores padrão e escolha Criar projeto de construção.

  4. Abra o GitHub console em https://github.com/user-name/repository-name/settings/hooks para verificar se um webhook foi criado e está habilitado para fornecer eventos de trabalhos do Workflow.

Etapa 2: atualizar seu fluxo de trabalho de GitHub ações YAML

Nesta etapa, você atualizará o arquivo YAML do fluxo de trabalho do GitHub Actions GitHubpara configurar seu ambiente de compilação e usar os executores auto-hospedados do GitHub Actions em. CodeBuild Para obter mais informações, consulte Usando rótulos com executores auto-hospedados.

Atualize seu fluxo de trabalho de GitHub ações (YAML)

Navegue até GitHube atualize a runs-onconfiguração em seu fluxo de trabalho de GitHub ações YAML para configurar seu ambiente de compilação. Para fazer isso, é possível utilizar uma das seguintes opções:

  • Você pode especificar o nome do projeto e o ID da execução. Nesse caso, a compilação usará sua configuração de projeto existente para computação, imagem, versão da imagem e tamanho da instância. O nome do projeto é necessário para vincular as configurações AWS relacionadas do seu trabalho de GitHub ações a um CodeBuild projeto específico. Ao incluir o nome do projeto no YAML, CodeBuild é permitido invocar trabalhos com as configurações corretas do projeto. Ao fornecer o ID de execução, CodeBuild mapeará sua compilação para execuções de fluxo de trabalho específicas e interromperá a compilação quando a execução do fluxo de trabalho for cancelada. Para obter mais informações, consulte githubcontexto.

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}
    nota

    Certifique-se de que seu <project-name>nome corresponda ao nome do projeto que você criou na etapa anterior. Se não corresponder, não CodeBuild processará o webhook e o fluxo de trabalho de GitHub ações poderá travar.

    Veja a seguir um exemplo de um fluxo de trabalho de GitHub ações YAML:

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} steps: - run: echo "Hello World!"
  • Você também pode substituir sua imagem e o tipo de computação no rótulo. Isso substituirá as configurações do ambiente em seu projeto. Para substituir suas configurações de ambiente para uma compilação computacional do Amazon EC2, use a seguinte sintaxe:

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<image>-<image-version>-<instance-size>

    Para substituir suas configurações de ambiente para uma compilação de computação Lambda, use a seguinte sintaxe:

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<environment-type>-<runtime-version>-<instance-size>

    Veja a seguir um exemplo de um fluxo de trabalho de GitHub ações YAML:

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-arm-3.0-small steps: - run: echo "Hello World!"
nota

Se uma dependência fornecida por GitHub -hosted runners não estiver disponível no CodeBuild ambiente, você poderá instalar a dependência usando GitHub Ações na execução do fluxo de trabalho. Por exemplo, você pode usar a setup-pythonação para instalar o Python em seu ambiente de compilação.

Imagens de computação compatíveis

Em seu rótulo, você pode substituir as configurações do ambiente do Amazon EC2 usando os valores nas três primeiras colunas. CodeBuild fornece as seguintes imagens de computação do Amazon EC2:

Imagem Versão de imagem Tamanho da instância Plataforma Identificador da imagem Definição

linux

4.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Amazon Linux 2 aws/codebuild/amazonlinux2-x86_64-standard:4.0 al2/standard/4.0

linux

5.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-x86_64-standard:5.0 al2/standard/5.0

arm

2.0

small

large

Amazon Linux 2 aws/codebuild/amazonlinux2-aarch64-standard:2.0 al2/aarch64/standard/2.0

arm

3.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-aarch64-standard:3.0 al2/aarch64/standard/3.0

ubuntu

5.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Ubuntu 20.04 aws/codebuild/standard:5.0 ubuntu/standard/5.0

ubuntu

6.0

Ubuntu 22.04 aws/codebuild/standard:6.0 ubuntu/standard/6.0

ubuntu

7.0

Ubuntu 22.04 aws/codebuild/standard:7.0 ubuntu/standard/7.0

windows

1.0

medium

large

Windows Server Core 2019 aws/codebuild/windows-base:2019-1.0 N/D

windows

2.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-2.0 N/D

windows

3.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-3.0 N/D

Além disso, você pode substituir as configurações do seu ambiente Lambda usando os valores a seguir. Para obter mais informações sobre a computação CodeBuild Lambda, consulte Trabalhando com. Trabalhando com AWS Lambda computação em AWS CodeBuild CodeBuild é compatível com as seguintes imagens de computação Lambda:

Tipo de ambiente Versão Runtime Tamanho da instância

linux-lambda

dotnet6

go1.21

corretto11

corretto17

corretto21

nodejs18

nodejs20

python3.11

python3.12

ruby3.2

1GB

2GB

4GB

8GB

10GB

arm-lambda

Para obter mais informações, consulte Modos e tipos de computação do ambiente de compilação e Imagens do Docker fornecidas por CodeBuild.

Etapa 3: analise seus resultados

Sempre que ocorre a execução de um fluxo de trabalho do GitHub Actions, CodeBuild receberia os eventos do trabalho do fluxo de trabalho por meio do webhook. Para cada trabalho no fluxo de trabalho, CodeBuild inicia uma compilação para executar um executor de ações efêmero GitHub . O executor é responsável por executar uma única tarefa de fluxo de trabalho. Depois que o trabalho for concluído, o executor e o processo de construção associado serão encerrados imediatamente.

Para visualizar os registros de trabalhos do seu fluxo de trabalho, navegue até seu repositório GitHub, escolha Ações, escolha o fluxo de trabalho desejado e, em seguida, escolha o trabalho específico do qual você gostaria de revisar os registros.

Você pode revisar os rótulos solicitados no registro enquanto o trabalho está esperando para ser realizado por um executor auto-hospedado. CodeBuild

Depois que o trabalho for concluído, você poderá visualizar o registro do trabalho.

Sobre o CodeBuild executor de GitHub ações hospedado

Quando devo incluir as substituições de imagem e instância no rótulo?

Você pode incluir as substituições de imagem e instância no rótulo para especificar um ambiente de criação diferente para cada um dos trabalhos do fluxo de trabalho do GitHub Actions. Isso pode ser feito sem a necessidade de criar vários CodeBuild projetos ou webhooks. Por exemplo, isso é útil quando você precisa usar uma matriz para seus trabalhos de fluxo de trabalho.

name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.os }} strategy: matrix: os: [arm-3.0-small, al2-5.0-large] steps: - run: echo "Hello World!"
nota

As aspas podem ser necessárias se houver runs-on vários rótulos contendo o contexto de GitHub ações.

Posso usar AWS CloudFormation esse recurso?

Sim, você pode incluir um grupo de filtros em seu AWS CloudFormation modelo que especifica um filtro de eventos de trabalho do fluxo de trabalho do GitHub Actions no webhook do seu projeto.

Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED

Para ter mais informações, consulte Filtrar eventos de GitHub webhook ()AWS CloudFormation.

Se precisar de ajuda para configurar as credenciais do projeto em seu AWS CloudFormation modelo, consulte AWS::CodeBuild::SourceCredentialo Guia do AWS CloudFormation usuário para obter mais informações.

Quais regiões oferecem suporte ao uso de um executor CodeBuild de GitHub ações hospedado?

CodeBuildOs executores de GitHub ações hospedados são suportados em todas as CodeBuild regiões. Para obter mais informações sobre Regiões da AWS onde CodeBuild está disponível, consulte AWS Serviços por região.

Quais plataformas oferecem suporte ao uso de um executor CodeBuild de GitHub ações hospedado?

CodeBuildexecutores de GitHub ações hospedados são compatíveis tanto com o Amazon AWS LambdaEC2 quanto com a computação. Você pode usar as seguintes plataformas: Amazon Linux 2, Amazon Linux 2023, Ubuntu e Windows Server Core 2019. Para obter mais informações, consulte Imagens de computação do EC2 e Imagens de computação do Lambda.

Solução de problemas: Como faço para solucionar problemas se o webhook não estiver funcionando?

Problema: Seu webhook não está funcionando ou seu trabalho de fluxo de trabalho está pendente. GitHub

Possível causa: seu evento de trabalhos do webhook Workflow pode não estar conseguindo acionar uma compilação. Examine os registros de respostas para ver a resposta ou a mensagem de erro.

Solução recomendada: Para depurar esse erro, use as instruções a seguir.

  1. Abra o GitHub console em https://github.com/user-name/repository-name/settings/hooks para ver as configurações do webhook do seu repositório. Nesta página, você verá um webhook que foi criado para o seu repositório.

  2. Escolha Editar e confirme se o webhook está habilitado para fornecer eventos de trabalhos do Workflow.

  3. Navegue até a guia Entregas recentes, encontre o workflow_job.queued evento correspondente e expanda o evento.

  4. Revise o campo de rótulos no Payload e verifique se está conforme o esperado.

  5. Por fim, revise a guia Resposta, pois ela contém a resposta ou a mensagem de erro retornada de CodeBuild.