Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Tutorial: configurar um executor do GitHub Actions hospedado pelo CodeBuild

Modo de foco
Tutorial: configurar um executor do GitHub Actions hospedado pelo CodeBuild - AWS CodeBuild

Este tutorial mostra como configurar projetos do CodeBuild para executar trabalhos do GitHub Actions. Para obter mais informações sobre como usar o GitHub Actions com o CodeBuild, consulte Tutorial: configurar um executor do GitHub Actions hospedado pelo CodeBuild.

Para concluir este tutorial, você deve primeiramente:

  • Conecte-se com um token de acesso pessoal, um segredo do Secrets Manager, uma aplicação OAuth ou uma aplicação GitHub. Se você quiser se conectar a uma aplicação OAuth, deverá usar o console do CodeBuild para fazer isso. Para criar um token de acesso pessoal, use o console do CodeBuild ou a API ImportSourceCredentials. Para obter mais instruções, consulte Acesso do GitHub e do GitHub Enterprise Server no CodeBuild.

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

    nota

    Isso só precisará ser feito se você não tiver se conectado ao GitHub da sua conta.

Etapa 1: criar um projeto do CodeBuild com um webhook

Nesta etapa, você criará um projeto do CodeBuild com um webhook e o revisará no console do GitHub. Você também pode escolher o GitHub Enterprise como provedor de origem. Para saber mais sobre como criar um webhook no GitHub Enterprise, consulte Webhooks manuais do GitHub.

Para criar um projeto do CodeBuild com um webhook
  1. Abra o console do AWS CodeBuild 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 Origem:

      • Em Provedor de origem, escolha GitHub.

      • Em Repositório, escolha Repositório em minha conta do GitHub.

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

      nota

      Por padrão, o projeto só receberá eventos WORKFLOW_JOB_QUEUED para um único repositório. Para receber eventos de todos os repositórios dentro de uma organização ou empresa, consulte Webhooks globais e organizacionais do GitHub.

    • Em Eventos de webhook da origem principal:

      • Em Webhook - opcional, selecione Recompilar toda vez que uma alteração de código for enviada para este repositório.

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

        nota

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

        Crie uma configuração para ser acionada somente pelos eventos de Trabalhos de fluxo de trabalho do GitHub Actions.
    • 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 no YAML do fluxo de trabalho do GitHub Actions. Para obter mais informações, consulte Etapa 2: atualizar o YAML do fluxo de trabalho do GitHub Actions

    • Em Buildspec:

      • Observe que o buildspec será ignorado, 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.

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

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

Etapa 2: atualizar o YAML do fluxo de trabalho do GitHub Actions

Nesta etapa, você atualizará o arquivo YAML do fluxo de trabalho do GitHub Actions no GitHub para configurar o ambiente de compilação e usar os executores auto-hospedados do GitHub Actions no CodeBuild. Para obter mais informações, consulte Usar rótulos com executores auto-hospedados e As substituições de rótulos são compatíveis com o executor do GitHub Actions hospedado pelo CodeBuild.

Atualizar o YAML do fluxo de trabalho do GitHub Actions

Navegue até o GitHub e atualize a configuração runs-on no YAML do fluxo de trabalho do GitHub Actions para configurar o 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á a configuração do 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 relacionadas à AWS do trabalho do GitHub Actions 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. Ao fornecer o ID de execução, o CodeBuild mapeará a 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 o contexto do github.

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

    Verifique se <project-name> corresponde ao nome do projeto criado na etapa anterior. Se não corresponder, o CodeBuild não processará o webhook e o fluxo de trabalho do GitHub Actions poderá travar.

    Veja abaixo um exemplo de YAML do fluxo de trabalho do GitHub Actions:

    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 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 GitHub Actions 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 para uma compilação computacional do CodeBuild EC2 ou Lambda, use a seguinte sintaxe:

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

    Veja abaixo um exemplo de YAML do fluxo de trabalho do GitHub Actions:

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:arm-3.0 - instance-size:small steps: - run: 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. Para obter mais informações, consulte 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:

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

    Para substituir a frota e a imagem usadas para a compilação, use a seguinte sintaxe:

    runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - fleet:<fleet-name> - image:<environment-type>-<image-identifier>

    Veja abaixo um exemplo de YAML do fluxo de trabalho do GitHub Actions:

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:arm-3.0 - instance-size:small steps: - run: echo "Hello World!"
  • Para executar trabalhos do GitHub Actions em uma imagem personalizada, você pode configurar uma imagem personalizada no projeto do CodeBuild e evitar fornecer um rótulo de substituição de imagem. O CodeBuild usará a imagem configurada no projeto se nenhum rótulo de substituição de imagem for fornecido.

  • 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 testLabel como rótulo não impedirá a execução da compilação.

nota

Se uma dependência fornecida por executores hospedados pelo GitHub não estiver disponível no ambiente do CodeBuild, você poderá instalar a dependência usando o GitHub Actions na execução do fluxo de trabalho. Por exemplo, você pode usar a ação setup-python para instalar o Python no ambiente de compilação.

Execute os comandos buildspec nas fases INSTALL, PRE_BUILD e POST_BUILD

Por padrão, o CodeBuild ignora qualquer comando buildspec ao executar uma compilação auto-hospedada do GitHub Actions. Para executar comandos buildspec durante a compilação, buildspec-override:true pode ser adicionado como sufixo ao rótulo:

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

Ao usar esse comando, o CodeBuild criará uma pasta chamada actions-runner na pasta de origem principal do contêiner. Quando o executor do GitHub Actions for iniciado durante a fase BUILD, o executor será executado no diretório actions-runner.

Há várias limitações ao usar uma substituição de buildspec em uma compilação auto-hospedada do GitHub Actions:

  • O CodeBuild não executará comandos buildspec durante a fase BUILD, pois o executor auto-hospedado é executado na fase BUILD.

  • O CodeBuild não baixará nenhuma fonte primária ou secundária durante a fase DOWNLOAD_SOURCE. Se você tiver um arquivo buildspec configurado, somente esse arquivo será baixado da fonte primária do projeto.

  • Se um comando de compilação falhar na fase PRE_BUILD ou INSTALL, o CodeBuild não iniciará o executor auto-hospedado e o trabalho do fluxo de trabalho do GitHub Actions precisará ser cancelado manualmente.

  • O CodeBuild busca o token do executor durante a fase DOWNLOAD_SOURCE, que tem um tempo de expiração de uma hora. Se as fases PRE_BUILD ou INSTALL excederem uma hora, o token do executor poderá expirar antes do início do executor auto-hospedado do GitHub.

Etapa 3: revisar os resultados

Sempre que ocorre a execução de um fluxo de trabalho do GitHub Actions, o CodeBuild recebe os eventos de trabalho do fluxo de trabalho por meio do webhook. Para cada trabalho no fluxo de trabalho, o CodeBuild inicia uma compilação para executar um executor temporário do GitHub Actions. O executor é responsável por executar um único trabalho de fluxo de trabalho. 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, navegue até o repositório no GitHub, escolha Ações, selecione o fluxo de trabalho desejado e, em seguida, escolha o Trabalho específico para o qual você gostaria de revisar os logs.

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

Carregando o log do trabalho.

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

O log do trabalho.

Filtrar eventos de webhook do GitHub Actions (AWS CloudFormation)

A seguinte parte formatada em YAML de um modelo do AWS CloudFormation cria um grupo de filtros que aciona uma compilação quando ela é avaliada como verdadeira. O grupo de filtros a seguir especifica uma solicitação de trabalho do fluxo de trabalho do GitHub Actions com um nome de fluxo de trabalho correspondente à expressão regular \[CI-CodeBuild\].

CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: service-role Artifacts: Type: NO_ARTIFACTS Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:5.0 Source: Type: GITHUB Location: CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION Triggers: Webhook: true ScopeConfiguration: Name: organization-name FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]

Filtrar eventos de webhook do GitHub Actions (AWS CDK)

O modelo do AWS CDK a seguir cria um grupo de filtros que aciona uma compilação quando ela é avaliada como verdadeira. O grupo de filtros a seguir especifica uma solicitação de trabalho do fluxo de trabalho do GitHub Actions.

import { aws_codebuild as codebuild } from 'aws-cdk-lib'; import {EventAction, FilterGroup} from "aws-cdk-lib/aws-codebuild"; const source = codebuild.Source.gitHub({ owner: 'owner', repo: 'repo', webhook: true, webhookFilters: [FilterGroup.inEventOf(EventAction.WORKFLOW_JOB_QUEUED)], })

Filtrar eventos de webhook do GitHub Actions (Terraform)

O modelo do Terraform a seguir cria um grupo de filtros que aciona uma compilação quando ela é avaliada como verdadeira. O grupo de filtros a seguir especifica uma solicitação de trabalho do fluxo de trabalho do GitHub Actions.

resource "aws_codebuild_webhook" "example" { project_name = aws_codebuild_project.example.name build_type = "BUILD" filter_group { filter { type = "EVENT" pattern = "WORKFLOW_JOB_QUEUED" } } }
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.