Etapa 5: criar o projeto de compilação - 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á.

Etapa 5: criar o projeto de compilação

(Etapa anterior: Etapa 4: fazer upload do código-fonte e do arquivo buildspec)

Nessa etapa, você cria um projeto de compilação que o AWS CodeBuild usa para executar a compilação. Um projeto de compilação inclui informações sobre como executar uma compilação, incluindo onde obter o código-fonte, qual ambiente de compilação usar, quais comandos de compilação executar e onde armazenar a saída da compilação. Um ambiente de compilação representa uma combinação de sistema operacional, tempo de execução da linguagem de programação e ferramentas CodeBuild usadas para executar uma compilação. O ambiente de compilação é expresso como uma imagem do Docker. Para obter mais informações, consulte Visão geral do Docker no site Docker Docs.

Para esse ambiente de compilação, você instrui CodeBuild a usar uma imagem do Docker que contém uma versão do Java Development Kit (JDK) e do Apache Maven.

Como criar o projeto de compilação
  1. Use a AWS CLI para executar o comando create-project:

    aws codebuild create-project --generate-cli-skeleton

    Os dados formatados JSON aparecem na saída. Copie os dados para um arquivo chamado create-project.json em um local no computador local ou em uma instância na qual a AWS CLI esteja instalada. Se você optar por usar um nome de arquivo diferente, certifique-se de usá-lo durante todo este tutorial.

    Altere os dados copiados para acompanhar o formato e, em seguida, salve os resultados:

    { "name": "codebuild-demo-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "serviceIAMRole" }

    Substitua ServiceIamRole pelo Amazon Resource Name (ARN) de uma função CodeBuild de serviço (por exemplo,). arn:aws:iam::account-ID:role/role-name Para criar uma, consulte Criar um perfil de serviço do CodeBuild.

    Nesses dados:

    • name representa uma identificador necessário para o projeto de build (neste exemplo, codebuild-demo-project). Os nomes de projeto de build devem ser únicos em todos os projetos de build em sua conta.

    • Para source, type é um valor necessário que representa o tipo de repositório de código-fonte (neste exemplo, S3 para um bucket do Amazon S3).

    • Para source, location representa o caminho para o código-fonte (neste exemplo, o nome de bucket de entrada seguido pelo nome do arquivo ZIP).

    • Para artifacts, type é um valor obrigatório que representa o tipo de repositório de artefato de saída da compilação (neste exemplo, S3 para um bucket do Amazon S3).

    • Para artifacts, location representa o nome do bucket de saída que você criou ou identificou anteriormente (neste exemplo, codebuild-region-ID-account-ID-output-bucket).

    • Para environment, type é um valor obrigatório que representa o tipo de ambiente de compilação (neste exemplo, LINUX_CONTAINER).

    • Paraenvironment, image é um valor obrigatório que representa a combinação de nome de imagem e tag do Docker que esse projeto de construção usa, conforme especificado pelo tipo de repositório de imagens do Docker (neste exemplo, aws/codebuild/standard:5.0 para uma imagem do Docker no repositório de imagens do CodeBuild Docker). aws/codebuild/standardé o nome da imagem do Docker. 5.0é a tag da imagem do Docker.

      Para encontrar mais imagens Docker que você possa utilizar em seus cenários, consulte Referência de ambiente de compilação.

    • Paraenvironment, computeType é um valor obrigatório que representa o CodeBuild uso dos recursos de computação (neste exemplo,BUILD_GENERAL1_SMALL).

    nota

    Outros valores disponíveis nos dados formatados JSON originais, tais como description, buildspec, auth (incluindo type e resource), path, namespaceType, name (para artifacts), packaging, environmentVariables (incluindo name e value), timeoutInMinutes, encryptionKey e tags (incluindo key e value) são opcionais. Eles não são usados neste tutorial, portanto, não são mostrados aqui. Para ter mais informações, consulte Criar um projeto de compilação (AWS CLI).

  2. Alterne para o diretório que contenha o arquivo que você acabou de salvar e execute o comando create-project novamente.

    aws codebuild create-project --cli-input-json file://create-project.json

    Se bem-sucedidos, dados semelhantes a estes aparecem na saída.

    { "project": { "name": "codebuild-demo-project", "serviceRole": "serviceIAMRole", "tags": [], "artifacts": { "packaging": "NONE", "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket", "name": "message-util.zip" }, "lastModified": 1472661575.244, "timeoutInMinutes": 60, "created": 1472661575.244, "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "encryptionKey": "arn:aws:kms:region-ID:account-ID:alias/aws/s3", "arn": "arn:aws:codebuild:region-ID:account-ID:project/codebuild-demo-project" } }
    • project representa informações sobre esse projeto de build.

      • tags representa as tags que foram declaradas.

      • packaging representa como o artefato de saída de compilação é armazenado no bucket de saída. NONE significa que uma pasta foi criada no bucket de saída. O artefato de saída de compilação foi armazenado na pasta.

      • lastModified representa quando as informações sobre o projeto de build foram modificadas pela última vez, em formato de data e hora Unix.

      • timeoutInMinutesrepresenta o número de minutos após os quais CodeBuild interrompe a construção se a construção não tiver sido concluída. (O padrão é 60 minutos.)

      • created representa quando o projeto de build foi criado, em formato de data e hora Unix.

      • environmentVariablesrepresenta todas as variáveis de ambiente que foram declaradas e estão disponíveis CodeBuild para uso durante a construção.

      • encryptionKeyrepresenta o ARN da chave gerenciada pelo cliente CodeBuild usada para criptografar o artefato de saída da compilação.

      • arn representa o ARN do projeto de build.

nota

Depois de executar o create-project comando, uma mensagem de erro semelhante à seguinte pode ser gerada: Usuário: User-ARN não está autorizado a executar: codebuild:. CreateProject Provavelmente, isso ocorre porque você configurou o AWS CLI com as credenciais de um usuário que não tem permissões suficientes CodeBuild para usar na criação de projetos de compilação. Para corrigir isso, configure a AWS CLI com credenciais pertencentes a uma das seguintes entidades do IAM:

  • Um usuário administrador na conta da AWS. Para obter informações, consulte Creating your first Conta da AWS root user and group no Guia do usuário.

  • Um usuário da conta da AWS com as políticas gerenciadas AWSCodeBuildAdminAccess, AmazonS3ReadOnlyAccess e IAMFullAccess anexadas a esse usuário ou a um grupo do IAM ao qual o usuário pertence. Se você não tiver um usuário ou um grupo na conta da AWS com essas permissões, e não puder adicioná-las ao usuário ou ao grupo, entre em contato com administrador da conta da AWS para obter ajuda. Para ter mais informações, consulte AWS políticas gerenciadas (predefinidas) para AWS CodeBuild.

Próxima etapa

Etapa 6: executar a compilação