Tutorial: Configurar um CodeBuild executor de GitHub ações hospedado - 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á.

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

Este tutorial mostra como configurar seus CodeBuild projetos para executar trabalhos do GitHub Actions. Para obter mais informações sobre o uso de GitHub ações com, CodeBuild consulteTutorial: Configurar um CodeBuild executor de GitHub ações hospedado.

Para concluir este tutorial, você deve primeiramente:

  • Conecte-se com um token de acesso pessoal, um segredo, OAuth aplicativo ou GitHub aplicativo do Secrets Manager. Se quiser se conectar a um OAuth aplicativo, 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 ImportSourceCredentials APIo. Para obter mais instruções, consulte GitHub e acesso ao GitHub Enterprise Server em CodeBuild.

  • 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 analisará no GitHub console. Você também pode escolher GitHub Enterprise como seu provedor de origem. Para saber mais sobre a criação de um webhook no GitHub Enterprise, consulteGitHub webhooks manuais.

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 Repositório URL, insirahttps://github.com/user-name/repository-name.

      nota

      Por padrão, seu projeto só receberá WORKFLOW_JOB_QUEUED eventos para um único repositório. Se você quiser receber eventos para todos os repositórios dentro de uma organização ou empresa, consulteGitHub webhooks globais e organizacionais.

    • 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 QUEUED eventos WORKFLOWJOB_ _.

        Crie uma configuração para ser acionada somente por eventos de trabalhos do fluxo de trabalho do GitHub Actions.
    • 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 em seu fluxo YAML de trabalho de GitHub ações. Para ter mais informações, consulte Etapa 2: atualizar seu fluxo de trabalho de GitHub ações YAML

    • Em Buildspec:

      • Observe que seu buildspec será ignorado, a menos que buildspec-override:true seja adicionado como um rótulo. Em vez disso, o CodeBuild substituirá para usar comandos que configurarão o executor auto-hospedado.

  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á seu YAML arquivo de 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 e. Substituições de rótulos suportadas pelo executor de ações CodeBuild hospedado GitHub

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 noYAML, 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> corresponde 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çõesYAML:

    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. Consulte Imagens de computação compatíveis com o executor CodeBuild de ações hospedado GitHub para obter uma lista das imagens disponíveis. O tipo de computação e a imagem no rótulo substituirão as configurações do ambiente em seu projeto. Para substituir suas configurações de ambiente para uma compilação de computação 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 a seguir um exemplo de um fluxo de trabalho de GitHub açõesYAML:

    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 sua construção na etiqueta. Isso substituirá as configurações de frota definidas em seu projeto para usar a frota especificada. Para obter mais informações, consulte O Run se baseia em frotas de capacidade reservada. Para substituir as configurações da sua frota para uma compilação EC2 computacional da Amazon, 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 construçã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 a seguir um exemplo de um fluxo de trabalho de GitHub açõesYAML:

    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 seus trabalhos de GitHub ações em uma imagem personalizada, você pode configurar uma imagem personalizada em seu CodeBuild projeto e evitar fornecer um rótulo de substituição de imagem. CodeBuild usará a imagem configurada no projeto se nenhum rótulo de substituição de imagem for fornecido.

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

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.

Execute comandos buildspec nas fases INSTALLBUILD, PRE _ e _ POST BUILD

Por padrão, CodeBuild ignora qualquer comando buildspec ao executar uma compilação de ações auto-hospedada. GitHub Para executar comandos buildspec durante a compilação, eles buildspec-override:true podem ser adicionados como um sufixo ao rótulo:

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

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

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

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

  • CodeBuild não baixará nenhuma fonte primária ou secundária durante a DOWNLOAD_SOURCE fase. 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 INSTALL fase PRE_BUILD ou, o executor auto-hospedado não CodeBuild será iniciado e o trabalho do fluxo de trabalho de GitHub ações precisará ser cancelado manualmente.

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

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

Carregando o registro do trabalho.

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

O registro do trabalho.

Filtrar eventos de webhook de GitHub ações ()AWS CloudFormation

A parte YAML formatada a seguir de um AWS CloudFormation modelo 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 \[CI-CodeBuild\] regular.

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 de GitHub ações ()AWS CDK

O AWS CDK modelo 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 de GitHub ações (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" } } }