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 cómo usar la AWS CLI con CodeBuild, consulte Referencia de la línea de comandos.

Para crear unCodeBuildproyecto de compilación utilizando elAWS CLI, crea un formato JSONProyecto deestructura, rellene la estructura y llame alcreate-projectpara crear el proyecto.

Creación del archivo JSON

Cree un archivo JSON de esqueleto con elcreate-project, utilizando el comando--generate-cli-skeletonopción:

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>.

Rellene el archivo JSON

Modifique los datos JSON de la siguiente manera y guarde los resultados.

{ "name": "<project-name>", "description": "<description>", "source": { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "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" | "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", "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 su cuenta de AWS.

description

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

origen

Obligatorio. UNAProjectSourceque 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:

fuen/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

  • 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.

fuen/ubicación

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

  • Para CodeCommit, la URL clon HTTPS al 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 la 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:

    • En el caso de 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.

  • ParaGitHub, la URL clon HTTPS al repositorio que contiene el código fuente y el archivo buildspec. La dirección URL debe contener github.com. Debe conectar suAWScuenta a suGitHubaccount. Para ello, utilice la consola de CodeBuild para crear un proyecto de compilación.

    1. En la páginaGitHub Autorizar solicitud, en la página deAcceso a la organizaciónsección, elijaSolicitud de accesojunto a cada repositorio que quierasCodeBuildpara poder acceder en el.

    2. Elija Authorize application. (Después de haberte conectado a tuGitHub, no es necesario que termine de crear el proyecto de compilación. Puede cerrar elCodeBuildconsola de.)

  • ParaGitHubEnterprise Server, la URL clon HTTP o HTTPS al repositorio que contiene el código fuente y el archivo buildspec. También debe conectar suAWScuenta a suGitHubCuenta Enterprise Server. Para ello, utilice la consola de CodeBuild para crear un proyecto de compilación.

    1. Cree un token de acceso personal enGitHubEnterprise Server.

    2. Copie dicho token en el portapapeles de forma que pueda utilizarlo al crear el proyecto de CodeBuild. Para obtener más información, consulteCreación de un token de acceso personal para la línea de comandosen elGitHubSitio web de ayuda.

    3. Cuando utilice la consola para crear suCodeBuildproject, enFuente, paraProveedor de origen, eligeGitHubEmpresa.

    4. En Personal Access Token, pegue el token que ha copiado en el portapapeles. Elija Save Token. SusCodeBuildLa cuenta está conectada a suGitHubCuenta Enterprise Server.

  • 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. Además, debe conectar su cuenta de AWS a su cuenta de Bitbucket. Para ello, utilice la consola de CodeBuild 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 conectado a su cuenta de Bitbucket, no es necesario que termine de crear el proyecto de compilación. Puede cerrar elCodeBuildconsola de.)

  • En AWS CodePipeline, no especifique el valor location para source. CodePipelineno tiene en cuenta este valor, ya que cuando se crea una canalización enCodePipeline, se especifica la ubicación del código fuente en la etapa Source de la canalización.

fuen/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.

fuen/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 insertada, la ruta a un archivo de especificación de compilación alternativo en relación con el directorio raíz de su fuente principal o la ruta a un bucket de S3. El bucket debe encontrarse en la misma región de AWS que el proyecto de compilació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.

fuen/auth

No utilizar. Este objeto es utilizado por elCodeBuildsolo consola de.

fuen/reportBuildStatus

Especifica si se debe enviar al proveedor de código fuente el estado de inicio y finalización de una compilación. Si establece este valor con un proveedor de código fuente distinto deGitHub,GitHubEnterprise Server, o Bitbucket, uninvalidInputExceptionse lanza.

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

fuen/buildStatusConfig

Contiene información que define la forma en que elCodeBuildbuild project informa del estado de compilación al proveedor de origen. Esta opción se utiliza solo cuando el tipo de fuente esGITHUB,GITHUB_ENTERPRISE, o bienBITBUCKET.

fuen/buildStatusConfig/contexto

En el caso de los orígenes de Bitbucket, este parámetro se utiliza para elnameen el estado de confirmación de Bitbucket. ParaGitHubsources, este parámetro se utiliza para lacontextdel parámetro delGitHubestado de confirmación.

Por ejemplo, puede tener elcontextcontiene el número de compilación y el desencadenador webhook utilizando elCodeBuildvariables de entorno:

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

Esto hace que el contexto aparezca así para la compilación #24 activada por un evento de solicitud de inserción de webhook:

AWS CodeBuild sample-project Build #24 - pr/8
fuen/buildStatusConfig/Turl de destino

En el caso de los orígenes de Bitbucket, este parámetro se utiliza para elurlen el estado de confirmación de Bitbucket. ParaGitHubsources, este parámetro se utiliza para latarget_urldel parámetro delGitHubestado de confirmación.

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

También puede incluirCodeBuildVariables de entorno en eltargetUrlpara añadir información adicional a la URL. Por ejemplo, para agregar la región de compilación a la URL, establezca latargetUrla:

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

Si la región de compilación esus-east-2, se ampliará a:

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

Opcional. Información acerca de la configuración de submódulos de Git. Utilizado conCodeCommit,GitHub,GitHubSolo Enterprise Server y Bitbucket.

fuen/gitSubmodulesConfig/FetchSubmodules

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.

fuen/InsecureSsl

Opcional. Utilizado conGitHubSolo Enterprise Server. Establezca este valor entruepara omitir las advertencias de TLS al conectarse alGitHubRepositorio de proyectos de Enterprise Server. El valor predeterminado es false. InsecureSsl debe utilizarse con fines de prueba únicamente. No debe utilizarse en un entorno de producción.

fuen/SourceIdentifier

Un identificador definido por el usuario para el origen del proyecto. Opcional para el origen principal. Necesario para fuentes secundarias.

secondarySources

Opcional. Una matriz deProjectSourceobjetos que contienen información sobre los orígenes secundarios de un proyecto de compilación. Puede añadir hasta 12 fuentes secundarias. LasecondarySourceslos objetos utilizan las mismas propiedades utilizadas por elorigenun objeto. En un objeto de origen secundario, elsourceIdentifieres obligatorio.

secondarySourceVersions

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

sourceVersion

Opcional. La 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:

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

  • ParaGitHub, el ID de confirmación, el ID de solicitud de inserció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 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 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 versión de origen con AWS CodeBuild.

Artefactos de

Obligatorio. UNAProjectArtifactsque contiene información sobre la configuración del artefacto 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:

artifactos/type

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

  • CODEPIPELINE

  • NO_ARTIFACTS

  • S3

artifactos/ubicación

Solo se utiliza con elS3Tipo de artefacto. No se utiliza para otros tipos de artefactos.

El nombre del bucket de salida que creó o identificó en los requisitos previos.

artifactos/ruta

Solo se utiliza con elS3Tipo de artefacto. No se utiliza para otros tipos de artefactos.

Ruta del depósito de salida para colocar el archivo ZIP o la carpeta. Si no especifica ningún valor parapath,CodeBuildutilizanamespaceType(si se especifica) ynamepara determinar la ruta y el nombre del archivo ZIP o carpeta de salida de la compilación. Por ejemplo, si especificaMyPathparapathyMyArtifact.zipparaname, el camino y el nombre seríanMyPath/MyArtifact.zip.

artifactos/namespaceType

Solo se utiliza con elS3Tipo de artefacto. No se utiliza para otros tipos de artefactos.

El espacio de nombres del 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 ningún valor paranamespaceType,CodeBuildutilizapath(si se especifica) ynamepara determinar la ruta y el nombre del archivo ZIP o carpeta de salida de la compilación. Por ejemplo, si especificaMyPathparapath,BUILD_IDparanamespaceType, yMyArtifact.zipparaname, el camino y el nombre seríanMyPath/build-ID/MyArtifact.zip.

artifacts/name

Solo se utiliza con elS3Tipo de artefacto. No se utiliza para otros tipos de artefactos.

El nombre del archivo ZIP o carpeta de salida de la compilación dentro delocation. Por ejemplo, si especificaMyPathparapathyMyArtifact.zipparaname, el camino y el nombre seríanMyPath/MyArtifact.zip.

artifactos/overrideArtifactName

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

Opcional. Si se establece entrue, el nombre especificado en elartifactsbloque de las modificaciones del archivo buildspecname. Para obtener más información, consulte Referencia de la especificación de compilación de CodeBuild.

artifactos/empaquetado

Solo se utiliza con elS3Tipo de artefacto. No se utiliza 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. Una matriz deProjectArtifactsobjetos que contienen información sobre la configuración de artefactos secundarios de un proyecto de compilación. Puede añadir hasta 12 artefactos secundarios. El objeto secondaryArtifacts usa muchos de los mismos valores que utiliza el objeto Artefactos de.

caché

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

environment

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

ambiente/type

Obligatorio. El tipo del entorno de compilación. Para obtener más información, consultetypeen laCodeBuildReferencia de la API.

ambiente/imagen

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 usa para administrar sus imágenes de Docker, este podría ser aws/codebuild/standard:4.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.

ambiente/computeType

Obligatorio. Especifica los recursos informáticos utilizados por este entorno de compilación. Para obtener más información, consultecomputeTypeen laCodeBuildReferencia de la API.

ambiente/certificado

Opcional. El ARN del bucket de Amazon S3, el prefijo de ruta y la clave de objeto que contiene 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 esmy-bucket, tu prefijo de ruta escert, y el nombre de la clave de objeto escertificate.pemy, a continuación, formatos aceptables paracertificatesonmy-bucket/cert/certificate.pemoarn:aws:s3:::my-bucket/cert/certificate.pem.

ambiente/Variables de entorno

Opcional. Una matriz deEnvironmentVariableobjetos que contienen las variables de entorno que desea especificar para este entorno de compilación. Cada variable de entorno se expresa como un objeto que contiene unaname,value, ytypedename,value, ytype.

Consola yAWS CLIlos usuarios pueden ver todas las variables de entorno. Si no le preocupa que la variable de entorno esté visible, definanameyvalue, y settypeaPLAINTEXT.

Le recomendamos que almacene variables de entorno con valores sensibles, como unAWSID de clave de acceso,AWSclave de acceso secreta, o una contraseña, como parámetro en el almacén de parámetros Amazon EC2 Systems Manager oAWS Secrets Manager. Paraname, para ese parámetro almacenado, defina un identificador paraCodeBuildpara hacer referencia.

Si utiliza Amazon EC2 Systems Managervalue, defina el nombre del parámetro tal como está almacenado en el almacén de parámetros de. Establezca type en PARAMETER_STORE. Uso de un parámetro denominado/CodeBuild/dockerLoginPasswordComo ejemplo, establezcanameaLOGIN_PASSWORD. Establezca value en /CodeBuild/dockerLoginPassword. Establezca type en PARAMETER_STORE.

importante

Si utiliza el almacén de parámetros 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 elCodeBuildpara crear un parámetro en Amazon EC2 Systems Manager. Seleccione Create a parameter (Crear parámetro) y siga las instrucciones del cuadro de diálogo. (En ese cuadro de diálogo, paraClave KMS, puede especificar el ARN de unAWS KMSclave en tu 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 usa la consola de CodeBuild para crear un parámetro, la consola asigna /CodeBuild/ al principio del nombre del parámetro cuando este se almacena. Para obtener más información, consulteAlmacén de parámetros de Administrador de sistemasyTutorial de la consola del almacén de parámetros de Systems Manageren laGuí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 Amazon EC2 Systems Manager, el rol de servicio del proyecto de compilación debe permitir lassm:GetParametersaction. Si anteriormente seleccionó New service role (Nuevo rol de servicio), CodeBuild incluirá automáticamente esta acción en el rol de servicio predeterminado del proyecto de compilación. Sin embargo, si seleccionó Existing service role (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 almacenados en el almacén de parámetros Amazon EC2 Systems Manager con nombres de parámetros que no empiecen por/CodeBuild/, y eligióNuevo rol de servicio, debe actualizar ese rol de servicio para permitir el acceso a nombres de parámetros que no empiezan 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 eligeNuevo rol de servicio, el rol de servicio incluye permisos para descifrar todos los parámetros en la/CodeBuild/namespace en el almacén de parámetros 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 usas Secrets Manager, paravalue, defina el nombre del parámetro tal como está almacenado en Secrets Manager. Establezca type en SECRETS_MANAGER. Uso de un secreto llamado/CodeBuild/dockerLoginPasswordComo ejemplo, establezcanameaLOGIN_PASSWORD. Establezca value en /CodeBuild/dockerLoginPassword. Establezca type en SECRETS_MANAGER.

importante

Si utiliza Secrets Manager, le recomendamos que almacene secretos con nombres que comiencen por/CodeBuild/(por ejemplo,/CodeBuild/dockerLoginPassword). Para obtener más información, consulte ¿Qué es AWS Secrets Manager? en la Guía del usuario de AWS Secrets Manager.

Si el proyecto de compilación hace referencia a secretos almacenados en Secrets Manager, el rol de servicio del proyecto de compilación debe permitir lasecretsmanager:GetSecretValueaction. Si anteriormente seleccionó New service role (Nuevo rol de servicio), CodeBuild incluirá automáticamente esta acción en el rol de servicio predeterminado del proyecto de compilación. Sin embargo, si seleccionó Existing service role (Rol de servicio existente), deberá incluir esta acción en el rol de servicio por separado.

Si tu proyecto de compilación hace referencia a secretos almacenados en Secrets Manager con nombres secretos que no empiezan por/CodeBuild/, y eligióNuevo rol de servicio, debe actualizar el rol de servicio para permitir el acceso a nombres secretos que no empiezan por/CodeBuild/. Esto es así porque el rol de servicio permite el acceso únicamente a nombres secretos que empiezan por/CodeBuild/.

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

ambiente/RegistryCredential

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

Entorno/Credencial de registro/credencial

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

Entorno/Credencial de registro/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.

ambiente/imagePullCredentialsTipo

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

CODEBUILD

CODEBUILD especifica que CodeBuild usa sus propias credenciales. Debe editar su política de repositorio de Amazon ECR para confiar en laCodeBuildPrincipal de servicio.

SERVICE_ROLE

Especifica queCodeBuildutiliza el rol de servicio del proyecto de compilación.

Cuando utilice una imagen de registro entre cuentas o privada, debe usar credenciales de SERVICE_ROLE. Su utiliza una imagen preparada de CodeBuild, debe utilizar credenciales de CODEBUILD.

ambiente/privilegedMode

Establecer comotrueúnicamente si tiene previsto usar este proyecto de compilación para compilar imágenes de Docker y la imagen del entorno de compilación que especificó no es una de las proporcionadas porCodeBuildcon soporte 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 del entorno de compilación proporcionada por CodeBuild compatible con Docker.

nota

De forma predeterminada, los contenedores Docker no permiten el acceso a ningún dispositivo. El modo privilegiado otorga acceso al contenedor Docker de un proyecto de compilación a todos los dispositivos. Para obtener más información, consulte la sección sobre privilegios en tiempo de ejecución y capacidades de Linux en el sitio web de Docker Docs.

- 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 servicioCodeBuildutiliza para interactuar con los servicios en nombre del usuario de IAM (por ejemplo,arn:aws:iam::account-id:role/role-name).

timeoutInMinutes

Opcional. El número de minutos comprendidos entre 5 y 480 (8 horas) tras los cuales CodeBuild detendrá la compilación si no se ha completado. Si no se especifica, se usa el valor predeterminado de 60. Para determinar si y cuándo CodeBuild ha detenido una compilación debido a que se ha agotado el tiempo de espera, ejecute el comando batch-get-builds. 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.

queuedTimeoutInActa

Opcional. El número de minutos comprendidos entre 5 y 480 (8 horas) tras los cualesCodeBuilddetiene la compilación si aún está en cola. Si no se especifica, se usa el valor predeterminado de 60.

encryptionKey

Opcional. El alias o ARN delAWS KMS keyutilizado porCodeBuildpara cifrar la salida de 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, elAWS-Se utiliza la clave KMS administrada para Amazon S3.

etiquetas

Opcional. Una matriz deEtiquetarobjetos que proporcionan las etiquetas que desea asociar a este proyecto de compilación. Puede especificar hasta 50 etiquetas. Estas etiquetas se pueden utilizar en cualquier servicio de AWS que admita etiquetas de proyectos de compilación de CodeBuild. Cada etiqueta se expresa como un objeto con unakeyy unvalue.

VpcConfig

Opcional. UNAVpcConfigque contiene información sobre la configuración de VPC para el proyecto. Para obtener más información, consulte UsarAWS CodeBuildcon Amazon Virtual Private Cloud.

Entre estas propiedades se incluyen:

vpcId

Obligatorio. El ID de la VPC que usa CodeBuild. 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>
subredes

Obligatorio. Una matriz de los IDs de subred que incluyen recursos utilizados porCodeBuild. Para obtener estos ID, ejecute este comando:

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

Obligatorio. Una matriz de los ID de grupos de seguridad utilizados porCodeBuildpara permitir el acceso a los recursos en 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 van a incluir distintivos de compilación con suCodeBuildproject. Establecer comotruepara habilitar insignias de compilación, ofalseDe lo contrario, . Para obtener más información, consulte Ejemplo de insignias de compilación con Code.

LogsConfig

UNALogsConfigque contiene información sobre el lugar en que se encuentran los registros de esta compilación.

LogsConfig/cloudWatchLogs

UNACloudWatchLogsConfigque contiene información sobre cómo insertar registros enCloudWatchRegistros.

LogsConfig/S3Logs

UnS3LogsConfigque contiene información sobre la transferencia de registros en Amazon S3.

fileSystemLocations

Opcional. Una matriz deProjectFileSystemsLocationobjetos que contienen información sobre la configuración de Amazon EFS.

buildBatchConfig

Opcional. LabuildBatchConfigel objeto es unProjectBuildBatchConfigestructura que contiene la información de configuración de la compilación por lotes para el proyecto.

buildBatchConfig/serviceRole

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

buildBatchConfig/CombineArtifacts

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

buildBatchConfig/Restricciones/maximumBuildsAllowed

El 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. ConsulteTipos de computación del entorno de compilaciónpara estos valores.

buildBatchConfig/timeoutInMinutes

El tiempo máximo, 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) Agrega todos los estados de compilación en un único informe de estado.

REPORT_INDIVIDUAL_BUILDS

Envía 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.

Las nuevas versiones solo se inician si el número actual de versiones es menor o igual a este límite. Si el recuento de versiones actual cumple con este límite, las nuevas versiones se limitan y no se ejecutan.

Creación del proyecto

Para crear el proyecto, ejecute elcreate-projectde nuevo, pasando su archivo JSON:

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

Si tiene éxito, la representación JSON de unProyecto deel objeto aparece en la salida de la consola. Consultece laCreateProjectSintaxis de la respuestapara 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 unGitHubrepositorio, y quieresCodeBuildpara volver a compilar el código fuente cada vez que se envía un cambio de código al repositorio, consulteIniciar la ejecución de compilaciones automáticamente (AWS CLI).