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 GitLab hospedado pelo CodeBuild

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

Este tutorial mostra como configurar projetos do CodeBuild para executar trabalhos do pipeline de CI/CD do GitLab. Para obter mais informações sobre como usar o GitLab ou o GitLab Self-Managed com o CodeBuild, consulte Executores autogerenciados do GitLab no AWS CodeBuild.

Para concluir este tutorial, você deve primeiramente:

  • Conecte-se com uma aplicação OAuth usando CodeConnections. Observe que, ao se conectar a uma aplicação OAuth, você deve usar o console do CodeBuild para fazer isso. Para obter mais instruções, consulte Acesso ao GitLab no CodeBuild.

  • Conecte o CodeBuild à conta do GitLab. Para fazer isso, você pode adicionar o GitLab como provedor de origem no console. Para obter instruções, consulte Acesso ao GitLab no CodeBuild.

    nota

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

    Com esse recurso, o CodeBuild precisa de permissões adicionais, como create_runner e manage_runner da aplicação OAuth do GitLab. Se houver CodeConnections existentes para uma conta específica do GitLab, ela não solicitará automaticamente atualizações de permissão. Para fazer isso, você pode acessar o console do CodeConnections e criar uma conexão fictícia com a mesma conta do GitLab para acionar a reautorização e obter as permissões adicionais. Com isso, todas as conexões existentes podem usar o recurso de execução. Depois de concluir, você poderá excluir a conexão fictícia.

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

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

      • Em Credencial, selecione uma das seguintes opções:

        • Escolha Credencial de origem padrão. A conexão padrão aplica uma conexão padrão do GitLab em todos os projetos.

        • Escolha Credencial de origem personalizada. A conexão personalizada aplica uma conexão personalizada do GitLab que substitui as configurações padrão da conta.

        nota

        Se você ainda não criou uma conexão com o provedor, precisará criar uma conexão do GitLab. Para obter instruções, consulte Conectar o CodeBuild ao GitLab.

      • Em Repositório, escolha o nome do projeto no GitLab especificando o caminho do projeto com o namespace.

    • 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 a opção for ativada, as compilações serão acionadas apenas pelos eventos de trabalhos do pipeline de CI/CD do GitLab.

        nota

        O CodeBuild processará somente eventos de trabalhos do pipeline de CI/CD do GitLab se um webhook tiver grupos de filtros contendo o filtro de eventos WORKFLOW_JOB_QUEUED.

        Crie uma configuração para ser acionada apenas por eventos de trabalhos do pipeline de CI/CD do GitLab.
    • 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 pipeline de CI/CD do GitLab. Para obter mais informações, consulte Etapa 2: criar um arquivo .gitlab-ci.yml no repositório.

    • 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 autogerenciado.

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

  4. Abra o console do GitLab em https://gitlab.com/user-name/repository-name/-/hooks para verificar se um webhook foi criado e está habilitado para fornecer eventos de trabalhos de fluxo de trabalho.

Etapa 2: criar um arquivo .gitlab-ci.yml no repositório

Nesta etapa, você criará um arquivo .gitlab-ci.yml no GitLab para configurar o ambiente de compilação e usar os executores autogerenciados do GitLab no CodeBuild. Para obter mais informações, consulte Usar executores autogerenciados.

Atualizar o YAML do pipeline de CI/CD do GitLab

Navegue até https://gitlab.com/user-name/project-name/-/tree/branch-name e crie um arquivo .gitlab-ci.yml no repositório. Para configurar o ambiente de compilação, execute uma destas ações:

  • Você pode especificar o nome do projeto do CodeBuild. Nesse caso, a compilação usará a 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 relacionadas à AWS do trabalho do GitLab 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.

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME

    $CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME é necessário para mapear a compilação para execuções de trabalhos específicos do pipeline e interromper a compilação quando a execução do pipeline é cancelada.

    nota

    Verifique se <project-name> corresponde ao nome do projeto criado no CodeBuild. Se não corresponder, o CodeBuild não processará o webhook e o pipeline de CI/CD do GitLab poderá travar.

    Veja abaixo um exemplo de um YAML do pipeline de CI/CD do GitLab:

    workflow: name: HelloWorld stages: # List of stages for jobs, and their order of execution - build build-job: # This job runs in the build stage, which runs first. stage: build script: - echo "Hello World!" tags: - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME
  • Você também pode substituir a imagem e o tipo de computação na tag. Para obter uma lista das imagens disponíveis, consulte Imagens de computação compatíveis com o executor do GitLab 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 Amazon EC2, use a seguinte sintaxe:

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - image:<environment-type>-<image-identifier> - instance-size:<instance-size>

    Veja abaixo um exemplo de um YAML do pipeline de CI/CD do GitLab:

    stages: - build build-job: stage: build script: - echo "Hello World!" tags: - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - image:arm-3.0 - instance-size:small
  • Você pode substituir a frota usada para a compilação na tag. 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:

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - fleet:<fleet-name>

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

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - fleet:<fleet-name> - image:<environment-type>-<image-identifier>

    Veja abaixo um exemplo de um YAML do pipeline de CI/CD do GitLab:

    stages: - build build-job: stage: build script: - echo "Hello World!" tags: - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - fleet:myFleet - image:arm-3.0
  • Para executar trabalhos do pipeline de CI/CD do GitLab 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.

Depois de confirmar suas alterações em .gitlab-ci.yml, um pipeline do GitLab será acionado e build-job enviará uma notificação de webhook que iniciará a compilação no CodeBuild.

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 autogerenciada do GitLab. Para executar comandos buildspec durante a compilação, buildspec-override:true pode ser adicionado como sufixo a tags:

tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - buildspec-override:true

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

Há várias limitações ao usar uma substituição de buildspec em uma compilação autogerenciada do GitLab:

  • O CodeBuild não executará comandos buildspec durante a fase BUILD, pois o executor autogerenciado é 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 autogerenciado e o trabalho do pipeline de CI/CD do GitLab 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 autogerenciado do GitLab.

Etapa 3: revisar os resultados

Sempre que ocorre uma execução do pipeline de CI/CD do GitLab, o CodeBuild recebe os eventos de trabalho do pipeline de CI/CD por meio do webhook. Para cada trabalho no pipeline de CI/CD, o CodeBuild inicia uma compilação para executar um executor efêmero do GitLab. O executor é responsável por executar um único trabalho do pipeline de CI/CD. 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 trabalhos do pipeline de CI/CD, navegue até o repositório no GitLab, escolha Compilação, Trabalhos e, em seguida, escolha o Trabalho específico do qual você gostaria de revisar os logs.

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

Filtrar eventos de webhook do GitLab (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 pipeline de CI/CD do GitLab com um nome de pipeline de CI/CD 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: GITLAB Location: CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION Triggers: Webhook: true ScopeConfiguration: Name: group-name FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.