Nos tutoriais a seguir, você usa o AWS CodeBuild para criar uma coleção de arquivos de entrada de código-fonte de exemplo em uma versão implantável do código-fonte.
Os dois tutoriais têm a mesma entrada e os mesmos resultados, mas um usa o console do AWS CodeBuild e o outro usa a AWS CLI.
Importante
Não recomendamos usar sua conta raiz da AWS para concluir este tutorial.
Tópicos
Conceitos básicos do AWS CodeBuild com o console
Neste tutorial, você usará o AWS CodeBuild para compilar uma coleção de arquivos de entrada de código-fonte de exemplo (artefatos de entrada da compilação ou entrada da compilação) em uma versão implantável do código-fonte (chamada artefato de saída da compilação ou saída da compilação). Especificamente, você vai instruir o CodeBuild para usar o Apache Maven, uma conhecida ferramenta de compilação, para compilar um conjunto de arquivos classe Java em um arquivo Java Archive (JAR). Você não precisa estar familiarizado com o Apache Maven ou com o Java para utilizar este tutorial.
É possível trabalhar com o CodeBuild por meio do console do CodeBuild, do AWS CodePipeline, da AWS CLI ou dos AWS SDKs. Este tutorial demonstra como usar o console do CodeBuild. Para obter informações sobre como usar o CodePipeline, consulte Usar o CodeBuild com o CodePipeline.
Importante
As etapas deste tutorial exigem que você crie recursos (por exemplo, um bucket do S3) que podem resultar em cobranças em sua conta da AWS. Isso inclui possíveis cobranças pelo CodeBuild e por recursos da AWS e ações relacionadas ao Amazon S3, ao AWS KMS e ao CloudWatch Logs. Para obter mais informações, consulte Preços do AWS CodeBuild
Tópicos
- Etapa 1: criar o código-fonte
- Etapa 2: criar o arquivo buildspec
- Etapa 3: criar dois buckets do S3
- Etapa 4: fazer upload do código-fonte e do arquivo buildspec
- Etapa 5: criar o projeto de compilação
- Etapa 6: executar a compilação
- Etapa 7: visualizar informações resumidas da compilação
- Etapa 8: visualizar informações detalhadas da compilação
- Etapa 9: obter o artefato de saída da compilação
- Etapa 10: excluir os buckets do S3
- Encapsulamento
Etapa 1: criar o código-fonte
(Parte de: Conceitos básicos do AWS CodeBuild com o console)
Nesta etapa, você criará o código-fonte que deverá ser usado pelo CodeBuild para realizar a compilação do bucket de saída. O código-fonte consiste em dois arquivos classe Java e um arquivo Apache Maven Project Object Model (POM).
-
Em um diretório vazio no computador ou instância local, crie essa estrutura de diretório.
(root directory name)
`-- src |-- main | `-- java `-- test `-- java -
Use um editor de texto de sua preferência, crie esse arquivo, dê o nome de
MessageUtil.java
e salve-o no diretóriosrc/main/java
.public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }
Esse arquivo classe cria como saída a string de caracteres para ele transferido. O construtor
MessageUtil
define a string de caracteres. O métodoprintMessage
cria a saída. O métodosalutationMessage
gera a saídaHi!
seguida da string de caracteres. -
Crie esse arquivo, dê o nome de
TestMessageUtil.java
e salve-o no diretório/src/test/java
.import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }
Esse arquivo classe define a variável
message
na classeMessageUtil
paraRobert
. O arquivo avalia, então, se a variávelmessage
foi definida com sucesso, verificando se as stringsRobert
eHi!Robert
aparecem na saída. -
Crie esse arquivo, dê o nome de
pom.xml
e salve-o no diretório raiz (de nível superior).<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>
O Apache Maven usa as instruções nesse arquivo para converter os arquivos
MessageUtil.java
eTestMessageUtil.java
em um arquivo denominadomessageUtil-1.0.jar
e executar os testes especificados.
Neste momento, a estrutura de diretório deve se parecer como esta.
(root directory name)
|-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Etapa 2: criar o arquivo buildspec
(Etapa anterior: Etapa 1: criar o código-fonte)
Nesta etapa, você cria um arquivo de especificação de compilação (build spec). buildspec é uma coleção de comandos de compilação e configurações relacionadas, no formato YAML, que o CodeBuild usa para executar uma compilação. Sem um buildspec, o CodeBuild não pode converter com sucesso a entrada de compilação em saída da compilação nem localizar o artefato de saída da compilação no ambiente de compilação, para fazer upload para o bucket de saída.
Crie esse arquivo, dê o nome de buildspec.yml
e salve-o no diretório raiz (de nível superior).
version: 0.2
phases:
install:
runtime-versions:
java: corretto11
pre_build:
commands:
- echo Nothing to do in the pre_build phase...
build:
commands:
- echo Build started on `date`
- mvn install
post_build:
commands:
- echo Build completed on `date`
artifacts:
files:
- target/messageUtil-1.0.jar
Importante
Como a declaração de build spec deve corresponder ao YAML, o espaçamento na declaração de build spec é importante. Se o número de espaços em sua declaração de build spec não corresponder a essa, a compilação poderá falhar imediatamente. Você pode usar um validador YAML para testar se a declaração de build spec é válida para o YAML.
nota
Em vez de incluir um arquivo de build spec em seu código-fonte, você pode declarar comandos de compilação separadamente ao criar um projeto de compilação. Isso é útil no caso de você compilar seu código-fonte com diferentes comandos de compilação sem atualizar o repositório de código-fonte a cada vez. Para obter mais informações, consulte Sintaxe de buildspec.
Nesta declaração de build spec:
-
version
representa a versão do build spec padrão em uso. Esta declaração de build spec usa a última versão,0.2
. -
phases
representa as fases de compilação durante as quais é possível instruir o CodeBuild a executar comandos. Estas fases de compilação são aqui listadas comoinstall
,pre_build
,build
epost_build
. Não é possível alterar os nomes das fases de compilação, nem criar nomes adicionais.Nesse exemplo, durante a fase
build
, o CodeBuild executa o comandomvn install
. Esse comando instrui o Apache Maven a compilar, testar e empacotar os arquivos classe Java compilados em um artefato de saída da compilação. Para completar, alguns comandosecho
são incluídos em cada fase de compilação, neste exemplo. Quando você visualizar informações de compilação detalhadas posteriormente neste tutorial, a saída desses comandosecho
poderá ajudar a compreender melhor como o CodeBuild executa comandos e em qual ordem. (Embora todas as fases da compilação estejam incluídas neste exemplo, não é necessário incluir uma fase da compilação se você não pretende executar comandos durante essa fase.) Para cada fase de compilação, o CodeBuild executa cada comando especificado, um por vez, na ordem listada, do começo ao fim. -
artifacts
representa o conjunto de artefatos de saída de compilação do qual o CodeBuild faz upload no bucket de saída.files
representa os arquivos a serem incluídos na saída da compilação. O CodeBuild fará upload do único arquivomessageUtil-1.0.jar
encontrado no diretóriotarget
relativo ao ambiente de compilação. O nome de arquivomessageUtil-1.0.jar
e o nome de diretóriotarget
são baseados na maneira como o Apache Maven cria e armazena artefatos de saída da compilação somente para este exemplo. Em suas próprias compilações, esses nomes de arquivos e diretórios são diferentes.
Para obter mais informações, consulte Referência de buildspec.
Neste momento, a estrutura de diretório deve se parecer como esta.
(root directory name)
|-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Etapa 3: criar dois buckets do S3
(Etapa anterior: Etapa 2: criar o arquivo buildspec)
Embora seja possível usar um único bucket para este tutorial, o uso de dois buckets facilita a visualização da origem da entrada da compilação e do destino da saída da compilação.
-
Um desses buckets (o bucket de entrada) armazena a entrada da compilação. Neste tutorial, o nome desse bucket de entrada é
codebuild-
, em queregion-ID
-account-ID
-input-bucketregion-ID
é a região da AWS do bucket, eaccount-ID
é o ID da conta da AWS. -
O outro bucket (o bucket de saída) armazena a saída da compilação. Neste tutorial, o nome deste bucket de saída é
codebuild-
.region-ID
-account-ID
-output-bucket
Se você escolheu nomes diferentes para esses buckets, certifique-se de usá-los ao longo deste tutorial.
Esses dois buckets devem estar na mesma região da AWS que as compilações. Por exemplo, se você instruir o CodeBuild para executar uma compilação na região do Leste dos EUA (Ohio), esses buckets também deverão estar na região do Leste dos EUA (Ohio).
Para obter mais informações, consulte Criar um bucket no Manual do usuário do Amazon Simple Storage Service.
nota
Embora o CodeBuild também seja compatível com a entrada da compilação armazenada em repositórios do CodeCommit, do GitHub e do Bitbucket, este tutorial não mostra como usá-los. Para obter mais informações, consulte Planejar uma compilação.
Etapa 4: fazer upload do código-fonte e do arquivo buildspec
(Etapa anterior: Etapa 3: criar dois buckets do S3)
Nesta etapa, você adiciona o código-fonte e o arquivo build spec ao bucket de entrada.
Usando o utilitário zip do sistema operacional, crie um arquivo chamado MessageUtil.zip
que inclua MessageUtil.java
, TestMessageUtil.java
, pom.xml
e buildspec.yml
.
A estrutura de diretório de arquivo MessageUtil.zip
deve se parecer como esta.
MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Importante
Não inclua o diretório
, somente os diretórios e os arquivos no diretório (root directory name)
.(root directory name)
Faça upload do arquivo MessageUtil.zip
ao bucket de entrada denominado codebuild-
. region-ID
-account-ID
-input-bucket
Importante
Para repositórios do CodeCommit, do GitHub e do Bitbucket, por convenção, é necessário armazenar um arquivo buildspec chamado buildspec.yml
na raiz (nível superior) de cada repositório ou incluir a declaração de especificação da compilação como parte da definição do projeto de compilação. Não crie um arquivo ZIP que contenha o código-fonte do repositório e o arquivo build spec.
Para a entrada de compilação armazenada apenas em buckets do S3, crie um arquivo ZIP que contenha o código-fonte e, por convenção, um arquivo de especificação da compilação chamado buildspec.yml
na raiz (nível superior) ou inclua a declaração da especificação da compilação como parte da definição do projeto de compilação.
Se quiser usar um nome diferente para o arquivo build spec, ou fazer referência a um build spec em um local diferente da raiz, você poderá especificar uma substituição de build spec como parte da definição do projeto de compilação. Para obter mais informações, consulte Nome do arquivo buildspec e local de armazenamento.
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, runtime da linguagem de programação e ferramentas que o CodeBuild usa 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
Para este ambiente de compilação, você instrui o CodeBuild para usar uma imagem do Docker que contenha uma versão do Java Development Kit (JDK) e do Apache Maven.
Para criar o projeto de compilação
Faça login no AWS Management Console e abra o console do AWS CodeBuild em https://console.aws.amazon.com/codesuite/codebuild/home
. -
Use o seletor de região da AWS para escolher uma região da AWS em que o CodeBuild é compatível. Para obter mais informações, consulte endpoints e cotas do AWS CodeBuild na Referência geral da Amazon Web Services.
Se uma página de informações do CodeBuild for exibida, selecione Criar projeto de compilação. Caso contrário, no painel de navegação, expanda Compilar, escolha Projetos de compilação e, depois, Criar projeto de compilação.
-
Na página Create build project (Criar projeto de compilação), em Project Configuration (Configuração do projeto), em Project name (Nome do projeto), insira um nome para esse projeto de compilação (neste exemplo,
codebuild-demo-project
). Os nomes de projeto de compilação devem ser únicos em cada conta da AWS. Se você escolher outro nome, certifique-se de usá-lo durante todo este tutorial.nota
Na página Create build project (Criar projeto de compilação), você pode ver uma mensagem de erro semelhante à seguinte: You are not authorized to perform this operation (Você não tem autorização para realizar esta operação). Isso é mais provável porque você entrou no AWS Management Console como um usuário que não tem permissões para criar um projeto de compilação. Para corrigir isso, saia do AWS Management Console e reconecte-se com credenciais que pertençam 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
eIAMFullAccess
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 obter mais informações, consulte Políticas gerenciadas pela AWS (predefinidas) para o AWS CodeBuild.
Ambas as opções incluem permissões de administrador que permitem criar um projeto de compilação para que você possa concluir este tutorial. Recomendamos que você sempre use as permissões mínimas necessárias para realizar sua tarefa. Para obter mais informações, consulte Referência de permissões do AWS CodeBuild.
-
-
Em Origem, para Provedor de origem, selecione Amazon S3.
-
Em Bucket, selecione codebuild-
region-ID
-account-ID
-input-bucket. -
Para S3 object key (Chave do objeto S3), insira
MessageUtil.zip
. -
Em Environment (Ambiente), em Environment image (Imagem do ambiente), deixe a opção Managed image (Imagem gerenciada) selecionada.
-
Em Sistema operacional, escolha Amazon Linux.
-
Em Runtime(s), selecione Padrão.
-
Em Imagem, selecione aws/codebuild/amazonlinux2-x86_64-standard:corretto11.
-
Em Service role (Função de serviço), deixe New service role (Nova função de serviço) selecionado e não altere Role name (Nome da função).
-
Em Buildspec, deixe Use a buildspec file (Usar um arquivo buildspec) selecionado.
-
Em Artefatos, em Tipo, escolha Amazon S3.
-
Em Nome do bucket, selecione codebuild-
region-ID
-account-ID
-output-bucket. -
Deixe Name (Nome) e Path (Caminho) em branco.
-
Selecione Criar projeto de compilação.
Etapa 6: executar a compilação
(Etapa anterior: Etapa 5: criar o projeto de compilação)
Nesta etapa, você instrui o AWS CodeBuild a executar a compilação com as configurações no projeto de compilação.
Para executar a compilação
Abra o console do AWS CodeBuild em https://console.aws.amazon.com/codesuite/codebuild/home
. -
No painel de navegação, selecione Projetos de compilação.
-
Na lista de projetos de compilação, selecione codebuild-demo-project e escolha Iniciar compilação. A compilação começa imediatamente.
Etapa 7: visualizar informações resumidas da compilação
(Etapa anterior: Etapa 6: executar a compilação)
Nesta etapa, você exibe informações resumidas sobre o status da compilação.
Para visualizar informações resumidas da compilação
-
Se a página codebuild-demo-project:
<build-ID>
não for exibida, na barra de navegação, selecione Histórico da compilação. Depois, na lista de projetos de compilação, em Projeto, escolha o link Execução da compilação para codebuild-demo-project. Deve haver somente um link correspondente. (Se você tiver concluído este tutorial anteriormente, escolha o link com o valor mais recente na coluna Completed (Concluído).) -
Na página Status da compilação, em Detalhes da fase, as seguintes fases de compilação devem ser exibidas, com Com êxito na coluna Status:
-
SUBMITTED
-
QUEUED
-
PROVISIONING
-
DOWNLOAD_SOURCE
-
INSTALL
-
PRE_BUILD
-
BUILD
-
POST_BUILD
-
UPLOAD_ARTIFACTS
-
FINALIZING
-
COMPLETED
Em Build Status (Status da compilação), Succeeded (Bem-sucedido) deve ser exibido.
Se você vir In Progress (Em Andamento), escolha o botão Atualizar.
-
-
Ao lado de cada fase de compilação, o valor Duration (Duração) indica quanto tempo a fase de compilação demorou. O valor End time (Hora de término) indica quando a fase de build foi concluída.
Etapa 8: visualizar informações detalhadas da compilação
(Etapa anterior: Etapa 7: visualizar informações resumidas da compilação)
Nesta etapa, você exibirá informações detalhadas sobre a compilação no CloudWatch Logs.
nota
Para proteger informações confidenciais, os seguintes itens ficam ocultos nos logs do CodeBuild:
-
IDs de chave de acesso da AWS. Para obter mais informações, consulte Managing Access Keys for IAM Users no Guia do usuário do AWS Identity and Access Management.
-
Strings especificadas usando o repositório de parâmetros. Para obter mais informações, consulte Systems Manager Parameter Store e Systems Manager Parameter Store Console Walkthrough no Guia do usuário do Amazon EC2 Systems Manager.
-
Strings especificadas usando o AWS Secrets Manager. Para obter mais informações, consulte Gerenciamento de chaves.
Para visualizar informações detalhadas da compilação
-
Com a página de detalhes de build ainda em exibição na etapa anterior, as últimas 10,000 linhas do log de build são exibidas em Build logs. Para ver o log de compilação completo no CloudWatch Logs, selecione o link Visualizar todo o log.
-
No fluxo de logs do CloudWatch Logs, é possível navegar pelos eventos de log. Por padrão, somente o último conjunto de eventos de log é exibido. Para ver eventos de log anteriores, role até o início da lista.
-
Neste tutorial, a maioria dos eventos de log contém informações detalhadas sobre o download e a instalação pelo CodeBuild dos arquivos de dependência da compilação no ambiente de compilação, informações essas que não devem ser importantes pra você. Você pode usar a caixa Filtrar eventos para reduzir as informações exibidas. Por exemplo, se você inserir
"[INFO]"
em Filtrar eventos, apenas os eventos que contêm[INFO]
serão exibidos. Para obter mais informações, consulte Filter and pattern syntax no Guia do usuário do Amazon CloudWatch Logs.
Etapa 9: obter o artefato de saída da compilação
(Etapa anterior: Etapa 8: visualizar informações detalhadas da compilação)
Nesta etapa, você vai obter o arquivo messageUtil-1.0.jar
que o CodeBuild montou e faz upload dele para o bucket de saída.
É possível usar o console do CodeBuild ou do Amazon S3 para concluir esta etapa.
Para obter o artefato de saída da compilação (console do AWS CodeBuild)
-
Com o console do CodeBuild ainda aberto e a página de detalhes da compilação ainda exibida na etapa anterior, selecione Detalhes da compilação e role para baixo até a seção Artefatos.
nota
Se a página de detalhes da compilação não foi exibida, na barra de navegação, selecione Histórico de compilação e escolha o link Execução da compilação.
-
O link para a pasta do Amazon S3 está abaixo do Local de upload de artefatos. Esse link abre a pasta no Amazon S3 em que você encontra o arquivo de artefato de saída da compilação
messageUtil-1.0.jar
.
Como obter o artefato de saída da compilação (console do Amazon S3)
Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
Abra o
codebuild-
.region-ID
-account-ID
-output-bucket -
Abra a pasta
codebuild-demo-project
. -
Abra a pasta
target
, em que você encontra o arquivo de artefato de saída da compilaçãomessageUtil-1.0.jar
.
Etapa 10: excluir os buckets do S3
(Etapa anterior: Etapa 9: obter o artefato de saída da compilação)
Para evitar cobranças contínuas na conta da AWS, é possível excluir os buckets de entrada e saída usados neste tutorial. Para obter instruções, consulte Deleting or Emptying a Bucket no Guia do usuário do Amazon Simple Storage Service.
Se você estiver utilizando o usuário do IAM ou um usuário administrador do IAM para excluir esses buckets, o usuário deverá ter mais permissões de acesso. Adicione a declaração a seguir entre os marcadores (### BEGIN ADDING STATEMENT HERE ###
e ### END ADDING STATEMENTS HERE ###
) à política de acesso existente para o usuário.
As elipses (...) nesta declaração são usadas para fins de brevidade. Não remova as declarações na política de acesso existente. Não insira essas reticências na política.
{
"Version": "2012-10-17",
"Id": "...",
"Statement": [
### BEGIN ADDING STATEMENT HERE ###
{
"Effect": "Allow",
"Action": [
"s3:DeleteBucket",
"s3:DeleteObject"
],
"Resource": "*"
}
### END ADDING STATEMENT HERE ###
]
}
Encapsulamento
Neste tutorial, você usou o AWS CodeBuild para compilar um conjunto de arquivos de classe Java em um arquivo JAR. Em seguida, você exibiu os resultados da compilação.
Agora é possível tentar usar o CodeBuild nos próprios cenários. Siga as instruções em Planejar uma compilação. Se não se sente pronto ainda, tente montar algumas das amostras. Para obter mais informações, consulte Exemplos baseados em casos de uso do CodeBuild.
Conceitos básicos do AWS CodeBuild com a AWS CLI
Neste tutorial, você usará o AWS CodeBuild para compilar uma coleção de arquivos de entrada de código-fonte de exemplo (chamados artefatos de entrada da compilação ou entrada da compilação) em uma versão implantável do código-fonte (chamada artefato de saída da compilação ou saída da compilação). Especificamente, você vai instruir o CodeBuild para usar o Apache Maven, uma conhecida ferramenta de compilação, para compilar um conjunto de arquivos classe Java em um arquivo Java Archive (JAR). Você não precisa estar familiarizado com o Apache Maven ou com o Java para utilizar este tutorial.
É possível trabalhar com o CodeBuild por meio do console do CodeBuild, do AWS CodePipeline, da AWS CLI ou dos AWS SDKs. Este tutorial demonstra como usar o CodeBuild com a AWS CLI. Para obter informações sobre como usar o CodePipeline, consulte Usar o CodeBuild com o CodePipeline.
Importante
As etapas deste tutorial exigem que você crie recursos (por exemplo, um bucket do S3) que podem resultar em cobranças em sua conta da AWS. Isso inclui possíveis cobranças pelo CodeBuild e por recursos da AWS e ações relacionadas ao Amazon S3, ao AWS KMS e ao CloudWatch Logs. Para obter mais informações, consulte Preços do CodeBuild
Tópicos
- Etapa 1: criar o código-fonte
- Etapa 2: criar o arquivo buildspec
- Etapa 3: criar dois buckets do S3
- Etapa 4: fazer upload do código-fonte e do arquivo buildspec
- Etapa 5: criar o projeto de compilação
- Etapa 6: executar a compilação
- Etapa 7: visualizar informações resumidas da compilação
- Etapa 8: visualizar informações detalhadas da compilação
- Etapa 9: obter o artefato de saída da compilação
- Etapa 10: excluir os buckets do S3
- Encapsulamento
Etapa 1: criar o código-fonte
(Parte de: Conceitos básicos do AWS CodeBuild com a AWS CLI)
Nesta etapa, você criará o código-fonte que deverá ser usado pelo CodeBuild para realizar a compilação do bucket de saída. O código-fonte consiste em dois arquivos classe Java e um arquivo Apache Maven Project Object Model (POM).
-
Em um diretório vazio no computador ou instância local, crie essa estrutura de diretório.
(root directory name)
`-- src |-- main | `-- java `-- test `-- java -
Use um editor de texto de sua preferência, crie esse arquivo, dê o nome de
MessageUtil.java
e salve-o no diretóriosrc/main/java
.public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }
Esse arquivo classe cria como saída a string de caracteres para ele transferido. O construtor
MessageUtil
define a string de caracteres. O métodoprintMessage
cria a saída. O métodosalutationMessage
gera a saídaHi!
seguida da string de caracteres. -
Crie esse arquivo, dê o nome de
TestMessageUtil.java
e salve-o no diretório/src/test/java
.import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }
Esse arquivo classe define a variável
message
na classeMessageUtil
paraRobert
. O arquivo avalia, então, se a variávelmessage
foi definida com sucesso, verificando se as stringsRobert
eHi!Robert
aparecem na saída. -
Crie esse arquivo, dê o nome de
pom.xml
e salve-o no diretório raiz (de nível superior).<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>
O Apache Maven usa as instruções nesse arquivo para converter os arquivos
MessageUtil.java
eTestMessageUtil.java
em um arquivo denominadomessageUtil-1.0.jar
e executar os testes especificados.
Neste momento, a estrutura de diretório deve se parecer como esta.
(root directory name)
|-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Etapa 2: criar o arquivo buildspec
(Etapa anterior: Etapa 1: criar o código-fonte)
Nesta etapa, você cria um arquivo de especificação de compilação (build spec). buildspec é uma coleção de comandos de compilação e configurações relacionadas, no formato YAML, que o CodeBuild usa para executar uma compilação. Sem um buildspec, o CodeBuild não pode converter com sucesso a entrada de compilação em saída da compilação nem localizar o artefato de saída da compilação no ambiente de compilação, para fazer upload para o bucket de saída.
Crie esse arquivo, dê o nome de buildspec.yml
e salve-o no diretório raiz (de nível superior).
version: 0.2
phases:
install:
runtime-versions:
java: corretto11
pre_build:
commands:
- echo Nothing to do in the pre_build phase...
build:
commands:
- echo Build started on `date`
- mvn install
post_build:
commands:
- echo Build completed on `date`
artifacts:
files:
- target/messageUtil-1.0.jar
Importante
Como a declaração de build spec deve corresponder ao YAML, o espaçamento na declaração de build spec é importante. Se o número de espaços em sua declaração de build spec não corresponder a essa, a compilação poderá falhar imediatamente. Você pode usar um validador YAML para testar se a declaração de build spec é válida para o YAML.
nota
Em vez de incluir um arquivo de build spec em seu código-fonte, você pode declarar comandos de compilação separadamente ao criar um projeto de compilação. Isso é útil no caso de você compilar seu código-fonte com diferentes comandos de compilação sem atualizar o repositório de código-fonte a cada vez. Para obter mais informações, consulte Sintaxe de buildspec.
Nesta declaração de build spec:
-
version
representa a versão do build spec padrão em uso. Esta declaração de build spec usa a última versão,0.2
. -
phases
representa as fases de compilação durante as quais é possível instruir o CodeBuild a executar comandos. Estas fases de compilação são aqui listadas comoinstall
,pre_build
,build
epost_build
. Não é possível alterar os nomes das fases de compilação, nem criar nomes adicionais.Nesse exemplo, durante a fase
build
, o CodeBuild executa o comandomvn install
. Esse comando instrui o Apache Maven a compilar, testar e empacotar os arquivos classe Java compilados em um artefato de saída da compilação. Para completar, alguns comandosecho
são incluídos em cada fase de compilação, neste exemplo. Quando você visualizar informações de compilação detalhadas posteriormente neste tutorial, a saída desses comandosecho
poderá ajudar a compreender melhor como o CodeBuild executa comandos e em qual ordem. (Embora todas as fases da compilação estejam incluídas neste exemplo, não é necessário incluir uma fase da compilação se você não pretende executar comandos durante essa fase.) Para cada fase de compilação, o CodeBuild executa cada comando especificado, um por vez, na ordem listada, do começo ao fim. -
artifacts
representa o conjunto de artefatos de saída de compilação do qual o CodeBuild faz upload no bucket de saída.files
representa os arquivos a serem incluídos na saída da compilação. O CodeBuild fará upload do único arquivomessageUtil-1.0.jar
encontrado no diretóriotarget
relativo ao ambiente de compilação. O nome de arquivomessageUtil-1.0.jar
e o nome de diretóriotarget
são baseados na maneira como o Apache Maven cria e armazena artefatos de saída da compilação somente para este exemplo. Em suas próprias compilações, esses nomes de arquivos e diretórios são diferentes.
Para obter mais informações, consulte Referência de buildspec.
Neste momento, a estrutura de diretório deve se parecer como esta.
(root directory name)
|-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Etapa 3: criar dois buckets do S3
(Etapa anterior: Etapa 2: criar o arquivo buildspec)
Embora seja possível usar um único bucket para este tutorial, o uso de dois buckets facilita a visualização da origem da entrada da compilação e do destino da saída da compilação.
-
Um desses buckets (o bucket de entrada) armazena a entrada da compilação. Neste tutorial, o nome desse bucket de entrada é
codebuild-
, em queregion-ID
-account-ID
-input-bucketregion-ID
é a região da AWS do bucket, eaccount-ID
é o ID da conta da AWS. -
O outro bucket (o bucket de saída) armazena a saída da compilação. Neste tutorial, o nome deste bucket de saída é
codebuild-
.region-ID
-account-ID
-output-bucket
Se você escolheu nomes diferentes para esses buckets, certifique-se de usá-los ao longo deste tutorial.
Esses dois buckets devem estar na mesma região da AWS que as compilações. Por exemplo, se você instruir o CodeBuild para executar uma compilação na região do Leste dos EUA (Ohio), esses buckets também deverão estar na região do Leste dos EUA (Ohio).
Para obter mais informações, consulte Criar um bucket no Manual do usuário do Amazon Simple Storage Service.
nota
Embora o CodeBuild também seja compatível com a entrada da compilação armazenada em repositórios do CodeCommit, do GitHub e do Bitbucket, este tutorial não mostra como usá-los. Para obter mais informações, consulte Planejar uma compilação.
Etapa 4: fazer upload do código-fonte e do arquivo buildspec
(Etapa anterior: Etapa 3: criar dois buckets do S3)
Nesta etapa, você adiciona o código-fonte e o arquivo build spec ao bucket de entrada.
Usando o utilitário zip do sistema operacional, crie um arquivo chamado MessageUtil.zip
que inclua MessageUtil.java
, TestMessageUtil.java
, pom.xml
e buildspec.yml
.
A estrutura de diretório de arquivo MessageUtil.zip
deve se parecer como esta.
MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Importante
Não inclua o diretório
, somente os diretórios e os arquivos no diretório (root directory name)
.(root directory name)
Faça upload do arquivo MessageUtil.zip
ao bucket de entrada denominado codebuild-
. region-ID
-account-ID
-input-bucket
Importante
Para repositórios do CodeCommit, do GitHub e do Bitbucket, por convenção, é necessário armazenar um arquivo buildspec chamado buildspec.yml
na raiz (nível superior) de cada repositório ou incluir a declaração de especificação da compilação como parte da definição do projeto de compilação. Não crie um arquivo ZIP que contenha o código-fonte do repositório e o arquivo build spec.
Para a entrada de compilação armazenada apenas em buckets do S3, crie um arquivo ZIP que contenha o código-fonte e, por convenção, um arquivo de especificação da compilação chamado buildspec.yml
na raiz (nível superior) ou inclua a declaração da especificação da compilação como parte da definição do projeto de compilação.
Se quiser usar um nome diferente para o arquivo build spec, ou fazer referência a um build spec em um local diferente da raiz, você poderá especificar uma substituição de build spec como parte da definição do projeto de compilação. Para obter mais informações, consulte Nome do arquivo buildspec e local de armazenamento.
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, runtime da linguagem de programação e ferramentas que o CodeBuild usa 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
Para este ambiente de compilação, você instrui o CodeBuild para usar uma imagem do Docker que contenha uma versão do Java Development Kit (JDK) e do Apache Maven.
Para criar o projeto de compilação
-
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 nome do recurso da Amazon (ARN) de um perfil de serviço do CodeBuild (por exemplo,arn:aws:iam::
). Para criar uma, consulte Permitir que o CodeBuild interaja com outros serviços da AWS.account-ID
:role/role-name
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
). -
Em
environment
,image
é um valor obrigatório que representa o nome da imagem do Docker e a combinação de tags usada por esse projeto de compilação, 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 Docker no CodeBuild). Oaws/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.
-
Para
environment
,computeType
é um valor obrigatório que representa os recursos de computação usados pelo CodeBuild (neste exemplo,BUILD_GENERAL1_SMALL
).
nota
Outros valores disponíveis nos dados formatados JSON originais, tais como
description
,buildspec
,auth
(incluindotype
eresource
),path
,namespaceType
,name
(paraartifacts
),packaging
,environmentVariables
(incluindoname
evalue
),timeoutInMinutes
,encryptionKey
etags
(incluindokey
evalue
) são opcionais. Eles não são usados neste tutorial, portanto, não são mostrados aqui. Para obter mais informações, consulte Criar um projeto de compilação (AWS CLI). -
-
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. -
timeoutInMinutes
representa o número de minutos após o qual o CodeBuild interrompe a compilação se ela ainda 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. -
environmentVariables
representa as variáveis de ambiente que foram declaradas e que estão disponíveis para uso do CodeBuild durante a compilação. -
encryptionKey
representa o ARN da chave gerenciada pelo cliente que o CodeBuild usou para criptografar o artefato de saída da compilação. -
arn
representa o ARN do projeto de build.
-
-
nota
Depois de executar o comando create-project, uma mensagem de erro semelhante à seguinte pode ser exibida: Usuário: user-ARN
não está autorizado a realizar: codebuild:CreateProject. Isso pode ocorrer porque você configurou a AWS CLI com as credenciais de um usuário que não tem permissões suficientes para usar o CodeBuild para criar 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
eIAMFullAccess
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 obter mais informações, consulte Políticas gerenciadas pela AWS (predefinidas) para o AWS CodeBuild.
Etapa 6: executar a compilação
(Etapa anterior: Etapa 5: criar o projeto de compilação)
Nesta etapa, você instrui o AWS CodeBuild a executar a compilação com as configurações no projeto de compilação.
Para executar a compilação
-
Use a AWS CLI para executar o comando start-build:
aws codebuild start-build --project-name
project-name
Substitua
project-name
pelo nome do seu projeto de build definido na etapa anterior (por exemplo,codebuild-demo-project
). -
Se bem-sucedido, dados semelhantes aos seguintes serão exibidos na saída:
{ "build": { "buildComplete": false, "initiator": "
user-name
", "artifacts": { "location": "arn:aws:s3:::codebuild-region-ID
-account-ID
-output-bucket/message-util.zip" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "buildStatus": "IN_PROGRESS", "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" }, "currentPhase": "SUBMITTED", "startTime": 1472848787.882, "id": "codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE", "arn": "arn:aws:codebuild:region-ID
:account-ID
:build/codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE" } }-
build
representa informações sobre este build.-
buildComplete
representa se a compilação foi concluída (true
). Caso contrário,false
. -
initiator
representa a entidade que iniciou o build. -
artifacts
representa informações sobre a saída de build, incluindo seu local. -
projectName
representa o nome do projeto de build. -
buildStatus
representa o status atual do build, quando o comando start-build foi executado. -
currentPhase
representa a fase atual do build quanto o comando start-build foi executado. -
startTime
representa o momento em que o processo de build foi iniciado, em formato de data e hora do Unix. -
id
representa a ID do build. -
arn
representa o ARN do build.
-
Anote o valor do
id
. Você precisa dele na próxima etapa. -
Etapa 7: visualizar informações resumidas da compilação
(Etapa anterior: Etapa 6: executar a compilação)
Nesta etapa, você exibe informações resumidas sobre o status da compilação.
Para visualizar informações resumidas da compilação
-
Use a AWS CLI para executar o comando batch-get-builds.
aws codebuild batch-get-builds --ids
id
Substitua
id
peloid
valor que apareceu na saída, na etapa anterior.Se bem-sucedidos, dados semelhantes a estes aparecem na saída.
{ "buildsNotFound": [], "builds": [ { "buildComplete": true, "phases": [ { "phaseStatus": "SUCCEEDED", "endTime": 1472848788.525, "phaseType": "SUBMITTED", "durationInSeconds": 0, "startTime": 1472848787.882 },
... The full list of build phases has been omitted for brevity ...
{ "phaseType": "COMPLETED", "startTime": 1472848878.079 } ], "logs": { "groupName": "/aws/codebuild/codebuild-demo-project", "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=region-ID
#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "streamName": "38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" }, "artifacts": { "md5sum": "MD5-hash
", "location": "arn:aws:s3:::codebuild-region-ID
-account-ID
-output-bucket/message-util.zip", "sha256sum": "SHA-256-hash
" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "initiator": "user-name
", "buildStatus": "SUCCEEDED", "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" }, "currentPhase": "COMPLETED", "startTime": 1472848787.882, "endTime": 1472848878.079, "id": "codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "arn": "arn:aws:codebuild:region-ID
:account-ID
:build/codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" } ] }-
buildsNotFound
representa as IDs de build para builds em que não haja informações disponíveis. Neste exemplo, deve estar vazia. -
builds
representa informações sobre cada build em que haja informações disponíveis. Neste exemplo, informações sobre somente um build aparece na saída.-
phases
representa o conjunto de fases de compilação que o CodeBuild executa durante o processo de compilação. Informações sobre cada fase de build é listada separadamente comostartTime
,endTime
, edurationInSeconds
(quando a fase de build iniciou e terminou, expressa em formato de data e hora do Unix, e quanto tempo durou, em segundos) ephaseType
, tais como (SUBMITTED
,PROVISIONING
,DOWNLOAD_SOURCE
,INSTALL
,PRE_BUILD
,BUILD
,POST_BUILD
,UPLOAD_ARTIFACTS
,FINALIZING
ouCOMPLETED
) ephaseStatus
(tais comoSUCCEEDED
,FAILED
,FAULT
,TIMED_OUT
,IN_PROGRESS
ouSTOPPED
). Na primeira vez que você executar o comando batch-get-builds, pode não haver muitas fases (ou nenhuma). Depois de execuções subsequentes do comando batch-get-builds com a mesma ID de build, mais fases de build deverão aparecer na saída. -
logs
representa informações no Amazon CloudWatch Logs sobre os logs da compilação. -
md5sum
esha256sum
representam hashes MD5 e SHA-256 do artefato de saída de build. Esses aparecem na saída somente se opackaging
valor do projeto de compilação estiver definido comoZIP
. (Você não definiu esse valor neste tutorial.) Você pode usar esses hashes em conjunto com uma ferramenta de checksum para confirmar a integridade e a autenticidade dos arquivos.nota
Também é possível usar o console do Amazon S3 para exibir esses hashes. Marque a caixa próxima ao artefato de saída da compilação e escolha Actions (Ações) e Properties (Propriedades). No painel Properties, expanda Metadata e exiba os valores de x-amz-meta-codebuild-content-md5 e x-amz-meta-codebuild-content-sha256. (No console do Amazon S3, o valor ETag do artefato de saída da compilação não deve ser interpretado como hash MD5 ou SHA-256.)
Se você usa os SDKs da AWS para obter esses hashes, os valores são denominados
codebuild-content-md5
ecodebuild-content-sha256
. -
endTime
representa o momento em que o processo de build foi concluído, em formato de data e hora do Unix.
-
nota
Os metadados do Amazon S3 têm um cabeçalho do CodeBuild denominado
x-amz-meta-codebuild-buildarn
que contém obuildArn
da compilação do CodeBuild que publica artefatos no Amazon S3. ObuildArn
é adicionado para permitir o rastreamento da fonte para notificações e para referenciar de qual compilação o artefato é gerado. -
Etapa 8: visualizar informações detalhadas da compilação
(Etapa anterior: Etapa 7: visualizar informações resumidas da compilação)
Nesta etapa, você exibirá informações detalhadas sobre a compilação no CloudWatch Logs.
nota
Para proteger informações confidenciais, os seguintes itens ficam ocultos nos logs do CodeBuild:
-
IDs de chave de acesso da AWS. Para obter mais informações, consulte Managing Access Keys for IAM Users no Guia do usuário do AWS Identity and Access Management.
-
Strings especificadas usando o repositório de parâmetros. Para obter mais informações, consulte Systems Manager Parameter Store e Systems Manager Parameter Store Console Walkthrough no Guia do usuário do Amazon EC2 Systems Manager.
-
Strings especificadas usando o AWS Secrets Manager. Para obter mais informações, consulte Gerenciamento de chaves.
Para visualizar informações detalhadas da compilação
-
Use seu navegador para acessar o local
deepLink
que apareceu na saída na etapa anterior (por exemplo,https://console.aws.amazon.com/cloudwatch/home?region=
).region-ID
#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE -
No fluxo de logs do CloudWatch Logs, é possível navegar pelos eventos de log. Por padrão, somente o último conjunto de eventos de log é exibido. Para ver eventos de log anteriores, role até o início da lista.
-
Neste tutorial, a maioria dos eventos de log contém informações detalhadas sobre o download e a instalação pelo CodeBuild dos arquivos de dependência da compilação no ambiente de compilação, informações essas que não devem ser importantes pra você. Você pode usar a caixa Filtrar eventos para reduzir as informações exibidas. Por exemplo, se você inserir
"[INFO]"
em Filtrar eventos, apenas os eventos que contêm[INFO]
serão exibidos. Para obter mais informações, consulte Filter and pattern syntax no Guia do usuário do Amazon CloudWatch Logs.
Essas partes de um fluxo de logs do CloudWatch Logs pertencem a este tutorial.
... [Container] 2016/04/15 17:49:42 Entering phase PRE_BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering pre_build phase... [Container] 2016/04/15 17:49:42 Entering pre_build phase... [Container] 2016/04/15 17:49:42 Phase complete: PRE_BUILD Success: true [Container] 2016/04/15 17:49:42 Entering phase BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering build phase... [Container] 2016/04/15 17:49:42 Entering build phase... [Container] 2016/04/15 17:49:42 Running command mvn install [Container] 2016/04/15 17:49:44 [INFO] Scanning for projects... [Container] 2016/04/15 17:49:44 [INFO] [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:44 [INFO] Building Message Utility Java Sample App 1.0 [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ ... [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 T E S T S [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 Running TestMessageUtil [Container] 2016/04/15 17:49:55 Inside testSalutationMessage() [Container] 2016/04/15 17:49:55 Hi!Robert [Container] 2016/04/15 17:49:55 Inside testPrintMessage() [Container] 2016/04/15 17:49:55 Robert [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Results : [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 ... [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] BUILD SUCCESS [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] Total time: 11.845 s [Container] 2016/04/15 17:49:56 [INFO] Finished at: 2016-04-15T17:49:56+00:00 [Container] 2016/04/15 17:49:56 [INFO] Final Memory: 18M/216M [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 Phase complete: BUILD Success: true [Container] 2016/04/15 17:49:56 Entering phase POST_BUILD [Container] 2016/04/15 17:49:56 Running command echo Entering post_build phase... [Container] 2016/04/15 17:49:56 Entering post_build phase... [Container] 2016/04/15 17:49:56 Phase complete: POST_BUILD Success: true [Container] 2016/04/15 17:49:57 Preparing to copy artifacts [Container] 2016/04/15 17:49:57 Assembling file list [Container] 2016/04/15 17:49:57 Expanding target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Found target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Creating zip artifact
Neste exemplo, o CodeBuild concluiu com êxito as fases de pré-compilação, compilação e pós-compilação. Ele executou os testes da unidade e montou com sucesso o arquivo messageUtil-1.0.jar
.
Etapa 9: obter o artefato de saída da compilação
(Etapa anterior: Etapa 8: visualizar informações detalhadas da compilação)
Nesta etapa, você vai obter o arquivo messageUtil-1.0.jar
que o CodeBuild montou e faz upload dele para o bucket de saída.
É possível usar o console do CodeBuild ou do Amazon S3 para concluir esta etapa.
Para obter o artefato de saída da compilação (console do AWS CodeBuild)
-
Com o console do CodeBuild ainda aberto e a página de detalhes da compilação ainda exibida na etapa anterior, selecione Detalhes da compilação e role para baixo até a seção Artefatos.
nota
Se a página de detalhes da compilação não foi exibida, na barra de navegação, selecione Histórico de compilação e escolha o link Execução da compilação.
-
O link para a pasta do Amazon S3 está abaixo do Local de upload de artefatos. Esse link abre a pasta no Amazon S3 em que você encontra o arquivo de artefato de saída da compilação
messageUtil-1.0.jar
.
Como obter o artefato de saída da compilação (console do Amazon S3)
Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
Abra o
codebuild-
.region-ID
-account-ID
-output-bucket -
Abra a pasta
codebuild-demo-project
. -
Abra a pasta
target
, em que você encontra o arquivo de artefato de saída da compilaçãomessageUtil-1.0.jar
.
Etapa 10: excluir os buckets do S3
(Etapa anterior: Etapa 9: obter o artefato de saída da compilação)
Para evitar cobranças contínuas na conta da AWS, é possível excluir os buckets de entrada e saída usados neste tutorial. Para obter instruções, consulte Deleting or Emptying a Bucket no Guia do usuário do Amazon Simple Storage Service.
Se você estiver utilizando o usuário do IAM ou um usuário administrador do IAM para excluir esses buckets, o usuário deverá ter mais permissões de acesso. Adicione a declaração a seguir entre os marcadores (### BEGIN ADDING STATEMENT HERE ###
e ### END ADDING STATEMENTS HERE ###
) à política de acesso existente para o usuário.
As elipses (...) nesta declaração são usadas para fins de brevidade. Não remova as declarações na política de acesso existente. Não insira essas reticências na política.
{
"Version": "2012-10-17",
"Id": "...",
"Statement": [
### BEGIN ADDING STATEMENT HERE ###
{
"Effect": "Allow",
"Action": [
"s3:DeleteBucket",
"s3:DeleteObject"
],
"Resource": "*"
}
### END ADDING STATEMENT HERE ###
]
}
Encapsulamento
Neste tutorial, você usou o AWS CodeBuild para compilar um conjunto de arquivos de classe Java em um arquivo JAR. Em seguida, você exibiu os resultados da compilação.
Agora é possível tentar usar o CodeBuild nos próprios cenários. Siga as instruções em Planejar uma compilação. Se não se sente pronto ainda, tente montar algumas das amostras. Para obter mais informações, consulte Exemplos baseados em casos de uso do CodeBuild.