Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Empezar con CodeBuild
En los siguientes tutoriales, se utiliza AWS CodeBuild para crear una colección de archivos de entrada de código fuente de ejemplo en una versión desplegable del código fuente.
Ambos tutoriales tienen la misma entrada y los mismos resultados, pero uno usa la AWS CodeBuild consola y el otro usa la AWS CLI.
importante
No recomendamos que utilice su cuenta AWS root para completar este tutorial.
Cómo empezar a AWS CodeBuild usar la consola
En este tutorial, se utiliza AWS CodeBuild para crear una colección de archivos de entrada de código fuente de muestra (crear artefactos de entrada o crear entrada) en una versión desplegable del código fuente (crear artefactos de salida o compilar salida). En concreto, se indica que se debe CodeBuild utilizar Apache Maven, una herramienta de compilación común, para crear un conjunto de archivos de clases de Java en un archivo Java Archive (). JAR No necesita estar familiarizado con Apache Maven o Java para completar este tutorial.
Puede trabajar con él CodeBuild a través de la CodeBuild consola AWS CodePipeline AWS CLI, el o el. AWS SDKs En este tutorial se muestra cómo utilizar la CodeBuild consola. Para obtener información sobre su uso CodePipeline, consulteÚselo CodeBuild con CodePipeline.
importante
Los pasos de este tutorial requieren que cree recursos (por ejemplo, un bucket de S3) que podrían generar cargos en su AWS cuenta. Estos incluyen posibles cargos por CodeBuild y por AWS los recursos y acciones relacionados con Amazon S3 y CloudWatch Logs. AWS KMS Para obtener más información, consulte AWS CodeBuild
precios
Temas
- Paso 1: Crear el código fuente
- Paso 2: crear el archivo de especificación de compilación
- Paso 3: crear dos buckets de S3
- Paso 4: cargar el código fuente y el archivo buildspec
- Paso 5: crear el proyecto de compilación
- Paso 6: ejecutar la compilación
- Paso 7: ver información resumida sobre la compilación
- Paso 8: ver información detallada sobre la compilación
- Paso 9: obtener el artefacto de salida de la compilación
- Paso 10: eliminar los buckets de S3
- Encapsulación
Paso 1: Crear el código fuente
(Parte de: Cómo empezar a AWS CodeBuild usar la consola)
En este paso, crea el código fuente que CodeBuild desea incluir en el segmento de salida. Este código fuente consta de dos archivos de clases Java y un archivo Apache Maven Project Object Model (POM).
-
En un directorio vacío del equipo o la instancia local, cree esta estructura de directorios.
(root directory name)
`-- src |-- main | `-- java `-- test `-- java -
Con el editor de texto que desee, cree este archivo, asígnele el nombre
MessageUtil.java
y guárdelo en el directoriosrc/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; } }
Este archivo de clases crea como resultado la cadena de caracteres que se la ha pasado. El constructor
MessageUtil
establece la cadena de caracteres. El métodoprintMessage
crea la salida. El métodosalutationMessage
muestraHi!
seguido de la cadena de caracteres. -
Cree este archivo, asígnele el nombre
TestMessageUtil.java
y guárdelo en el directorio/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()); } }
Este archivo de clases establece la variable
message
de la claseMessageUtil
enRobert
. A continuación, comprueba si la variablemessage
se ha establecido correctamente comprobando si las cadenasRobert
yHi!Robert
aparecen en la salida. -
Cree este archivo, asígnele el nombre
pom.xml
y guárdelo en el directorio raíz (nivel 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>
Apache Maven utiliza las instrucciones de este archivo para convertir los archivos
MessageUtil.java
yTestMessageUtil.java
en un archivo denominadomessageUtil-1.0.jar
y, a continuación, ejecuta las pruebas especificadas.
En este punto, la estructura de directorios debería ser similar a la siguiente.
(root directory name)
|-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Paso 2: crear el archivo de especificación de compilación
(Paso anterior: Paso 1: Crear el código fuente)
En este paso, creará un archivo de especificación de compilación. Una especificación de compilación es una colección de comandos de compilación y configuraciones relacionadas, en YAML formato, que se CodeBuild utiliza para ejecutar una compilación. Sin una especificación de compilación, CodeBuild no se puede convertir correctamente la entrada de compilación en la salida de la compilación ni localizar el artefacto de salida de la compilación en el entorno de compilación para cargarlo en el segmento de salida.
Cree este archivo, asígnele el nombre buildspec.yml
y guárdelo en el directorio raíz (nivel 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 una declaración de especificaciones de compilación debe ser válidaYAML, el espaciado de una declaración de especificaciones de compilación es importante. Si el número de espacios de la declaración de especificación de compilación no coincide con esta declaración, la compilación podría producir un error inmediatamente. Puedes usar un YAML validador para comprobar si la declaración de especificaciones de compilación es válida. YAML
nota
En lugar de incluir un archivo de especificación de compilación en el código fuente, puede declarar los comandos de la compilación por separado cuando cree un proyecto de compilación. Esto resulta útil si desea compilar el código fuente con diferentes comandos de compilación sin actualizar el código fuente del repositorio cada vez. Para obtener más información, consulte Sintaxis de buildspec.
En esta declaración de especificación de compilación:
-
version
representa la versión del estándar de especificación de compilación que se va a usar. Esta declaración de especificación de compilación usa la última versión,0.2
. -
phases
representa las fases de compilación durante las cuales puedes indicar la ejecución de comandos. CodeBuild Estas fases de compilación se muestran aquí comoinstall
,pre_build
,build
ypost_build
. No puede cambiar los nombres de estas fases de compilación ni puede crear nombres de fases de compilación adicionales.En este ejemplo, durante la
build
fase, CodeBuild ejecuta elmvn install
comando. Este comando indica a Apache Maven que compile, pruebe y empaquete los archivos de clases Java compilados en un artefacto de salida de la compilación. En aras de una mayor exhaustividad, se incluyen algunos comandosecho
en cada fase de compilación de este ejemplo. Al ver información de compilación detallada más adelante en este tutorial, el resultado de estosecho
comandos puede ayudarle a comprender mejor cómo CodeBuild se ejecutan los comandos y en qué orden. (Aunque en este ejemplo se incluyen todas las fases de compilación, no es necesario que incluya una fase de compilación si no piensa ejecutar ningún comando durante esa fase). Para cada fase de compilación, CodeBuild ejecuta cada comando especificado, uno a la vez, en el orden indicado, de principio a fin. -
artifacts
representa el conjunto de artefactos de salida de la compilación que se CodeBuild carga en el depósito de salida.files
representa los archivos que se van a incluir en el resultado de la compilación. CodeBuild carga el únicomessageUtil-1.0.jar
archivo que se encuentra en el directoriotarget
relativo del entorno de compilación. El nombre del archivomessageUtil-1.0.jar
y el nombre del directoriotarget
se basan en la forma en que Apache Maven crea y almacena los artefactos de salida de la compilación para este ejemplo únicamente. En sus propias compilaciones, estos nombres de archivos y directorios son diferentes.
Para obtener más información, consulte Referencia de la especificación de compilación.
En este punto, la estructura de directorios debería ser similar a la siguiente.
(root directory name)
|-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Paso 3: crear dos buckets de S3
(Paso anterior: Paso 2: crear el archivo de especificación de compilación)
Aunque puede usar un solo bucket para este tutorial, dos buckets hacen que sea más fácil ver de dónde proviene la entrada de compilación y hacia dónde va la salida de compilación.
-
Uno de estos buckets (bucket de entrada) almacena la entrada de compilación. En este tutorial, el nombre de este depósito de entrada es
codebuild-
, donderegion-ID
-account-ID
-input-bucketregion-ID
es la AWS región del depósito yaccount-ID
es el ID AWS de tu cuenta. -
El otro bucket (bucket de salida) almacena la salida de la compilación. En este tutorial, el nombre de este bucket de salida es
codebuild-
.region-ID
-account-ID
-output-bucket
Si elige nombres diferentes para estos buckets, asegúrese de usarlos en este tutorial.
Estos dos grupos deben estar en la misma AWS región que tus compilaciones. Por ejemplo, si ordenas CodeBuild ejecutar una compilación en la región EE.UU. Este (Ohio), estos grupos también deben estar en la región EE.UU. Este (Ohio).
Para obtener más información, consulte Creación de un bucket en la Guía del usuario de Amazon Simple Storage Service.
nota
Aunque CodeBuild también es compatible con las entradas de compilación almacenadas en CodeCommit los repositorios de Bitbucket y en los repositorios, en este tutorial no se muestra cómo utilizarlas. GitHub Para obtener más información, consulte Planificación de una compilación.
Paso 4: cargar el código fuente y el archivo buildspec
(Paso anterior: Paso 3: crear dos buckets de S3)
En este paso, añadirá el código fuente y el archivo de especificación de compilación al bucket de entrada.
Con la utilidad zip del sistema operativo, cree un archivo llamado MessageUtil.zip
que incluya MessageUtil.java
, TestMessageUtil.java
, pom.xml
y buildspec.yml
.
La estructura de directorios del archivo MessageUtil.zip
debe ser similar a la siguiente.
MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
importante
No incluya el directorio
, solo los directorios y archivos del directorio (root directory name)
.(root directory name)
Cargue el archivo MessageUtil.zip
identificado en el bucket de entrada denominado codebuild-
. region-ID
-account-ID
-input-bucket
importante
CodeCommitEn GitHub el caso de los repositorios y de Bitbucket, por convención, debes almacenar un archivo de especificaciones de compilación denominado buildspec.yml
en la raíz (nivel superior) de cada repositorio o incluir la declaración de especificaciones de compilación como parte de la definición del proyecto de compilación. No crees un ZIP archivo que contenga el código fuente y el archivo de especificaciones de compilación del repositorio.
Para las entradas de compilación almacenadas únicamente en depósitos de S3, debes crear un ZIP archivo que contenga el código fuente y, por convención, un archivo de especificaciones de compilación con el nombre buildspec.yml
raíz (nivel superior) o incluir la declaración de especificaciones de compilación como parte de la definición del proyecto de compilación.
Si desea utilizar otro nombre para el archivo de especificación de compilación, o si quiere hacer referencia a una especificación de compilación en una ubicación distinta de la raíz, puede especificar una invalidación de la especificación de compilación como parte de la definición del proyecto de compilación. Para obtener más información, consulte Nombre de archivo y ubicación de almacenamiento de buildspec.
Paso 5: crear el proyecto de compilación
(Paso anterior: Paso 4: cargar el código fuente y el archivo buildspec)
En este paso, crearás un proyecto de compilación que se AWS CodeBuild utilizará para ejecutar la compilación. Un proyecto de compilación incluye información sobre cómo ejecutar una compilación, incluido dónde obtener el código fuente, qué entorno de compilación se debe usar, qué comandos de compilación se deben ejecutar y dónde se debe almacenar el resultado de la compilación. Un entorno de compilación representa una combinación del sistema operativo, el tiempo de ejecución del lenguaje de programación y las herramientas que se CodeBuild utilizan para ejecutar una compilación. El entorno de compilación se expresa como una imagen de Docker. Para obtener más información, consulte Descripción general de Docker
Para este entorno de compilación, se indica CodeBuild que se utilice una imagen de Docker que contenga una versión del kit de desarrollo de Java (JDK) y Apache Maven.
Para crear el proyecto de compilación
-
Usa el selector de AWS regiones para elegir una AWS región compatible. CodeBuild Para obtener más información, consulte Puntos de conexión y cuotas de AWS CodeBuild en la Referencia general de Amazon Web Services.
Si aparece una página de CodeBuild información, elija Crear proyecto de construcción. De lo contrario, en el panel de navegación, expanda Compilar, elija Proyectos de compilación y, a continuación, elija Crear proyecto de compilación.
-
En la página Create build project (Crear proyecto de compilación), en Project configuration (Configuración del proyecto), en Project name (Nombre de proyecto), escriba un nombre para este proyecto de compilación (en este ejemplo,
codebuild-demo-project
). Los nombres de los proyectos de compilación deben ser únicos en cada AWS cuenta. Si elige otro nombre, asegúrese de utilizarlo durante todo el tutorial.nota
En la página Create build project (Crear proyecto de compilación), podría aparecer un mensaje de error similar al siguiente: You are not authorized to perform this operation (No tiene autorización para realizar esta operación). Lo más probable es que se deba a que ha iniciado sesión en AWS Management Console como un usuario que no tiene permisos para crear un proyecto de compilación. Para solucionar este problema, cierre la sesión y AWS Management Console, a continuación, vuelva a iniciarla con las credenciales que pertenezcan a una de las siguientes IAM entidades:
-
Un usuario administrador de su AWS cuenta. Para obtener más información, consulte Creación del primer usuario y grupo Cuenta de AWS raíz en la Guía del usuario.
-
Un usuario de su AWS cuenta con las
AWSCodeBuildAdminAccess
políticasAmazonS3ReadOnlyAccess
IAMFullAccess
administradas y las correspondientes a ese usuario o a un IAM grupo al que pertenezca el usuario. Si no tiene ningún usuario o grupo en su AWS cuenta con estos permisos y no puede añadirlos a su usuario o grupo, póngase en contacto con el administrador de la AWS cuenta para obtener ayuda. Para obtener más información, consulte AWS políticas gestionadas (predefinidas) para AWS CodeBuild.
Ambas opciones incluyen permisos de administrador que le permiten crear un proyecto de compilación y completar este tutorial. Le recomendamos que utilice siempre los permisos mínimos necesarios para realizar la tarea. Para obtener más información, consulte AWS CodeBuild referencia de permisos.
-
-
En Fuente, como Proveedor de código fuente, elija Amazon S3.
-
Para Bucket, elige codebuild-
region-ID
-account-ID
-depósito de entrada. -
En S3 object key (Clave de objeto de S3), escriba
MessageUtil.zip
. -
En Environment (Entorno), para Environment image (Imagen de entorno), deje Managed image (Imagen administrada) seleccionado.
-
Para el sistema operativo, elija Amazon Linux.
-
En Runtime(s) (Tiempo de ejecución), elija Standard (Estándar).
-
En Imagen, elija aws/codebuild/amazonlinux2-x86_64-standard:corretto11.
-
En Service role (Rol de servicio), deje la opción New service role (Nuevo rol de servicio) seleccionada y no haga ningún cambio en Role name (Nombre de rol).
-
En Buildspec, deje Use a buildspec file (Usar un archivo buildspec) seleccionado.
-
En Artefactos, como Tipo, seleccione Amazon S3.
-
Para el nombre del bucket, elija codebuild-
region-ID
-account-ID
-output-bucket. -
Deje Name (Nombre) y Path (Ruta) en blanco.
-
Elija Crear el proyecto de compilación.
Paso 6: ejecutar la compilación
(Paso anterior: Paso 5: crear el proyecto de compilación)
En este paso, AWS CodeBuild indicas que se ejecute la compilación con la configuración del proyecto de compilación.
Para ejecutar la compilación
Abre la AWS CodeBuild consola en https://console.aws.amazon.com/codesuite/codebuild/home
. -
En el panel de navegación, elija Proyectos de compilación.
-
En la lista de proyectos de compilación, elija y, a continuación codebuild-demo-project, elija Iniciar compilación. La compilación comienza inmediatamente.
Paso 7: ver información resumida sobre la compilación
(Paso anterior: Paso 6: ejecutar la compilación)
En este paso, verá información resumida sobre el estado de la compilación.
Para ver la información resumida de la compilación
-
Si el codebuild-demo-project:
<build-ID>
no se muestra la página, en la barra de navegación, seleccione Crear historial. A continuación, en la lista de proyectos de construcción, en Proyecto, elija el enlace Construir y ejecutar para codebuild-demo-project. Debe haber un solo enlace coincidente. (Si ya ha completado este tutorial antes, elija el vínculo con el valor más reciente en la columna Completed (Completado)). -
En la página Estado de compilación, en Detalles de fase, se deben mostrar las fases de compilación siguientes como Con éxito en la columna Estado:
-
SUBMITTED
-
QUEUED
-
PROVISIONING
-
DOWNLOAD_SOURCE
-
INSTALL
-
PRE_BUILD
-
BUILD
-
POST_BUILD
-
UPLOAD_ARTIFACTS
-
FINALIZING
-
COMPLETED
En Build Status (Estado de la compilación), debería mostrarse Succeeded (Realizado correctamente).
Si en su lugar aparece In Progress (En curso) elija el botón de actualizar.
-
-
Junto a cada fase de compilación, el valor Duration (Duración) indica cuánto tiempo ha tardado la fase de compilación. El valor End time (Hora de finalización) indica que esa fase de compilación ha terminado.
Paso 8: ver información detallada sobre la compilación
(Paso anterior: Paso 7: ver información resumida sobre la compilación)
En este paso, verás información detallada sobre tus CloudWatch registros de compilación.
nota
Para proteger la información confidencial, los CodeBuild registros ocultan lo siguiente:
-
AWS clave de accesoIDs. Para obtener más información, consulte Administración de las claves de acceso para IAM los usuarios en la Guía del AWS Identity and Access Management usuario.
-
Cadenas especificadas mediante el almacén de parámetros. Para obtener más información, consulte el tutorial de Systems Manager Parameter Store y Systems Manager Parameter Store Console en la Guía del usuario de Amazon EC2 Systems Manager.
-
Cadenas especificadas mediante AWS Secrets Manager. Para obtener más información, consulte Administración de claves.
Para ver información detallada sobre la compilación
-
Con la página de detalles de la compilación mostrada del paso anterior, se muestran las últimas 10,000 líneas del log de compilación en Build logs. Para ver el registro de compilación completo en CloudWatch Logs, selecciona el enlace Ver todo el registro.
-
En el flujo de registro de CloudWatch registros, puedes buscar los eventos del registro. De forma predeterminada, solo se muestra el último conjunto de eventos de log. Para ver eventos de log anteriores, desplácese hasta el principio de la lista.
-
En este tutorial, la mayoría de los eventos del registro contienen información detallada sobre la CodeBuild descarga e instalación de los archivos de dependencias de compilación en su entorno de compilación, algo que probablemente no te importe. Puede usar el cuadro Filter events para reducir la información que se muestra. Por ejemplo, si escribe
"[INFO]"
en el cuadro Filter events (Filtrar eventos), solo se muestran los eventos que contienen[INFO]
. Para obtener más información, consulte Sintaxis de filtros y patrones en la Guía del CloudWatch usuario de Amazon.
Paso 9: obtener el artefacto de salida de la compilación
(Paso anterior: Paso 8: ver información detallada sobre la compilación)
En este paso, obtendrá el messageUtil-1.0.jar
archivo que se CodeBuild creó y cargó en el depósito de salida.
Puede utilizar la CodeBuild consola o la consola Amazon S3 para completar este paso.
Para obtener el artefacto de salida de la compilación (AWS CodeBuild consola)
-
Con la CodeBuild consola aún abierta y la página de detalles de construcción del paso anterior, selecciona la pestaña Detalles de la construcción y desplázate hacia abajo hasta la sección Artefactos.
nota
Si la página de detalles de la compilación no se muestra, en la barra de navegación, elija Historial de compilación y, a continuación, elija el enlace Ejecución de la compilación.
-
El enlace a la carpeta Amazon S3 se encuentra en la Ubicación de carga de artefactos. Este enlace abre la carpeta de Amazon S3 donde se encuentra el archivo de artefactos de salida de compilación de
messageUtil-1.0.jar
.
Para obtener el artefacto de salida de la compilación (consola de Amazon S3)
Abra la consola Amazon S3 en https://console.aws.amazon.com/s3/
. -
Abra
codebuild-
.region-ID
-account-ID
-output-bucket -
Abra la carpeta
codebuild-demo-project
. -
Abra la carpeta
target
, donde se encuentra el archivo de artefactos de salida de compilaciónmessageUtil-1.0.jar
.
Paso 10: eliminar los buckets de S3
(Paso anterior: Paso 9: obtener el artefacto de salida de la compilación)
Para evitar que se sigan realizando cargos AWS en su cuenta, puede eliminar los depósitos de entrada y salida utilizados en este tutorial. Para obtener más instrucciones, consulte Eliminar o vaciar un bucket en la Guía del usuario de Amazon Simple Storage Service.
Si utilizas el IAM usuario o un IAM usuario administrador para eliminar estos depósitos, el usuario debe tener más permisos de acceso. Añada la siguiente declaración entre los marcadores (### BEGIN ADDING STATEMENT HERE ###
y ### END
ADDING STATEMENTS HERE ###
) a una política de acceso existente para el usuario.
Las elipsis (...) de esta declaración se usan para abreviar. No elimine las instrucciones de la política de acceso existente. No escriba estos puntos suspensivos en la política.
{ "Version": "2012-10-17", "Id": "...", "Statement": [
### BEGIN ADDING STATEMENT HERE ###
{ "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" }### END ADDING STATEMENT HERE ###
] }
Encapsulación
En este tutorial, AWS CodeBuild solía crear un conjunto de archivos de clases de Java en un JAR archivo. A continuación, ha consultado los resultados de la compilación.
Ahora puede intentar usarlos CodeBuild en sus propios escenarios. Siga las instrucciones en Planificación de una compilación. Si piensa que aún no está preparado, tal vez desee intentar compilar algunos de los ejemplos. Para obtener más información, consulte Utilice muestras basadas en casos para CodeBuild.
Cómo empezar a AWS CodeBuild usar el AWS CLI
En este tutorial, se utiliza AWS CodeBuild para crear una colección de archivos de entrada de código fuente de muestra (denominados artefactos de entrada de compilación o entrada de compilación) en una versión desplegable del código fuente (denominada artefacto de salida de compilación o salida de compilación). En concreto, se indica que se debe CodeBuild utilizar Apache Maven, una herramienta de compilación común, para crear un conjunto de archivos de clases de Java en un archivo Java Archive (). JAR No necesita estar familiarizado con Apache Maven o Java para completar este tutorial.
Puede trabajar con él CodeBuild a través de la CodeBuild consola AWS CodePipeline AWS CLI, el o el. AWS SDKs En este tutorial se muestra cómo usarlo CodeBuild con AWS CLI. Para obtener información sobre el uso CodePipeline, consulteÚselo CodeBuild con CodePipeline.
importante
Los pasos de este tutorial requieren que cree recursos (por ejemplo, un bucket de S3) que podrían generar cargos en su AWS cuenta. Estos incluyen posibles cargos por CodeBuild y por AWS los recursos y acciones relacionados con Amazon S3 y CloudWatch Logs. AWS KMS Para obtener más información, consulte CodeBuildprecios
Temas
- Paso 1: Crear el código fuente
- Paso 2: crear el archivo de especificación de compilación
- Paso 3: crear dos buckets de S3
- Paso 4: cargar el código fuente y el archivo buildspec
- Paso 5: crear el proyecto de compilación
- Paso 6: ejecutar la compilación
- Paso 7: ver información resumida sobre la compilación
- Paso 8: ver información detallada sobre la compilación
- Paso 9: obtener el artefacto de salida de la compilación
- Paso 10: eliminar los buckets de S3
- Encapsulación
Paso 1: Crear el código fuente
(Parte de: Cómo empezar a AWS CodeBuild usar el AWS CLI)
En este paso, crea el código fuente que CodeBuild desea incluir en el segmento de salida. Este código fuente consta de dos archivos de clases Java y un archivo Apache Maven Project Object Model (POM).
-
En un directorio vacío del equipo o la instancia local, cree esta estructura de directorios.
(root directory name)
`-- src |-- main | `-- java `-- test `-- java -
Con el editor de texto que desee, cree este archivo, asígnele el nombre
MessageUtil.java
y guárdelo en el directoriosrc/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; } }
Este archivo de clases crea como resultado la cadena de caracteres que se la ha pasado. El constructor
MessageUtil
establece la cadena de caracteres. El métodoprintMessage
crea la salida. El métodosalutationMessage
muestraHi!
seguido de la cadena de caracteres. -
Cree este archivo, asígnele el nombre
TestMessageUtil.java
y guárdelo en el directorio/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()); } }
Este archivo de clases establece la variable
message
de la claseMessageUtil
enRobert
. A continuación, comprueba si la variablemessage
se ha establecido correctamente comprobando si las cadenasRobert
yHi!Robert
aparecen en la salida. -
Cree este archivo, asígnele el nombre
pom.xml
y guárdelo en el directorio raíz (nivel 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>
Apache Maven utiliza las instrucciones de este archivo para convertir los archivos
MessageUtil.java
yTestMessageUtil.java
en un archivo denominadomessageUtil-1.0.jar
y, a continuación, ejecuta las pruebas especificadas.
En este punto, la estructura de directorios debería ser similar a la siguiente.
(root directory name)
|-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Paso 2: crear el archivo de especificación de compilación
(Paso anterior: Paso 1: Crear el código fuente)
En este paso, creará un archivo de especificación de compilación. Una especificación de compilación es una colección de comandos de compilación y configuraciones relacionadas, en YAML formato, que se CodeBuild utiliza para ejecutar una compilación. Sin una especificación de compilación, CodeBuild no se puede convertir correctamente la entrada de compilación en la salida de la compilación ni localizar el artefacto de salida de la compilación en el entorno de compilación para cargarlo en el segmento de salida.
Cree este archivo, asígnele el nombre buildspec.yml
y guárdelo en el directorio raíz (nivel 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 una declaración de especificaciones de compilación debe ser válidaYAML, el espaciado de una declaración de especificaciones de compilación es importante. Si el número de espacios de la declaración de especificación de compilación no coincide con esta declaración, la compilación podría producir un error inmediatamente. Puedes usar un YAML validador para comprobar si la declaración de especificaciones de compilación es válida. YAML
nota
En lugar de incluir un archivo de especificación de compilación en el código fuente, puede declarar los comandos de la compilación por separado cuando cree un proyecto de compilación. Esto resulta útil si desea compilar el código fuente con diferentes comandos de compilación sin actualizar el código fuente del repositorio cada vez. Para obtener más información, consulte Sintaxis de buildspec.
En esta declaración de especificación de compilación:
-
version
representa la versión del estándar de especificación de compilación que se va a usar. Esta declaración de especificación de compilación usa la última versión,0.2
. -
phases
representa las fases de compilación durante las cuales puedes indicar la ejecución de comandos. CodeBuild Estas fases de compilación se muestran aquí comoinstall
,pre_build
,build
ypost_build
. No puede cambiar los nombres de estas fases de compilación ni puede crear nombres de fases de compilación adicionales.En este ejemplo, durante la
build
fase, CodeBuild ejecuta elmvn install
comando. Este comando indica a Apache Maven que compile, pruebe y empaquete los archivos de clases Java compilados en un artefacto de salida de la compilación. En aras de una mayor exhaustividad, se incluyen algunos comandosecho
en cada fase de compilación de este ejemplo. Al ver información de compilación detallada más adelante en este tutorial, el resultado de estosecho
comandos puede ayudarle a comprender mejor cómo CodeBuild se ejecutan los comandos y en qué orden. (Aunque en este ejemplo se incluyen todas las fases de compilación, no es necesario que incluya una fase de compilación si no piensa ejecutar ningún comando durante esa fase). Para cada fase de compilación, CodeBuild ejecuta cada comando especificado, uno a la vez, en el orden indicado, de principio a fin. -
artifacts
representa el conjunto de artefactos de salida de la compilación que se CodeBuild carga en el depósito de salida.files
representa los archivos que se van a incluir en el resultado de la compilación. CodeBuild carga el únicomessageUtil-1.0.jar
archivo que se encuentra en el directoriotarget
relativo del entorno de compilación. El nombre del archivomessageUtil-1.0.jar
y el nombre del directoriotarget
se basan en la forma en que Apache Maven crea y almacena los artefactos de salida de la compilación para este ejemplo únicamente. En sus propias compilaciones, estos nombres de archivos y directorios son diferentes.
Para obtener más información, consulte Referencia de la especificación de compilación.
En este punto, la estructura de directorios debería ser similar a la siguiente.
(root directory name)
|-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Paso 3: crear dos buckets de S3
(Paso anterior: Paso 2: crear el archivo de especificación de compilación)
Aunque puede usar un solo bucket para este tutorial, dos buckets hacen que sea más fácil ver de dónde proviene la entrada de compilación y hacia dónde va la salida de compilación.
-
Uno de estos buckets (bucket de entrada) almacena la entrada de compilación. En este tutorial, el nombre de este depósito de entrada es
codebuild-
, donderegion-ID
-account-ID
-input-bucketregion-ID
es la AWS región del depósito yaccount-ID
es el ID AWS de tu cuenta. -
El otro bucket (bucket de salida) almacena la salida de la compilación. En este tutorial, el nombre de este bucket de salida es
codebuild-
.region-ID
-account-ID
-output-bucket
Si elige nombres diferentes para estos buckets, asegúrese de usarlos en este tutorial.
Estos dos grupos deben estar en la misma AWS región que tus compilaciones. Por ejemplo, si ordenas CodeBuild ejecutar una compilación en la región EE.UU. Este (Ohio), estos grupos también deben estar en la región EE.UU. Este (Ohio).
Para obtener más información, consulte Creación de un bucket en la Guía del usuario de Amazon Simple Storage Service.
nota
Aunque CodeBuild también es compatible con las entradas de compilación almacenadas en CodeCommit los repositorios de Bitbucket y en los repositorios, en este tutorial no se muestra cómo utilizarlas. GitHub Para obtener más información, consulte Planificación de una compilación.
Paso 4: cargar el código fuente y el archivo buildspec
(Paso anterior: Paso 3: crear dos buckets de S3)
En este paso, añadirá el código fuente y el archivo de especificación de compilación al bucket de entrada.
Con la utilidad zip del sistema operativo, cree un archivo llamado MessageUtil.zip
que incluya MessageUtil.java
, TestMessageUtil.java
, pom.xml
y buildspec.yml
.
La estructura de directorios del archivo MessageUtil.zip
debe ser similar a la siguiente.
MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
importante
No incluya el directorio
, solo los directorios y archivos del directorio (root directory name)
.(root directory name)
Cargue el archivo MessageUtil.zip
identificado en el bucket de entrada denominado codebuild-
. region-ID
-account-ID
-input-bucket
importante
CodeCommitEn GitHub el caso de los repositorios y de Bitbucket, por convención, debes almacenar un archivo de especificaciones de compilación denominado buildspec.yml
en la raíz (nivel superior) de cada repositorio o incluir la declaración de especificaciones de compilación como parte de la definición del proyecto de compilación. No crees un ZIP archivo que contenga el código fuente y el archivo de especificaciones de compilación del repositorio.
Para las entradas de compilación almacenadas únicamente en depósitos de S3, debes crear un ZIP archivo que contenga el código fuente y, por convención, un archivo de especificaciones de compilación con el nombre buildspec.yml
raíz (nivel superior) o incluir la declaración de especificaciones de compilación como parte de la definición del proyecto de compilación.
Si desea utilizar otro nombre para el archivo de especificación de compilación, o si quiere hacer referencia a una especificación de compilación en una ubicación distinta de la raíz, puede especificar una invalidación de la especificación de compilación como parte de la definición del proyecto de compilación. Para obtener más información, consulte Nombre de archivo y ubicación de almacenamiento de buildspec.
Paso 5: crear el proyecto de compilación
(Paso anterior: Paso 4: cargar el código fuente y el archivo buildspec)
En este paso, crearás un proyecto de compilación que se AWS CodeBuild utilizará para ejecutar la compilación. Un proyecto de compilación incluye información sobre cómo ejecutar una compilación, incluido dónde obtener el código fuente, qué entorno de compilación se debe usar, qué comandos de compilación se deben ejecutar y dónde se debe almacenar el resultado de la compilación. Un entorno de compilación representa una combinación del sistema operativo, el tiempo de ejecución del lenguaje de programación y las herramientas que se CodeBuild utilizan para ejecutar una compilación. El entorno de compilación se expresa como una imagen de Docker. Para obtener más información, consulte Descripción general de Docker
Para este entorno de compilación, se indica CodeBuild que se utilice una imagen de Docker que contenga una versión del kit de desarrollo de Java (JDK) y Apache Maven.
Para crear el proyecto de compilación
-
Usa el AWS CLI para ejecutar el comando: create-project
aws codebuild create-project --generate-cli-skeleton
JSONLos datos con formato -aparecen en la salida. Copie los datos en un archivo cuyo nombre se
create-project.json
encuentre en una ubicación del equipo o instancia local en la que AWS CLI esté instalado. Si ha elegido usar un nombre de archivo diferente, asegúrese de usarlo en este tutorial.Modifique los datos copiados de modo que sigan este formato y, a continuación, guarde los 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
" }Reemplazar
serviceIAMRole
con el nombre de recurso de Amazon (ARN) de un rol de CodeBuild servicio (por ejemplo,arn:aws:iam::
). Para crear uno, consulte CodeBuild Permiten interactuar con otros AWS servicios.account-ID
:role/role-name
En estos datos:
-
name
representa un identificador obligatorio para este proyecto de compilación (en este ejemplo,codebuild-demo-project
). Los nombres de los proyectos de compilación deben ser únicos en todos los proyectos de compilación de su cuenta. -
En
source
,type
es un valor obligatorio que representa el tipo de repositorio del código fuente (en este ejemplo,S3
para un bucket de Amazon S3). -
Para
source
,location
representa la ruta al código fuente (en este ejemplo, el nombre del depósito de entrada seguido del nombre del ZIP archivo). -
En
artifacts
,type
es un valor obligatorio que representa el tipo de repositorio del artefacto de salida de la compilación (en este ejemplo,S3
para un bucket de Amazon S3). -
En
artifacts
,location
representa el nombre del bucket de salida que ha creado o identificado anteriormente (en este ejemplo,codebuild-
).region-ID
-account-ID
-output-bucket -
En
environment
,type
es un valor obligatorio que representa el tipo de entorno de compilación (en este ejemplo,LINUX_CONTAINER
). -
Para
environment
,image
es un valor obligatorio que representa la combinación de nombre y etiqueta de imagen de Docker que utiliza este proyecto de compilación, según lo especificado por el tipo de repositorio de imágenes de Docker (en este ejemplo,aws/codebuild/standard:5.0
para una imagen de Docker en el repositorio de imágenes de CodeBuild Docker).aws/codebuild/standard
es el nombre de la imagen de Docker.5.0
es la etiqueta de la imagen de Docker.Para encontrar más imágenes de Docker que pueda utilizar en sus escenarios, consulte Referencia de entornos de compilación.
-
Para
environment
,computeType
es un valor obligatorio que representa los recursos informáticos utilizados CodeBuild (en este ejemplo,BUILD_GENERAL1_SMALL
).
nota
Otros valores disponibles en los datos JSON con formato original, como
description
buildspec
,auth
(incluidostype
yresource
),path
,namespaceType
,name
(paraartifacts
)packaging
,environmentVariables
(incluidosname
yvalue
)timeoutInMinutes
encryptionKey
,tags
(incluidoskey
yvalue
) son opcionales. No se utilizan en este tutorial, por lo que no se muestran aquí. Para obtener más información, consulte Crear un proyecto de compilación (AWS CLI). -
-
Cambie al directorio que contiene el archivo que acaba de guardar y, a continuación, vuelva a ejecutar el comando create-project.
aws codebuild create-project --cli-input-json file://create-project.json
Si el comando se ejecuta correctamente, aparecen datos similares a los siguientes en el resultado.
{ "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 información acerca de este proyecto de compilación.-
tags
representa todas las etiquetas que se han declarado. -
packaging
representa la forma en que el artefacto de salida de la compilación se almacena en el bucket de salida.NONE
indica que se crea una carpeta en el bucket de salida. El artefacto de salida de la compilación se almacena en esa carpeta. -
lastModified
representa la fecha, en formato de fecha Unix, en la que se cambió por última vez la información sobre el proyecto de compilación. -
timeoutInMinutes
representa el número de minutos tras los que CodeBuild se detiene la compilación si no se ha completado. (El valor predeterminado es 60 minutos.) -
created
representa la fecha, en formato de fecha Unix, en la que se creó el proyecto de compilación. -
environmentVariables
representa cualquier variable de entorno que se haya declarado y que esté disponible CodeBuild para su uso durante la compilación. -
encryptionKey
representa ARN la clave administrada por el cliente que CodeBuild se utilizó para cifrar el artefacto de salida de la compilación. -
arn
representa el del ARN proyecto de construcción.
-
-
nota
Tras ejecutar el create-project comando, puede aparecer un mensaje de error similar al siguiente: Usuario: user-ARN
no está autorizado a realizar: codebuild: CreateProject. Lo más probable es que esto se deba a que lo configuró AWS CLI con las credenciales de un usuario que no tiene los permisos suficientes CodeBuild para crear proyectos de compilación. Para solucionar este problema, AWS CLI
configúrelo con credenciales que pertenezcan a una de las siguientes IAM entidades:
-
Un usuario administrador en su AWS cuenta. Para obtener más información, consulte Creación del primer usuario y grupo Cuenta de AWS raíz en la Guía del usuario.
-
Un usuario de su AWS cuenta con las
AWSCodeBuildAdminAccess
políticasAmazonS3ReadOnlyAccess
IAMFullAccess
administradas y las correspondientes a ese usuario o a un IAM grupo al que pertenezca el usuario. Si no tiene ningún usuario o grupo en su AWS cuenta con estos permisos y no puede añadirlos a su usuario o grupo, póngase en contacto con el administrador de la AWS cuenta para obtener ayuda. Para obtener más información, consulte AWS políticas gestionadas (predefinidas) para AWS CodeBuild.
Paso 6: ejecutar la compilación
(Paso anterior: Paso 5: crear el proyecto de compilación)
En este paso, indica que se AWS CodeBuild ejecute la compilación con la configuración del proyecto de compilación.
Para ejecutar la compilación
-
Usa el AWS CLI para ejecutar el start-build comando:
aws codebuild start-build --project-name
project-name
Reemplazar
project-name
con el nombre del proyecto de compilación del paso anterior (por ejemplo,codebuild-demo-project
). -
Si el comando se ejecuta correctamente, aparecerán datos similares a los siguientes en el resultado:
{ "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 información acerca de esta compilación.-
buildComplete
indica si la compilación se ha completado (true
). De lo contrario,false
. -
initiator
representa la entidad que inició la compilación. -
artifacts
representa información sobre la salida de la compilación, incluida su ubicación. -
projectName
representa el nombre del proyecto de compilación. -
buildStatus
representa el estado actual de la compilación cuando se ejecutó el comando start-build. -
currentPhase
representa la fase actual de la compilación cuando se ejecutó el comando start-build. -
startTime
representa la hora, en formato de hora Unix, en la que se inició el proceso de compilación. -
id
representa el ID de la compilación. -
arn
representa el ARN de la construcción.
-
Anote el valor de
id
. Lo necesitará en el siguiente paso. -
Paso 7: ver información resumida sobre la compilación
(Paso anterior: Paso 6: ejecutar la compilación)
En este paso, verá información resumida sobre el estado de la compilación.
Para ver la información resumida de la compilación
-
Utilice el AWS CLI para ejecutar el batch-get-builds comando.
aws codebuild batch-get-builds --ids
id
Reemplazar
id
con elid
valor que aparecía en la salida del paso anterior.Si el comando se ejecuta correctamente, aparecen datos similares a los siguientes en el resultado.
{ "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 la compilación IDs de cualquier compilación en la que no haya información disponible. En este ejemplo, debería estar vacío. -
builds
representa información de cada compilación con información disponible. En este ejemplo, en el resultado aparece información sobre una única compilación.-
phases
representa el conjunto de fases de construcción que CodeBuild se ejecutan durante el proceso de creación. La información sobre cada fase de compilación se muestra por separado comostartTime
,endTime
ydurationInSeconds
(cuándo se inició y terminó la fase de compilación, en formato de hora Unix, y cuánto duró, en segundos), así comophaseType
como (SUBMITTED
,PROVISIONING
,DOWNLOAD_SOURCE
,INSTALL
,PRE_BUILD
,BUILD
,POST_BUILD
,UPLOAD_ARTIFACTS
,FINALIZING
oCOMPLETED
) yphaseStatus
(comoSUCCEEDED
,FAILED
,FAULT
,TIMED_OUT
,IN_PROGRESS
oSTOPPED
). La primera vez que ejecute el comando batch-get-builds, es posible que no haya muchas fases (o que no haya ninguna). Después de ejecuciones posteriores del comando batch-get-builds con el mismo ID de compilación, deberían aparecer más fases de compilación en el resultado. -
logs
representa la información de Amazon CloudWatch Logs sobre los registros de la compilación. -
md5sum
MD5ysha256sum
representan los códigos hash SHA -256 del artefacto de salida de la compilación. Aparecerán en el resultado solamente si el valorpackaging
del proyecto de compilación se establece enZIP
. (No ha establecido este valor en este tutorial). Puede utilizar estos valores hash junto con una herramienta de suma de comprobación para confirmar la integridad y autenticidad de los archivos.nota
También puede utilizar la consola de Amazon S3 para ver estos valores hash. Seleccione la casilla situada junto al artefacto de salida de la compilación, elija Actions (Acciones) y luego elija Properties (Propiedades). En el panel Propiedades, expanda Metadatos y vea los valores de -content-md5 y x-amz-meta-codebuild-content-sha256. x-amz-meta-codebuild (En la consola Amazon S3, el ETagvalor del artefacto de salida de la compilación no debe interpretarse como el hash MD5 ni el hash SHA -256).
Si usa el AWS SDKs para obtener estos hashes, los valores se denominan y.
codebuild-content-md5
codebuild-content-sha256
-
endTime
representa la hora, en formato de hora Unix, en la que terminó el proceso de compilación.
-
nota
Los metadatos de Amazon S3 tienen un nombre de CodeBuild encabezado
x-amz-meta-codebuild-buildarn
que contiene el nombrebuildArn
de la CodeBuild compilación que publica los artefactos en Amazon S3. Se añadebuildArn
para permitir el seguimiento de las notificaciones en la fuente y para hacer referencia a la compilación de donde procede el artefacto. -
Paso 8: ver información detallada sobre la compilación
(Paso anterior: Paso 7: ver información resumida sobre la compilación)
En este paso, verá información detallada sobre sus CloudWatch registros de compilación.
nota
Para proteger la información confidencial, los CodeBuild registros ocultan lo siguiente:
-
AWS clave de accesoIDs. Para obtener más información, consulte Administración de las claves de acceso para IAM los usuarios en la Guía del AWS Identity and Access Management usuario.
-
Cadenas especificadas mediante el almacén de parámetros. Para obtener más información, consulte el tutorial de Systems Manager Parameter Store y Systems Manager Parameter Store Console en la Guía del usuario de Amazon EC2 Systems Manager.
-
Cadenas especificadas mediante AWS Secrets Manager. Para obtener más información, consulte Administración de claves.
Para ver información detallada sobre la compilación
-
Utilice un navegador web para ir a la ubicación
deepLink
que aparecía en el resultado del paso anterior (por ejemplo,https://console.aws.amazon.com/cloudwatch/home?region=
).region-ID
#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE -
En el flujo de registro de CloudWatch registros, puede examinar los eventos del registro. De forma predeterminada, solo se muestra el último conjunto de eventos de log. Para ver eventos de log anteriores, desplácese hasta el principio de la lista.
-
En este tutorial, la mayoría de los eventos del registro contienen información detallada sobre la CodeBuild descarga e instalación de los archivos de dependencias de compilación en su entorno de compilación, algo que probablemente no te importe. Puede usar el cuadro Filter events para reducir la información que se muestra. Por ejemplo, si escribe
"[INFO]"
en el cuadro Filter events (Filtrar eventos), solo se muestran los eventos que contienen[INFO]
. Para obtener más información, consulte Sintaxis de filtros y patrones en la Guía del CloudWatch usuario de Amazon.
Estas partes de una secuencia de CloudWatch registros pertenecen 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
En este ejemplo, completó CodeBuild correctamente las fases previa, posterior y posterior a la compilación. Ha ejecutado las pruebas unitarias y ha compilado correctamente el archivo messageUtil-1.0.jar
.
Paso 9: obtener el artefacto de salida de la compilación
(Paso anterior: Paso 8: ver información detallada sobre la compilación)
En este paso, obtendrá el messageUtil-1.0.jar
archivo que se CodeBuild creó y se cargó en el depósito de salida.
Puede utilizar la CodeBuild consola o la consola Amazon S3 para completar este paso.
Para obtener el artefacto de salida de la compilación (AWS CodeBuild consola)
-
Con la CodeBuild consola aún abierta y la página de detalles de construcción del paso anterior, selecciona la pestaña Detalles de la construcción y desplázate hacia abajo hasta la sección Artefactos.
nota
Si la página de detalles de la compilación no se muestra, en la barra de navegación, elija Historial de compilación y, a continuación, elija el enlace Ejecución de la compilación.
-
El enlace a la carpeta Amazon S3 se encuentra en la Ubicación de carga de artefactos. Este enlace abre la carpeta de Amazon S3 donde se encuentra el archivo de artefactos de salida de compilación de
messageUtil-1.0.jar
.
Para obtener el artefacto de salida de la compilación (consola de Amazon S3)
Abra la consola Amazon S3 en https://console.aws.amazon.com/s3/
. -
Abra
codebuild-
.region-ID
-account-ID
-output-bucket -
Abra la carpeta
codebuild-demo-project
. -
Abra la carpeta
target
, donde se encuentra el archivo de artefactos de salida de compilaciónmessageUtil-1.0.jar
.
Paso 10: eliminar los buckets de S3
(Paso anterior: Paso 9: obtener el artefacto de salida de la compilación)
Para evitar que se sigan realizando cargos AWS en su cuenta, puede eliminar los depósitos de entrada y salida utilizados en este tutorial. Para obtener más instrucciones, consulte Eliminar o vaciar un bucket en la Guía del usuario de Amazon Simple Storage Service.
Si utilizas el IAM usuario o un IAM usuario administrador para eliminar estos depósitos, el usuario debe tener más permisos de acceso. Añada la siguiente declaración entre los marcadores (### BEGIN ADDING STATEMENT HERE ###
y ### END
ADDING STATEMENTS HERE ###
) a una política de acceso existente para el usuario.
Las elipsis (...) de esta declaración se usan para abreviar. No elimine las instrucciones de la política de acceso existente. No escriba estos puntos suspensivos en la política.
{ "Version": "2012-10-17", "Id": "...", "Statement": [
### BEGIN ADDING STATEMENT HERE ###
{ "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" }### END ADDING STATEMENT HERE ###
] }
Encapsulación
En este tutorial, AWS CodeBuild solía crear un conjunto de archivos de clases de Java en un JAR archivo. A continuación, ha consultado los resultados de la compilación.
Ahora puede intentar usarlos CodeBuild en sus propios escenarios. Siga las instrucciones en Planificación de una compilación. Si piensa que aún no está preparado, tal vez desee intentar compilar algunos de los ejemplos. Para obtener más información, consulte Utilice muestras basadas en casos para CodeBuild.