Crear un proyecto de compilación (AWS CLI) - AWS CodeBuild

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.

Crear un proyecto de compilación (AWS CLI)

Para obtener más información sobre el uso del AWS CLI with CodeBuild, consulte laReferencia de la línea de comandos.

Para crear un proyecto de CodeBuild compilación mediante el AWS CLI, debe crear una estructura de proyecto con formato JSON, rellenar la estructura y create-projectejecutar el comando para crear el proyecto.

Creación del archivo JSON

Cree un archivo JSON mínimo con el comando create-project, mediante la opción --generate-cli-skeleton:

aws codebuild create-project --generate-cli-skeleton > <json-file>

Esto crea un archivo JSON con la ruta y el nombre de archivo especificados por <json-file>.

Rellenar el archivo JSON

Modifique los datos de JSON como se indica a continuación y guarde los resultados.

{ "name": "<project-name>", "description": "<description>", "source": { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>", "gitCloneDepth": "<git-clone-depth>", "buildspec": "<buildspec>", "InsecureSsl": "<insecure-ssl>", "reportBuildStatus": "<report-build-status>", "buildStatusConfig": { "context": "<context>", "targetUrl": "<target-url>" }, "gitSubmodulesConfig": { "fetchSubmodules": "<fetch-submodules>" }, "auth": { "type": "<auth-type>", "resource": "<auth-resource>" }, "sourceIdentifier": "<source-identifier>" }, "secondarySources": [ { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>", "gitCloneDepth": "<git-clone-depth>", "buildspec": "<buildspec>", "InsecureSsl": "<insecure-ssl>", "reportBuildStatus": "<report-build-status>", "auth": { "type": "<auth-type>", "resource": "<auth-resource>" }, "sourceIdentifier": "<source-identifier>" } ], "secondarySourceVersions": [ { "sourceIdentifier": "<secondary-source-identifier>", "sourceVersion": "<secondary-source-version>" } ], "sourceVersion": "<source-version>", "artifacts": { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<artifacts-location>", "path": "<artifacts-path>", "namespaceType": "<artifacts-namespacetype>", "name": "<artifacts-name>", "overrideArtifactName": "<override-artifact-name>", "packaging": "<artifacts-packaging>" }, "secondaryArtifacts": [ { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<secondary-artifact-location>", "path": "<secondary-artifact-path>", "namespaceType": "<secondary-artifact-namespaceType>", "name": "<secondary-artifact-name>", "packaging": "<secondary-artifact-packaging>", "artifactIdentifier": "<secondary-artifact-identifier>" } ], "cache": { "type": "<cache-type>", "location": "<cache-location>", "mode": [ "<cache-mode>" ] }, "environment": { "type": "LINUX_CONTAINER" | "LINUX_GPU_CONTAINER" | "ARM_CONTAINER" | "WINDOWS_SERVER_2019_CONTAINER" | "WINDOWS_SERVER_2022_CONTAINER", "image": "<image>", "computeType": "BUILD_GENERAL1_SMALL" | "BUILD_GENERAL1_MEDIUM" | "BUILD_GENERAL1_LARGE" | "BUILD_GENERAL1_2XLARGE", "certificate": "<certificate>", "environmentVariables": [ { "name": "<environmentVariable-name>", "value": "<environmentVariable-value>", "type": "<environmentVariable-type>" } ], "registryCredential": [ { "credential": "<credential-arn-or-name>", "credentialProvider": "<credential-provider>" } ], "imagePullCredentialsType": "CODEBUILD" | "SERVICE_ROLE", "privilegedMode": "<privileged-mode>" }, "serviceRole": "<service-role>", "timeoutInMinutes": <timeout>, "queuedTimeoutInMinutes": <queued-timeout>, "encryptionKey": "<encryption-key>", "tags": [ { "key": "<tag-key>", "value": "<tag-value>" } ], "vpcConfig": { "securityGroupIds": [ "<security-group-id>" ], "subnets": [ "<subnet-id>" ], "vpcId": "<vpc-id>" }, "badgeEnabled": "<badge-enabled>", "logsConfig": { "cloudWatchLogs": { "status": "<cloudwatch-logs-status>", "groupName": "<group-name>", "streamName": "<stream-name>" }, "s3Logs": { "status": "<s3-logs-status>", "location": "<s3-logs-location>", "encryptionDisabled": "<s3-logs-encryption-disabled>" } }, "fileSystemLocations": [ { "type": "EFS", "location": "<EFS-DNS-name-1>:/<directory-path>", "mountPoint": "<mount-point>", "identifier": "<efs-identifier>", "mountOptions": "<efs-mount-options>" } ], "buildBatchConfig": { "serviceRole": "<batch-service-role>", "combineArtifacts": <combine-artifacts>, "restrictions": { "maximumBuildsAllowed": <max-builds>, "computeTypesAllowed": [ "<compute-type>" ] }, "timeoutInMins": <batch-timeout>, "batchReportMode": "REPORT_AGGREGATED_BATCH" | "REPORT_INDIVIDUAL_BUILDS" }, "concurrentBuildLimit": <concurrent-build-limit> }

Sustituya lo siguiente:

name

Obligatorio. El nombre de este proyecto de compilación. Este nombre debe ser único en todos los proyectos de compilación de tu cuenta. AWS

description

Opcional. La descripción de este proyecto de compilación.

origen

Obligatorio. Un ProjectSourceobjeto que contiene información sobre la configuración del código fuente de este proyecto de compilación. Después de añadir un objeto source, puede añadir hasta 12 orígenes más mediante el secondarySources. Esta configuración incluye lo siguiente:

source/type

Obligatorio. El tipo de repositorio que contiene el código fuente que se va a compilar. Los valores válidos son:

  • CODECOMMIT

  • CODEPIPELINE

  • GITHUB

  • GITHUB_ENTERPRISE

  • GITLAB

  • GITLAB_SELF_MANAGED

  • BITBUCKET

  • S3

  • NO_SOURCE

Si usa NO_SOURCE, la especificación de compilación no puede ser un archivo porque el proyecto no tiene un origen. En su lugar, debe usar el atributo buildspec para especificar una cadena con formato YAML para su especificación de compilación. Para obtener más información, consulte Ejemplo de proyecto sin un origen.

source/location

Obligatorio a menos que <source-type> sea CODEPIPELINE. La ubicación del código fuente para el tipo de repositorio especificado.

  • Para CodeCommit, la URL del clon HTTPS del repositorio que contiene el código fuente y el archivo buildspec (por ejemplo,). https://git-codecommit.<region-id>.amazonaws.com/v1/repos/<repo-name>

  • Para Amazon S3, el nombre del bucket de entrada de compilación, seguido de la ruta y el nombre del archivo ZIP que contiene el código fuente y la especificación de compilación. Por ejemplo:

    • Para un archivo ZIP ubicado en la raíz del bucket de entrada: <bucket-name>/<object-name>.zip.

    • Para un archivo ZIP ubicado en una subcarpeta del bucket de entrada: <bucket-name>/<subfoler-path>/<object-name>.zip.

  • Para GitHub, la URL del clon HTTPS del repositorio que contiene el código fuente y el archivo buildspec. La dirección URL debe contener github.com. Debes conectar tu AWS cuenta a tu cuenta. GitHub Para ello, utilice la CodeBuild consola para crear un proyecto de compilación.

    • Elija Authorize application. (Una vez que se haya conectado a su GitHub cuenta, no necesitará terminar de crear el proyecto de compilación. Puede cerrar la CodeBuild consola.)

  • En el caso de GitHub Enterprise Server, la URL del clon HTTP o HTTPS del repositorio que contiene el código fuente y el archivo buildspec. También debe conectar su AWS cuenta a su cuenta de GitHub Enterprise Server. Para ello, utilice la CodeBuild consola para crear un proyecto de compilación.

    1. Cree un token de acceso personal en GitHub Enterprise Server.

    2. Copie este token en su portapapeles para poder usarlo cuando cree su CodeBuild proyecto. Para obtener más información, consulte Crear un token de acceso personal para la línea de comandos en el sitio web de GitHub ayuda.

    3. Cuando utilice la consola para crear su CodeBuild proyecto, en Source, para Source provider, elija GitHubEnterprise.

    4. En Personal Access Token, pegue el token que ha copiado en el portapapeles. Elija Save Token. Su CodeBuild cuenta ahora está conectada a su cuenta de GitHub Enterprise Server.

  • Para la GitLab versión GitLab autogestionada, la URL del clon HTTPS del repositorio que contiene el código fuente y el archivo buildspec. Ten en cuenta que, si lo usas GitLab, la URL debe contener gitlab.com. Si utilizas la opción de GitLab autogestión, no es necesario que la URL contenga gitlab.com. Debes conectar tu AWS cuenta a tu cuenta GitLab o GitLab a tu cuenta autogestionada. Para ello, utilice la CodeBuild consola para crear un proyecto de compilación.

    • En el panel de navegación de las herramientas para desarrolladores, selecciona Configuración, Conexiones y, a continuación, Crear conexión. En esta página, cree una conexión autogestionada GitLab o una conexión GitLab autogestionada y, a continuación, seleccione Conectar a GitLab.

  • Para Bitbucket, la URL clon HTTPS al repositorio que contiene el código fuente y el archivo buildspec. La dirección URL debe contener bitbucket.org. También debes conectar tu AWS cuenta a tu cuenta de Bitbucket. Para ello, usa la CodeBuild consola para crear un proyecto de compilación.

    1. Cuando use la consola para conectarse (o volver a conectarse) a Bitbucket, en la página Confirm access to your account de Bitbucket, elija Grant access. (Una vez que te hayas conectado a tu cuenta de Bitbucket, no necesitas terminar de crear el proyecto de compilación. Puedes cerrar la CodeBuild consola.)

  • Para AWS CodePipeline, no especifique un location valor parasource. CodePipeline ignora este valor porque al crear una canalización en CodePipeline, se especifica la ubicación del código fuente en la etapa de origen de la canalización.

fuente/ gitCloneDepth

Opcional. La profundidad del historial que se va a descargar. El valor mínimo es 0. Si esta valor es 0, superior a 25 o no se facilita, se descargará el historial completo con cada proyecto de compilación. Si el tipo de origen es Amazon S3, este valor no se admite.

source/buildspec

Opcional. La definición o archivo de especificación de compilación que va a usar. Si este valor no se proporciona o se establece en una cadena vacía, el código fuente debe contener un archivo buildspec.yml en su directorio raíz. Si se establece este valor, puede ser una definición de especificación de compilación en línea, la ruta a un archivo de especificación de compilación alternativo en relación con el directorio raíz de la fuente principal, o la ruta hasta un bucket de S3. El depósito debe estar en la misma AWS región que el proyecto de construcción. Especifique el archivo buildspec utilizando su ARN (por ejemplo, arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml). Para obtener más información, consulte Nombre de archivo y ubicación de almacenamiento de buildspec.

source/auth

No utilizar. Este objeto solo lo usa la CodeBuild consola.

fuente/ reportBuildStatus

Especifica si se debe enviar al proveedor de código fuente el estado de inicio y finalización de una compilación. Si lo configuras con un proveedor de fuentes que no sea GitHub GitHub Enterprise Server o Bitbucket, aparecerá invalidInputException un.

Para poder informar del estado de la compilación al proveedor de fuentes, el usuario asociado al proveedor de fuentes debe tener acceso de escritura al repositorio. Si el usuario no tiene acceso de escritura, no es posible actualizar el estado de compilación. Para obtener más información, consulte Acceso al proveedor de fuentes.

fuente/ buildStatusConfig

Contiene información que define la forma en que el proyecto de CodeBuild compilación informa del estado de la compilación al proveedor de origen. Esta opción se utiliza solo cuando el tipo de fuente es GITHUB, GITHUB_ENTERPRISE o BITBUCKET.

fuente/buildStatusConfig/contexto

Con fuentes de Bitbucket, este parámetro se utiliza para el parámetro name en el estado de confirmación de Bitbucket. En el GitHub caso de las fuentes, este parámetro se utiliza para el context parámetro en el estado de GitHub confirmación.

Por ejemplo, puedes hacer que context contenga el número de compilación y el activador del webhook mediante las siguientes variables de CodeBuild entorno:

AWS CodeBuild sample-project Build #$CODEBUILD_BUILD_NUMBER - $CODEBUILD_WEBHOOK_TRIGGER

El resultado es que el contexto de la compilación n.º 24 se desencadena por un evento de solicitud de extracción de webhook:

AWS CodeBuild sample-project Build #24 - pr/8
fuente//targetURL buildStatusConfig

Con fuentes de Bitbucket, este parámetro se utiliza para el parámetro url en el estado de confirmación de Bitbucket. En el GitHub caso de las fuentes, este parámetro se utiliza para el target_url parámetro en el estado de GitHub confirmación.

Por ejemplo, es posible establecer la targetUrl y https://aws.amazon.com/codebuild/<path to build> y el estado de la confirmación se vinculará a esta URL.

También puedes incluir variables de CodeBuild entorno en el targetUrl para añadir información adicional a la URL. Por ejemplo, para añadir la región de compilación a la URL, establezca targetUrl en:

"targetUrl": "https://aws.amazon.com/codebuild/<path to build>?region=$AWS_REGION"

Si la región de compilación es us-east-2, esto se expandirá a:

https://aws.amazon.com/codebuild/<path to build>?region=us-east-2
fuente/ gitSubmodulesConfig

Opcional. Información acerca de la configuración de submódulos de Git. Se utiliza CodeCommit únicamente GitHub con GitHub Enterprise Server y Bitbucket.

source/ fetchSubmodules gitSubmodulesConfig

Establezca fetchSubmodules en true si desea incluir submódulos de Git en el repositorio. Los submódulos de Git que se incluyan deben estar configurados como HTTPS.

fuente/ InsecureSsl

Opcional. Se utiliza únicamente con GitHub Enterprise Server. Establezca este valor true para ignorar las advertencias de TLS al conectarse al repositorio de proyectos de GitHub Enterprise Server. El valor predeterminado es false. InsecureSsl debe utilizarse con fines de prueba únicamente. No debe utilizarse en un entorno de producción.

source/sourceIdentifier

Identificador definido por el usuario para la fuente del proyecto. Opcional para la fuente principal. Obligatorio para las fuentes secundarias.

secondarySources

Opcional. Conjunto de ProjectSourceobjetos que contienen información sobre las fuentes secundarias de un proyecto de compilación. Es posible añadir hasta 12 fuentes secundarias. Los objetos secondarySources utilizan las mismas propiedades que el objeto origen. En un objeto de fuente secundario, sourceIdentifier es obligatorio.

secondarySourceVersions

Opcional. Una matriz de objetos ProjectSourceVersion. Si se especifica secondarySourceVersions en el nivel de compilación, prevalece sobre esto.

sourceVersion

Opcional. Versión de la entrada de la compilación que se creará para este proyecto. Si no se especifica, se utiliza la versión más reciente. Si se especifica, debe ser una de las siguientes opciones:

  • Para CodeCommit, el ID de confirmación, la rama o la etiqueta de Git que se va a utilizar.

  • Para GitHub, el ID de confirmación, el ID de la solicitud de extracción, el nombre de la rama o el nombre de la etiqueta que corresponda a la versión del código fuente que quieres compilar. Si se especifica un ID de solicitud de inserción, este debe tener el formato pr/pull-request-ID (por ejemplo, pr/25). Si se especifica un nombre de ramificación, se usa el ID de confirmación HEAD de la ramificación. Si no se especifica, se usa el ID de confirmación HEAD de la ramificación personalizada.

  • Para GitLab: el ID de confirmación, el ID de la solicitud de extracción, el nombre de la sucursal, el nombre de la etiqueta o la referencia y un ID de confirmación. Para obtener más información, consulte Ejemplo de la versión fuente con AWS CodeBuild.

  • Para Bitbucket, el ID de confirmación, el nombre de ramificación o el nombre de etiqueta correspondiente a la versión de código fuente que desea compilar. Si se especifica un nombre de ramificación, se usa el ID de confirmación HEAD de la ramificación. Si no se especifica, se usa el ID de confirmación HEAD de la ramificación personalizada.

  • En Amazon S3, el ID de versión del objeto que representa el archivo ZIP de entrada de compilación que se va a utilizar.

Si se especifica sourceVersion en el nivel de compilación y, a continuación, esa versión prevalece sobre sourceVersion (en el nivel del proyecto). Para obtener más información, consulte Ejemplo de la versión fuente con AWS CodeBuild.

artifacts

Obligatorio. Un ProjectArtifactsobjeto que contiene información sobre la configuración de los artefactos de salida de este proyecto de compilación. Después de añadir un objeto artifacts, puede añadir hasta 12 artefactos más mediante el SecondaryArtifacts. Esta configuración incluye lo siguiente:

artifacts/type

Obligatorio. El tipo de artefacto de salida de la compilación. Los valores válidos son:

  • CODEPIPELINE

  • NO_ARTIFACTS

  • S3

artifacts/location

Solo se usa con el tipo de artefacto S3. No se usa para otros tipos de artefactos.

Nombre del bucket de salida creado o identificado en los requisitos previos.

artifacts/path

Solo se usa con el tipo de artefacto S3. No se usa para otros tipos de artefactos.

Ruta del bucket de salida para colocar el archivo ZIP o la carpeta. Si no especifica un valor parapath, CodeBuild utiliza namespaceType (si se ha especificado) y name para determinar la ruta y el nombre de la carpeta o archivo ZIP de salida de la compilación. Por ejemplo, si especifica MyPath en path y MyArtifact.zip en name, la ruta y el nombre serán MyPath/MyArtifact.zip.

artefactos/ NamespaceType

Solo se usa con el tipo de artefacto S3. No se usa para otros tipos de artefactos.

Espacio de nombres y archivo ZIP o carpeta de salida de la compilación. Los valores válidos son BUILD_ID y NONE. Utilice BUILD_ID para insertar el ID de compilación en la ruta del archivo ZIP o carpeta de salida de la compilación. De lo contrario, utilice NONE. Si no especifica un valor paranamespaceType, CodeBuild utiliza path (si se ha especificado) y name para determinar la ruta y el nombre de la carpeta o archivo ZIP de salida de la compilación. Por ejemplo, si especifica MyPath en path, BUILD_ID en namespaceType y MyArtifact.zip en name, la ruta y el nombre serán MyPath/build-ID/MyArtifact.zip.

artifacts/name

Solo se usa con el tipo de artefacto S3. No se usa para otros tipos de artefactos.

Nombre del archivo ZIP o la carpeta de salida de la compilación dentro de location. Por ejemplo, si especifica MyPath en path y MyArtifact.zip en name, la ruta y el nombre serán MyPath/MyArtifact.zip.

artefactos/ overrideArtifactName

Solo se usa con el tipo de artefacto de S3. No se usa para otros tipos de artefactos.

Opcional. Si se establece con true, el nombre especificado en el bloque artifacts del archivo de especificación de compilación anulará name. Para obtener más información, consulte Referencia de especificación de compilación para CodeBuild.

artifacts/packaging

Solo se usa con el tipo de artefacto S3. No se usa para otros tipos de artefactos.

Opcional. Especifica cómo empaquetar los artefactos. Los valores permitidos son:

NONE

Cree una carpeta que contenga los artefactos de compilación. Este es el valor predeterminado.

ZIP

Cree un archivo ZIP que contenga los artefactos de compilación.

SecondaryArtifacts

Opcional. Conjunto de ProjectArtifactsobjetos que contienen información sobre la configuración de los artefactos secundarios de un proyecto de construcción. Puede añadir hasta 12 artefactos secundarios. El objeto secondaryArtifacts usa muchos de los mismos valores que utiliza el objeto artifacts.

cache

Obligatorio. ProjectCacheObjeto que contiene información sobre la configuración de caché de este proyecto de compilación. Para obtener más información, consulte Almacenamiento en caché de compilaciones.

environment

Obligatorio. Un ProjectEnvironmentobjeto que contiene información sobre la configuración del entorno de compilación de este proyecto. Esta configuración incluye:

environment/type

Obligatorio. El tipo del entorno de compilación. Para obtener más información, consulta el artículo en la referencia CodeBuild de la API.

environment/image

Obligatorio. El identificador de imagen de Docker usado por este entorno de compilación. Normalmente, este identificador se expresa como imagen-name:etiqueta. Por ejemplo, en el repositorio de Docker que CodeBuild utiliza para administrar sus imágenes de Docker, esto podría ser. aws/codebuild/standard:5.0 En Docker Hub, maven:3.3.9-jdk-8. En Amazon ECR, account-id.dkr.ecr.region-id.amazonaws.com/your-Amazon-ECR-repo-name:tag. Para obtener más información, consulte Imágenes de Docker proporcionadas por CodeBuild.

environment/computeType

Obligatorio. Especifica los recursos de computación que utiliza este entorno de compilación. Para obtener más información, consulte ComputEtype en CodeBuild la referencia de la API.

environment/certificate

Opcional. El ARN del bucket de Amazon S3, el prefijo de la ruta y la clave de objeto que contienen el certificado codificado en PEM. La clave de objeto puede ser únicamente el archivo .pem o un archivo .zip que contenga el certificado codificado en PEM. Por ejemplo, si el nombre del bucket de Amazon S3 es <my-bucket>, el prefijo de ruta es <cert> y el nombre de la clave de objeto es <certificate.pem>, los formatos aceptables para certificate son <my-bucket/cert/certificate.pem> o arn:aws:s3:::<my-bucket/cert/certificate.pem>.

environment/environmentVariables

Opcional. Matriz de EnvironmentVariableobjetos que contiene las variables de entorno que quieres especificar para este entorno de compilación. Cada variable de entorno se expresa como un objeto que contiene un name, value y type de name, value y type.

La consola y AWS CLI los usuarios pueden ver todas las variables de entorno. Si no le preocupa que la variable de entorno esté visible, establezca name y value, y establezca type con PLAINTEXT.

Le recomendamos que almacene las variables de entorno con valores confidenciales, como un identificador de clave de AWS acceso, una clave de acceso AWS secreta o una contraseña, como parámetro en el almacén AWS Secrets Manager de parámetros de Amazon EC2 Systems Manager o. Puesname, para ese parámetro almacenado, defina un identificador CodeBuild para la referencia.

Si utiliza el almacén de parámetros de Amazon EC2 Systems Manager, value defina el nombre del parámetro tal como está almacenado en el almacén de parámetros. Establezca type en PARAMETER_STORE. Utilizando un parámetro denominado /CodeBuild/dockerLoginPassword como ejemplo, establezca name con LOGIN_PASSWORD. Establezca value en /CodeBuild/dockerLoginPassword. Establezca type en PARAMETER_STORE.

importante

Si utiliza el almacén de parámetros de Amazon EC2 Systems Manager, le recomendamos que almacene los parámetros con nombres de parámetros que comiencen por /CodeBuild/ (por ejemplo, /CodeBuild/dockerLoginPassword). Puede utilizar la CodeBuild consola para crear un parámetro en Amazon EC2 Systems Manager. Seleccione Crear parámetro y siga las instrucciones del cuadro de diálogo. (En ese cuadro de diálogo, para la clave KMS, puede especificar el ARN de una AWS KMS clave de su cuenta. Amazon EC2 Systems Manager utiliza esta clave para cifrar el valor del parámetro durante el almacenamiento y descifrarlo durante la recuperación.) Si utiliza la CodeBuild consola para crear un parámetro, la consola comienza con el nombre del parámetro a /CodeBuild/ medida que se va almacenando. Para obtener más información, consulte Almacén de parámetros de Systems Manager y Tutorial de la consola del almacén de parámetros de Systems Manager en la Guía del usuario de Amazon EC2 Systems Manager.

Si el proyecto de compilación hace referencia a parámetros almacenados en el almacén de parámetros de Amazon EC2 Systems Manager, el rol de servicio del proyecto de compilación debe permitir la acción ssm:GetParameters. Si seleccionaste Nueva función de servicio anteriormente, CodeBuild incluye esta acción en la función de servicio predeterminada de tu proyecto de compilación. Sin embargo, si ha seleccionado Rol de servicio existente, deberá incluir esta acción en el rol de servicio por separado.

Si el proyecto de compilación hace referencia a parámetros que se encuentran en el almacén de parámetros de Amazon EC2 Systems Manager cuyos nombres no empiezan por /CodeBuild/ y ha seleccionado Nuevo rol de servicio, debe actualizar ese rol de servicio para permitir el acceso a nombres de parámetro que no empiecen por /CodeBuild/. Esto es así porque el rol de servicio permite el acceso únicamente a los nombres de parámetro que empiezan por /CodeBuild/.

Si se selecciona Nuevo rol de servicio, el rol de servicio incluye permisos para descifrar todos los parámetros en el espacio de nombres de /CodeBuild/ en el almacén de parámetros de Amazon EC2 Systems Manager.

Las variables de entorno que defina reemplazan las variables de entorno existentes. Por ejemplo, si la imagen de Docker ya contiene una variable de entorno denominada MY_VAR con un valor de my_value y establece una variable de entorno denominada MY_VAR con un valor de other_value, my_value se reemplaza por other_value. Asimismo, si la imagen de Docker ya contiene una variable de entorno denominada PATH con un valor de /usr/local/sbin:/usr/local/bin y establece una variable de entorno denominada PATH con un valor de $PATH:/usr/share/ant/bin, /usr/local/sbin:/usr/local/bin se reemplaza por el valor literal $PATH:/usr/share/ant/bin.

No establezca variables de entorno con un nombre que empiece por CODEBUILD_. Este prefijo se reserva para uso interno de .

Si se define una variable de entorno con el mismo nombre en varios lugares, el valor se determina de la siguiente manera:

  • El valor de la llamada a la operación de inicio de la compilación tiene la máxima prioridad.

  • El valor de la definición del proyecto de compilación es el siguiente en orden de prioridad.

  • El valor en la declaración de especificación de compilación es el que menos prioridad tiene.

Si usa Secrets Manager, para value, defina el nombre del parámetro tal como está almacenado en Secrets Manager. Establezca type en SECRETS_MANAGER. Utilizando un secreto denominado /CodeBuild/dockerLoginPassword como ejemplo, establezca name con LOGIN_PASSWORD. Establezca value en /CodeBuild/dockerLoginPassword. Establezca type en SECRETS_MANAGER.

importante

Si se utiliza Secrets Manager, recomendamos almacenar los secretos con nombres que comiencen por /CodeBuild/ (por ejemplo, /CodeBuild/dockerLoginPassword). Para obtener más información, consulte AWS Secrets Manager en la Guía del usuario de AWS Secrets Manager .

Si el proyecto de compilación hace referencia a secretos almacenados Secrets Manager, el rol de servicio del proyecto de compilación debe permitir la acción secretsmanager:GetSecretValue. Si seleccionaste un nuevo rol de servicio anteriormente, CodeBuild incluye esta acción en el rol de servicio predeterminado para tu proyecto de construcción. Sin embargo, si ha seleccionado Rol de servicio existente, deberá incluir esta acción en el rol de servicio por separado.

Si el proyecto de compilación hace referencia a secretos almacenados en Secrets Manager cuyos nombres no empiezan por /CodeBuild/ y se selecciona Nuevo rol de servicio, es necesario actualizar ese rol de servicio para permitir el acceso a nombres de parámetro que no empiecen por /CodeBuild/. Esto es así porque el rol de servicio permite el acceso únicamente a los nombres de secreto que empiezan por /CodeBuild/.

Si elige Nuevo rol de servicio, el rol de servicio incluye permisos para descifrar todos los secretos en el espacio de nombres de /CodeBuild/ en Secrets Manager.

environment/registryCredential

Opcional. Un RegistryCredentialobjeto que especifica las credenciales que proporcionan acceso a un registro de Docker privado.

environment/registryCredential/credential

Especifica el ARN o nombre de las credenciales creadas mediante AWS Managed Services. Puede utilizar el nombre de las credenciales solo si existen en su región actual.

environment/registryCredential/credentialProvider

El único valor válido es SECRETS_MANAGER.

Cuando se ha establecido:

  • imagePullCredentials se debe establecer en SERVICE_ROLE.

  • La imagen no puede ser una imagen seleccionada ni una imagen de Amazon ECR.

entorno/ tipo imagePullCredentials

Opcional. El tipo de credenciales que se CodeBuild utilizan para extraer imágenes de tu compilación. Hay dos valores válidos:

CODEBUILD

CODEBUILDespecifica que CodeBuild usa sus propias credenciales. Debe editar la política de repositorios de Amazon ECR para confiar en el principal del CodeBuild servicio.

SERVICE_ROLE

Especifica que CodeBuild utiliza la función de servicio de su proyecto de compilación.

Cuando utilice una imagen de registro entre cuentas o privada, debe usar credenciales de SERVICE_ROLE. Cuando usas una imagen CodeBuild seleccionada, debes usar CODEBUILD credenciales.

environment/privilegedMode

Establézcalo como true si va a usar este proyecto de compilación para crear imágenes de Docker. De lo contrario, todas las compilaciones asociadas que intenten interactuar con el daemon de Docker producirán un error. También debe iniciar el daemon de Docker para que las compilaciones puedan interactuar con él. Una forma de hacerlo es iniciar el daemon Docker en la fase de install de su archivo buildspec ejecutando los siguientes comandos de compilación. No ejecute estos comandos si especificó una imagen de entorno de compilación proporcionada por el soporte CodeBuild de Docker.

nota

De forma predeterminada, el daemon de Docker está habilitado para compilaciones que no son de VPC. Si quieres usar contenedores Docker para compilaciones de VPC, consulta Privilegios de tiempo de ejecución y capacidades de Linux en el sitio web de Docker Docs y habilita el modo privilegiado. Además, Windows no admite el modo privilegiado.

- nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"

serviceRole

Obligatorio. El ARN del rol de servicio que se CodeBuild utiliza para interactuar con los servicios en nombre del usuario (por ejemplo,arn:aws:iam::account-id:role/role-name).

timeoutInMinutes

Opcional. El número de minutos, entre 5 y 480 (8 horas), tras los cuales CodeBuild se detiene la compilación si no se completa. Si no se especifica, se usa el valor predeterminado de 60. Para determinar si una compilación se CodeBuild detuvo debido a un tiempo de espera y cuándo, ejecuta el batch-get-builds comando. Para determinar si la compilación se ha detenido, busque en la salida un valor de buildStatus de FAILED. Para determinar cuándo se ha agotado el tiempo de espera de la compilación, busque en la salida el valor de endTime asociado a un valor de phaseStatus de TIMED_OUT.

queuedTimeoutInMinutos

Opcional. El número de minutos, entre 5 y 480 (8 horas), tras los que CodeBuild se detiene la compilación si sigue en cola. Si no se especifica, se usa el valor predeterminado de 60.

encryptionKey

Opcional. El alias o el ARN del AWS KMS key utilizado por CodeBuild para cifrar el resultado de la compilación. Si especifica un alias, utilice el formato arn:aws:kms:region-ID:account-ID:key/key-ID o si existe un alias, utilice el formato alias/key-alias. Si no se especifica, se utiliza la clave de KMS AWS administrada para Amazon S3.

etiquetas

Opcional. Matriz de objetos Tag que proporcionan las etiquetas que desea asociar a este proyecto de compilación. Puede especificar hasta 50 etiquetas. Cualquier AWS servicio que admita etiquetas de proyectos de CodeBuild compilación puede utilizar estas etiquetas. Cada etiqueta se expresa como un objeto con key y value.

vpcConfig

Opcional. Un VpcConfigobjeto que contiene información sobre la configuración de la VPC del proyecto. Para obtener más información, consulte Úselo AWS CodeBuild con Amazon Virtual Private Cloud.

Estas propiedades incluyen:

vpcId

Obligatorio. El ID de VPC que CodeBuild utiliza. Ejecute este comando para obtener una lista de todos los ID de la VPC de su región:

aws ec2 describe-vpcs --region <region-ID>
subnets

Obligatorio. Conjunto de identificadores de subred que incluyen los recursos utilizados por. CodeBuild Para obtener estos ID, ejecute este comando:

aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region <region-ID>
securityGroupIds

Obligatorio. Conjunto de ID de grupos de seguridad que utiliza CodeBuild para permitir el acceso a los recursos de la VPC. Para obtener estos ID, ejecute este comando:

aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<vpc-id>" --<region-ID>

badgeEnabled

Opcional. Especifica si se deben incluir distintivos de construcción en el proyecto. CodeBuild Configúrelo como true para activar las insignias de compilación o false en caso contrario. Para obtener más información, consulte Crea un ejemplo de insignias con CodeBuild.

logsConfig

Un LogsConfigobjeto que contiene información sobre la ubicación de los registros de esta compilación.

LogsConfig/ cloudWatchLogs

CloudWatchLogsConfigObjeto que contiene información sobre cómo enviar registros a Logs. CloudWatch

logsConfig/s3Logs

Un LogsConfig objeto de S3 que contiene información sobre cómo enviar registros a Amazon S3.

fileSystemLocations

Opcional. Conjunto de ProjectFileSystemsLocationobjetos que contiene información sobre la configuración de Amazon EFS.

buildBatchConfig

Opcional. El buildBatchConfig objeto es una ProjectBuildBatchConfigestructura que contiene la información de configuración de compilación por lotes del proyecto.

buildBatchConfig/ServiceRole

ARN del rol de servicio para el proyecto de compilación por lotes.

buildBatchConfig/Combine artefactos

Valor booleano que especifica si se deben combinar los artefactos de compilación de la compilación por lotes en una única ubicación de artefactos.

buildBatchConfig/restricciones/ maximumBuildsAllowed

Número máximo de compilaciones permitidas.

buildBatchConfig/restricciones/ computeTypesAllowed

Una matriz de cadenas que especifican los tipos de computación permitidos para la compilación por lotes. Consulte los valores en Tipos de computación del entorno de compilación.

buildBatchConfig/timeoutInMinutes

Cantidad máxima de tiempo, en minutos, en que se debe completar la compilación por lotes.

buildBatchConfig/batchReportMode

Especifica cómo se envían los informes de estado de compilación al proveedor de origen para la compilación por lotes. Los valores válidos son:

REPORT_AGGREGATED_BATCH

(Predeterminado) Agregue todos los estados de compilación en un único informe de estado.

REPORT_INDIVIDUAL_BUILDS

Envíe un informe de estado independiente para cada compilación individual.

concurrentBuildLimit

Establece el número máximo de versiones simultáneas que están permitidas para este proyecto.

Solo se inician compilaciones nuevas si el número actual de compilaciones es menor o igual que este límite. Si el número de compilaciones actual alcanza este límite, se regulan las compilaciones nuevas y no se ejecutan.

Creación del proyecto

Para crear el proyecto, vuelva a ejecutar el comando create-project pasando su archivo JSON:

aws codebuild create-project --cli-input-json file://<json-file>

Si se ejecuta correctamente, la salida de la consola muestra la representación en JSON de un objeto Project. Consulte la sintaxis de CreateProject respuesta para ver un ejemplo de estos datos.

Excepto el nombre del proyecto de compilación, puede cambiar cualquiera de los ajustes del proyecto de compilación más adelante. Para obtener más información, consulte Cambiar la configuración de un proyecto de compilación (AWS CLI).

Para empezar a ejecutar una compilación, consulte Ejecutar una compilación (AWS CLI).

Si el código fuente está almacenado en un GitHub repositorio y desea CodeBuild reconstruirlo cada vez que se introduzca un cambio de código en el repositorio, consulteIniciar la ejecución de compilaciones automáticamente (AWS CLI).