Referência da ação de compilação e teste do AWS CodeBuild - AWS CodePipeline

Referência da ação de compilação e teste do AWS CodeBuild

Permite executar compilações e testes como parte do pipeline. Ao executar uma ação de compilação ou teste do CodeBuild, os comandos especificados em buildspec são executados dentro de um contêiner do CodeBuild. Todos os artefatos especificados como artefatos de entrada para uma ação do CodeBuild estão disponíveis dentro do contêiner que executa os comandos. O CodeBuild pode fornecer uma ação de compilação ou teste. Para obter mais informações, consulte o Guia do usuário do AWS CodeBuild.

Quando você usa o assistente do CodePipeline no console para criar um projeto de compilação, o projeto de compilação do CodeBuild mostra que o provedor de origem é o CodePipeline. Ao criar um projeto de compilação no console do CodeBuild, você não pode especificar o CodePipeline como provedor de origem. No entanto, adicionar a ação de compilação ao pipeline ajusta a origem no console do CodeBuild. Para obter mais informações, consulte ProjectSource na Referência da API do AWS CodeBuild.

Tipo de ação

  • Categoria: Build ou Test

  • Proprietário: AWS

  • Fornecedor: CodeBuild

  • Versão: 1

Parâmetros de configuração

ProjectName

Obrigatório: Sim

ProjectName é o nome do projeto de compilação no CodeBuild.

PrimarySource

Obrigatório: condicional

O valor do parâmetro PrimarySource deve ser o nome de um dos artefatos de entrada para a ação. O CodeBuild procura o arquivo buildspec e executa os comandos buildspec no diretório que contém a versão descompactada desse artefato.

Esse parâmetro será necessário se vários artefatos de entrada forem especificados para uma ação do CodeBuild. Quando houver apenas um artefato de origem para a ação, o artefato PrimarySource assumirá esse artefato como padrão.

BatchEnabled

Obrigatório: Não

O valor booleano do parâmetro BatchEnabled permite que a ação execute várias compilações na mesma execução de compilação.

Quando esta opção está habilitada, a opção CombineArtifacts está disponível.

Para exemplos de pipeline com compilações em lote habilitadas, consulte Integração do CodePipeline ao CodeBuild e compilações em lote.

BuildspecOverride

Obrigatório: Não

Uma declaração de buildspec em linha ou do arquivo buildspec que substitui a mais recente definida no projeto de compilação, apenas para esta compilação. O buildspec definido no projeto não é alterado.

Se for definido, esse valor poderá ser um dos seguintes:

  • Uma definição de buildspec em linha. Para obter mais informações, consulte a referência de sintaxe em Sintaxe de buildspec.

  • O caminho para um arquivo buildspec alternativo relativo ao valor da variável de ambiente CODEBUILD_SRC_DIR interna ou ao caminho para um bucket do S3. O bucket deve estar na mesma Região da AWS do projeto de compilação. Especifique o arquivo buildspec usando seu ARN (por exemplo, arn:aws:s3:::my-codebuild-sample2/buildspec.yml). Se esse valor não for fornecido ou for definido como uma string vazia, o código-fonte deverá conter um arquivo buildspec no diretório raiz. Para obter mais informações sobre como adicionar um caminho, consulte Nome do arquivo e local de armazenamento de buildspec.

nota

Como essa propriedade permite a você alterar os comandos de compilação que serão executados no contêiner, observe se uma entidade principal do IAM com a capacidade de chamar essa API e definir esse parâmetro consegue substituir as configurações padrão. Além disso, é recomendável usar um local de buildspec confiável, como um arquivo no repositório de origem ou um bucket do Amazon S3.

CombineArtifacts

Obrigatório: Não

O valor booleano do parâmetro CombineArtifacts combina todos os artefatos de uma compilação em lote em um único arquivo de artefato para a ação de compilação.

Para usar esta opção, o parâmetro BatchEnabled deve estar ativado.

EnvironmentVariables

Obrigatório: Não

O valor deste parâmetro é usado para definir variáveis de ambiente para a ação do CodeBuild no pipeline. O valor do parâmetro EnvironmentVariables assume a forma de uma matriz JSON de objetos de variáveis de ambiente. Consulte o parâmetro de exemplo em Declaração de ação (exemplo do CodeBuild).

Cada objeto tem três partes, todas são strings:

  • name: o nome ou a chave da variável de ambiente.

  • value: o valor da variável de ambiente. Ao usar o tipo PARAMETER_STORE ou SECRETS_MANAGER, este valor deve ser o nome de um parâmetro já armazenado no AWS Systems Manager Parameter Store ou um segredo já armazenado no AWS Secrets Manager, respectivamente.

    nota

    Não recomendamos o uso de variáveis de ambiente para armazenar valores confidenciais, principalmente credenciais da AWS. Quando você usa o console do CodeBuild ou a AWS CLI, as variáveis de ambiente são exibidas em texto sem formatação. Para valores confidenciais, recomendamos usar o tipo SECRETS_MANAGER.

  • type: (opcional) o tipo da variável de ambiente. Os valores válidos são PARAMETER_STORE, SECRETS_MANAGER ou PLAINTEXT. Se não especificado, assumirá como padrão PLAINTEXT.

nota

Ao inserir name, value e type na configuração das variáveis de ambiente, principalmente se a variável de ambiente contiver a sintaxe da variável de saída do CodePipeline, não ultrapasse o limite de 1000 caracteres no campo de valor da configuração. Um erro de validação será retornado quando esse limite for excedido.

Para obter mais informações, consulte EnvironmentVariable na Referência da API do AWS CodeBuild. Para ver um exemplo de ação do CodeBuild com uma variável de ambiente que retorna o nome de ramificação do GitHub, consulte Exemplo: use uma variável BranchName com as variáveis de ambiente do CodeBuild.

Input artifacts (Artefatos de entrada)

  • Número de artefatos: 1 to 5

  • Descrição: o CodeBuild procura o arquivo buildspec e executa os comandos de buildspec do diretório do artefato de origem primária. Quando uma única origem de entrada é especificada, ou quando mais de uma origem de entrada é especificada para a ação do CodeBuild, o único artefato, ou o artefato primário no caso de várias origens de entrada, deve ser definido usando-se o parâmetro de configuração da ação PrimarySource no CodePipeline.

    Cada artefato de entrada é extraído para seu próprio diretório, cujos locais são armazenados em variáveis de ambiente. O diretório do artefato de origem primária é disponibilizado com $CODEBUILD_SRC_DIR. Os diretórios de todos os outros artefatos de entrada são disponibilizados com $CODEBUILD_SRC_DIR_yourInputArtifactName.

    nota

    O artefato configurado no projeto do CodeBuild se torna o artefato de entrada usado pela ação do CodeBuild no pipeline.

Artefatos de saída

  • Número de artefatos: 0 to 5

  • Descrição: eles podem ser usados para disponibilizar os artefatos definidos no arquivo buildspec do CodeBuild para ações subsequentes no pipeline. Quando apenas um artefato de saída é definido, esse artefato pode ser definido diretamente na seção artifacts do arquivo buildspec. Quando mais de um artefato de saída é especificado, todos os artefatos referenciados devem ser definidos como artefatos secundários no arquivo buildspec. Os nomes dos artefatos de saída no CodePipeline devem coincidir com os identificadores de artefato no arquivo buildspec.

    nota

    O artefato configurado no projeto do CodeBuild se torna o artefato de entrada do CodePipeline na ação do pipeline.

    Se o parâmetro CombineArtifacts for selecionado para compilações em lote, o local do artefato de saída conterá os artefatos combinados de várias compilações processadas na mesma execução.

Variáveis de saída

Esta ação produzirá como variáveis todas as variáveis de ambiente que foram exportadas como parte da compilação. Para obter mais detalhes sobre como exportar variáveis de ambiente, consulte EnvironmentVariable no Guia da API do AWS CodeBuild.

Para obter mais informações sobre o uso das variáveis de ambiente do CodeBuild no CodePipeline, consulte os exemplos em Variáveis de saída da ação do CodeBuild. Para obter uma lista das variáveis de ambiente que você pode usar no CodeBuild, consulte Variáveis de ambiente em ambientes de compilação no Guia do usuário do AWS CodeBuild.

Permissões do perfil de serviço: ação do CodeBuild

Para compatibilidade com o CodeBuild, adicione o seguinte à declaração da política:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "codebuild:BatchGetBuilds", "codebuild:StartBuild", "codebuild:BatchGetBuildBatches", "codebuild:StartBuildBatch" ], "Resource": [ "arn:aws:codebuild:*:111122223333:project/[[ProjectName]]" ], "Effect": "Allow" } ] }

Declaração de ação (exemplo do CodeBuild)

YAML
Name: Build Actions: - Name: PackageExport ActionTypeId: Category: Build Owner: AWS Provider: CodeBuild Version: '1' RunOrder: 1 Configuration: BatchEnabled: 'true' CombineArtifacts: 'true' ProjectName: my-build-project PrimarySource: MyApplicationSource1 EnvironmentVariables: '[{"name":"TEST_VARIABLE","value":"TEST_VALUE","type":"PLAINTEXT"},{"name":"ParamStoreTest","value":"PARAMETER_NAME","type":"PARAMETER_STORE"}]' OutputArtifacts: - Name: MyPipeline-BuildArtifact InputArtifacts: - Name: MyApplicationSource1 - Name: MyApplicationSource2
JSON
{ "Name": "Build", "Actions": [ { "Name": "PackageExport", "ActionTypeId": { "Category": "Build", "Owner": "AWS", "Provider": "CodeBuild", "Version": "1" }, "RunOrder": 1, "Configuration": { "BatchEnabled": "true", "CombineArtifacts": "true", "ProjectName": "my-build-project", "PrimarySource": "MyApplicationSource1", "EnvironmentVariables": "[{\"name\":\"TEST_VARIABLE\",\"value\":\"TEST_VALUE\",\"type\":\"PLAINTEXT\"},{\"name\":\"ParamStoreTest\",\"value\":\"PARAMETER_NAME\",\"type\":\"PARAMETER_STORE\"}]" }, "OutputArtifacts": [ { "Name": "MyPipeline-BuildArtifact" } ], "InputArtifacts": [ { "Name": "MyApplicationSource1" }, { "Name": "MyApplicationSource2" } ] } ] }

Os recursos relacionados a seguir podem ajudar você à medida que trabalha com esta ação.