View a markdown version of this page

AWS CodeBuild referencia de acciones de creación y prueba - AWS CodePipeline

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.

AWS CodeBuild referencia de acciones de creación y prueba

Le permite ejecutar compilaciones y pruebas como parte de la canalización. Cuando ejecutas una acción de CodeBuild compilación o prueba, los comandos especificados en la especificación de compilación se ejecutan dentro de un contenedor. CodeBuild Todos los artefactos que se especifican como artefactos de entrada para una CodeBuild acción están disponibles en el contenedor en el que se ejecutan los comandos. CodeBuild pueden proporcionar una acción de compilación o de prueba. Para obtener más información, consulte la Guía del usuario de AWS CodeBuild.

Cuando usas el CodePipeline asistente de la consola para crear un proyecto de compilación, el proyecto de CodeBuild compilación muestra que el proveedor de origen es CodePipeline. Cuando creas un proyecto de compilación en la CodeBuild consola, no puedes especificarlo CodePipeline como proveedor de origen, pero al añadir la acción de compilación a tu canalización, se ajusta el origen en la CodeBuild consola. Para obtener más información, consulta ProjectSource en la AWS CodeBuild Referencia de la API de .

Tipo de acción

  • Categoría: Build o Test

  • Propietario: AWS

  • Proveedor: CodeBuild

  • Versión: 1

Parámetros de configuración

ProjectName

Obligatorio: sí

ProjectNamees el nombre del proyecto de compilación en CodeBuild.

PrimarySource

Obligatorio: condicional

El valor del PrimarySource parámetro debe ser el nombre de uno de los artefactos de entrada de la acción. CodeBuild busca el archivo buildspec y ejecuta los comandos buildspec en el directorio que contiene la versión descomprimida de este artefacto.

Este parámetro es necesario si se especifican varios artefactos de entrada para una acción de CodeBuild . Cuando solo hay un artefacto de origen para la acción, el artefacto PrimarySource se establece como valor predeterminado de dicho artefacto.

BatchEnabled

Obligatorio: no

El valor booleano del parámetro BatchEnabled permite que la acción ejecute varias compilaciones en la misma ejecución de compilación.

Cuando esta opción está habilitada, la opción CombineArtifacts está disponible.

Para ver ejemplos de canalizaciones con compilaciones por lotes habilitadas, consulta la integración con y las compilaciones por lotes. CodePipeline CodeBuild

BuildspecOverride

Obligatorio: no

Definición de buildspec insertada o declaración del archivo buildspec que invalida la última definida en el proyecto de compilación, solo para esta compilación. Las especificaciones de buildspec que se han definido en el proyecto no se modifican.

Si se establece este valor, existen las opciones siguientes:

  • Una definición de buildspec insertada. Para obtener más información, consulte la referencia de la sintaxis en Sintaxis de buildspec.

  • La ruta de un archivo buildspec alternativo relativa al valor de la variable de entorno CODEBUILD_SRC_DIR integrada o la ruta de 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). Si este valor no se proporciona o se establece en una cadena vacía, el código fuente debe contener un archivo buildspec en su directorio raíz. Para obtener más información sobre cómo agregar una ruta, consulte Nombre de archivo y ubicación de almacenamiento de buildspec.

nota

Como esta propiedad permite cambiar los comandos de compilación que se ejecutarán en el contenedor, debe tener en cuenta que una entidad principal de IAM con capacidad para llamar a esta API y establecer este parámetro puede anular la configuración predeterminada. Además, le recomendamos que utilice una ubicación para buildspec que sea de confianza, como un archivo en su repositorio de origen o un bucket de Amazon S3.

CombineArtifacts

Obligatorio: no

El valor booleano del parámetro CombineArtifacts combina todos los artefactos de compilación de una compilación por lotes en un único archivo de artefactos para la acción de compilación.

Para utilizar esta opción, el parámetro BatchEnabled debe estar activado.

EnvironmentVariables

Obligatorio: no

El valor de este parámetro se utiliza para establecer variables de entorno para la acción de CodeBuild de la canalización. El valor del parámetro EnvironmentVariables toma la forma de una matriz JSON de objetos de variables de entorno. Consulte el parámetro de ejemplo en Declaración de acción (CodeBuild ejemplo).

Cada objeto tiene tres partes, todas las cuales son cadenas:

  • name: el nombre o la clave de la variable de entorno.

  • value: el valor de la variable de entorno. Al usar el SECRETS_MANAGER tipo PARAMETER_STORE o, este valor debe ser el nombre de un parámetro que ya haya almacenado en el almacén de parámetros de AWS Systems Manager o un secreto que ya haya almacenado en AWS Secrets Manager, respectivamente.

    nota

    No recomendamos encarecidamente el uso de variables de entorno para almacenar valores confidenciales, especialmente AWS credenciales. Cuando usas la CodeBuild consola o la AWS CLI, las variables de entorno se muestran en texto sin formato. Para valores confidenciales, se recomienda utilizar el tipo SECRETS_MANAGERen su lugar.

  • type: (opcional) el tipo de la variable de entorno. Los valores válidos son PARAMETER_STORE, SECRETS_MANAGER o PLAINTEXT. Si no se especifica, toma el valor predeterminado PLAINTEXT.

nota

Al introducir y type para la name configuración de las variables de entorno, especialmente si la variable de entorno contiene la sintaxis de las variables de CodePipeline salida, no supere el límite de 1000 caracteres para el campo de valores de la configuración. value Cuando se supera este límite, se devuelve un error de validación.

Para obtener más información, consulte la referencia EnvironmentVariable de la AWS CodeBuild API. Para ver un ejemplo de CodeBuild acción con una variable de entorno que se resuelve en el nombre de la GitHub sucursal, consultaEjemplo: usa una BranchName variable con variables de CodeBuild entorno.

ServiceRoleArnOverride

Obligatorio: no

Un ARN de rol de IAM que se CodeBuild utiliza como rol de servicio para las compilaciones activadas por esta acción y anula el rol de servicio predeterminado configurado en el proyecto. CodeBuild Cuando está ausente, el CodeBuild proyecto usa su rol de servicio predeterminado.

El rol especificado debe tener una política de confianza que permita al codebuild.amazonaws.com servicio asumirlo. Tanto la identidad utilizada para crear o actualizar la canalización como la función de servicio de canalización deben tener iam:PassRole permiso para la función especificada. Para ver una política de ejemplo, consulte Permisos de rol de servicio: CodeBuild acción.

Como práctica recomendada de seguridad, cuando un CodeBuild proyecto se comparte entre varias canalizaciones, recomendamos especificar un rol específico para cada canalización a fin de seguir el principio de mínimo privilegio. En el caso de las canalizaciones que utilizan acciones de CodeConnections origen, consulta un Añade CodeBuild GitClone permisos para las conexiones a Bitbucket, Enterprise Server o GitHub GitHub GitLab.com ejemplo de cómo determinar el alcance de los permisos de conexión del rol a un repositorio específico.

nota

El rol debe estar en la misma AWS cuenta que el CodeBuild proyecto.

Artefactos de entrada

  • Número de artefactos: 1 to 5

  • Descripción: CodeBuild busca el archivo buildspec y ejecuta los comandos buildspec desde el directorio del artefacto fuente principal. Cuando se especifica una sola fuente de entrada o cuando se especifica más de una fuente de entrada para la CodeBuild acción, el artefacto único, o el artefacto principal en el caso de varias fuentes de entrada, se debe configurar mediante el parámetro de configuración de acción en. PrimarySource CodePipeline

    Cada artefacto de entrada se extrae en su propio directorio, cuyas ubicaciones se almacenan en variables de entorno. El directorio del artefacto de origen principal está disponible con $CODEBUILD_SRC_DIR. Los directorios del resto de artefactos de entrada están disponibles con $CODEBUILD_SRC_DIR_yourInputArtifactName.

    nota

    El artefacto configurado en tu CodeBuild proyecto se convierte en el artefacto de entrada utilizado por la CodeBuild acción de tu canalización.

Artefactos de salida

  • Número de artefactos: 0 to 5

  • Descripción: Se pueden usar para que los artefactos definidos en el archivo CodeBuild buildspec estén disponibles para las acciones posteriores del proceso. Cuando solo se define un artefacto de salida, este artefacto se puede definir directamente en la sección artifacts del archivo buildspec. Cuando se especifica más de un artefacto de salida, todos los artefactos a los que se hace referencia deben definirse como artefactos secundarios en el archivo buildspec. Los nombres de los artefactos de salida CodePipeline deben coincidir con los identificadores de artefactos del archivo buildspec.

    nota

    El artefacto configurado en tu CodeBuild proyecto se convierte en el artefacto de CodePipeline entrada de tu acción en canalización.

    Si se selecciona el parámetro CombineArtifacts para compilaciones por lotes, la ubicación del artefacto de salida contiene los artefactos combinados de varias compilaciones que se ejecutaron en la misma ejecución.

Variables de salida

Esta acción producirá como variables todas las variables de entorno que se exportaron como parte de la compilación. Para obtener más información sobre cómo exportar variables de entorno, consulta la EnvironmentVariable Guía de AWS CodeBuild API.

Para obtener más información sobre el uso de variables de CodeBuild entorno en CodePipeline, consulte los ejemplos deCodeBuild variables de salida de la acción. Para obtener una lista de las variables de entorno que puede usar CodeBuild, consulte Variables de entorno en entornos de construcción en la Guía del AWS CodeBuild usuario.

Permisos de rol de servicio: CodeBuild acción

Para obtener CodeBuild asistencia, añada lo siguiente a su declaración de política:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "codebuild:BatchGetBuilds", "codebuild:StartBuild", "codebuild:BatchGetBuildBatches", "codebuild:StartBuildBatch" ], "Resource": [ "arn:aws:codebuild:*:111122223333:project/[[ProjectName]]" ], "Effect": "Allow" } ] }

Si usas el ServiceRoleArnOverride parámetro, agrega el siguiente iam:PassRole permiso CodePipeline para poder transferir el rol a CodeBuild:

{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/your-codebuild-override-role", "Condition": { "StringEquals": { "iam:PassedToService": "codebuild.amazonaws.com" } } }

Declaración de acción (CodeBuild ejemplo)

YAML
Name: Build Actions: - Name: PackageExport ActionTypeId: Category: Build Owner: AWS Provider: CodeBuild Version: '1' RunOrder: 1 Configuration: BatchEnabled: 'true' CombineArtifacts: 'true' ProjectName: my-build-project PrimarySource: MyApplicationSource1 EnvironmentVariables: '[{"name":"TEST_VARIABLE","value":"TEST_VALUE","type":"PLAINTEXT"},{"name":"ParamStoreTest","value":"PARAMETER_NAME","type":"PARAMETER_STORE"}]' ServiceRoleArnOverride: 'arn:aws:iam::111122223333:role/my-scoped-codebuild-role' OutputArtifacts: - Name: MyPipeline-BuildArtifact InputArtifacts: - Name: MyApplicationSource1 - Name: MyApplicationSource2
JSON
{ "Name": "Build", "Actions": [ { "Name": "PackageExport", "ActionTypeId": { "Category": "Build", "Owner": "AWS", "Provider": "CodeBuild", "Version": "1" }, "RunOrder": 1, "Configuration": { "BatchEnabled": "true", "CombineArtifacts": "true", "ProjectName": "my-build-project", "PrimarySource": "MyApplicationSource1", "EnvironmentVariables": "[{\"name\":\"TEST_VARIABLE\",\"value\":\"TEST_VALUE\",\"type\":\"PLAINTEXT\"},{\"name\":\"ParamStoreTest\",\"value\":\"PARAMETER_NAME\",\"type\":\"PARAMETER_STORE\"}]", "ServiceRoleArnOverride": "arn:aws:iam::111122223333:role/my-scoped-codebuild-role" }, "OutputArtifacts": [ { "Name": "MyPipeline-BuildArtifact" } ], "InputArtifacts": [ { "Name": "MyApplicationSource1" }, { "Name": "MyApplicationSource2" } ] } ] }

Los recursos relacionados siguientes pueden serle de ayuda cuando trabaje con esta acción.