CodePipeline muestras para CodeBuild - 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.

CodePipeline muestras para CodeBuild

AWS CodePipeline integración con CodeBuild y compilaciones por lotes

AWS CodeBuild ahora admite compilaciones por lotes. En este ejemplo, se muestra cómo AWS CodePipeline crear un proyecto de compilación que utilice compilaciones por lotes.

Puedes usar un archivo con formato JSON que defina la estructura de tu canalización y luego usarlo con él AWS CLI para crear la canalización. Para obtener más información, consulte Referencia de la estructura de canalización de AWS CodePipeline en la Guía del usuario de AWS CodePipeline .

Compilación por lotes con artefactos individuales

Utilice el archivo JSON siguiente como ejemplo de una estructura de canalización que crea una compilación por lotes con artefactos individuales. Para habilitar las compilaciones por lotes CodePipeline, defina el BatchEnabled parámetro del objeto enconfiguration. true

{ "pipeline": { "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source1", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source1" } ], "configuration": { "S3Bucket": "<my-input-bucket-name>", "S3ObjectKey": "my-source-code-file-name.zip" }, "runOrder": 1 }, { "inputArtifacts": [], "name": "Source2", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source2" } ], "configuration": { "S3Bucket": "<my-other-input-bucket-name>", "S3ObjectKey": "my-other-source-code-file-name.zip" }, "runOrder": 1 } ] }, { "name": "Build", "actions": [ { "inputArtifacts": [ { "name": "source1" }, { "name": "source2" } ], "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "version": "1", "provider": "CodeBuild" }, "outputArtifacts": [ { "name": "build1" }, { "name": "build1_artifact1" }, { "name": "build1_artifact2" }, { "name": "build2_artifact1" }, { "name": "build2_artifact2" } ], "configuration": { "ProjectName": "my-build-project-name", "PrimarySource": "source1", "BatchEnabled": "true" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "<AWS-CodePipeline-internal-bucket-name>" }, "name": "my-pipeline-name", "version": 1 } }

El siguiente es un ejemplo de un archivo CodeBuild buildspec que funcionará con esta configuración de canalización.

version: 0.2 batch: build-list: - identifier: build1 env: compute-type: BUILD_GENERAL1_SMALL - identifier: build2 env: compute-type: BUILD_GENERAL1_MEDIUM phases: build: commands: - echo 'file' > output_file artifacts: files: - output_file secondary-artifacts: artifact1: files: - output_file artifact2: files: - output_file

Los nombres de los artefactos de salida especificados en el archivo JSON de la canalización deben coincidir con el identificador de las compilaciones y los artefactos definidos en el archivo de especificación de la compilación. La sintaxis es buildIdentifier para los artefactos principales y buildIdentifier_artifactIdentifier para los artefactos secundarios.

Por ejemplo, para el nombre del artefacto de salidabuild1, CodeBuild cargará el artefacto principal de en la ubicación debuild1. build1 Para el nombre de salidabuild1_artifact1, CodeBuild cargará el artefacto secundario artifact1 de build1 a la ubicación debuild1_artifact1, y así sucesivamente. Si solo se especifica una ubicación de salida, el nombre debe ser únicamente buildIdentifier.

Una vez creado el archivo JSON, puede crear la canalización. Utilice AWS CLI para ejecutar el comando create-pipeline y pasar el archivo al parámetro. --cli-input-json Para obtener más información, consulte Creación de una canalización (CLI) en la Guía del usuario de AWS CodePipeline .

Compilación por lotes con artefactos combinados

Utilice el archivo JSON siguiente como ejemplo de una estructura de canalización que crea una compilación por lotes con artefactos combinados. Para habilitar las compilaciones por lotes CodePipeline, defina el BatchEnabled parámetro del configuration objeto en. true Para combinar los artefactos de compilación en la misma ubicación, defina el parámetro CombineArtifacts del objeto configuration como true.

{ "pipeline": { "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source1", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source1" } ], "configuration": { "S3Bucket": "<my-input-bucket-name>", "S3ObjectKey": "my-source-code-file-name.zip" }, "runOrder": 1 }, { "inputArtifacts": [], "name": "Source2", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source2" } ], "configuration": { "S3Bucket": "<my-other-input-bucket-name>", "S3ObjectKey": "my-other-source-code-file-name.zip" }, "runOrder": 1 } ] }, { "name": "Build", "actions": [ { "inputArtifacts": [ { "name": "source1" }, { "name": "source2" } ], "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "version": "1", "provider": "CodeBuild" }, "outputArtifacts": [ { "name": "output1 " } ], "configuration": { "ProjectName": "my-build-project-name", "PrimarySource": "source1", "BatchEnabled": "true", "CombineArtifacts": "true" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "<AWS-CodePipeline-internal-bucket-name>" }, "name": "my-pipeline-name", "version": 1 } }

El siguiente es un ejemplo de un archivo CodeBuild buildspec que funcionará con esta configuración de canalización.

version: 0.2 batch: build-list: - identifier: build1 env: compute-type: BUILD_GENERAL1_SMALL - identifier: build2 env: compute-type: BUILD_GENERAL1_MEDIUM phases: build: commands: - echo 'file' > output_file artifacts: files: - output_file

Si los artefactos combinados están habilitados para la compilación por lotes, solo se permite una salida. CodeBuild combinará los artefactos principales de todas las compilaciones en un único archivo ZIP.

Una vez creado el archivo JSON, puede crear la canalización. Utilice el AWS CLI para ejecutar el comando create-pipeline y pasar el archivo al --cli-input-json parámetro. Para obtener más información, consulte Creación de una canalización (CLI) en la Guía del usuario de AWS CodePipeline .

AWS CodePipeline ejemplo de integración con CodeBuild múltiples fuentes de entrada y artefactos de salida

Un AWS CodeBuild proyecto puede tomar más de una fuente de entrada. También puede crear más de un artefacto de salida. En este ejemplo, se muestra cómo AWS CodePipeline crear un proyecto de compilación que utilice varias fuentes de entrada para crear varios artefactos de salida. Para obtener más información, consulte Ejemplo de varios orígenes de entrada y varios artefactos de salida.

Puedes usar un archivo con formato JSON que defina la estructura de tu canalización y luego usarlo con él AWS CLI para crear la canalización. Utilice el archivo JSON siguiente como ejemplo de una estructura de canalización que crea una compilación con más de un origen de entrada y más de un artefacto de salida. Más adelante en este ejemplo podrá ver cómo dicho archivo especifica las distintas entradas y salidas. Para obtener más información, consulta la referencia sobre la estructura de CodePipeline canalización en la Guía del AWS CodePipeline usuario.

{ "pipeline": { "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source1", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source1" } ], "configuration": { "S3Bucket": "my-input-bucket-name", "S3ObjectKey": "my-source-code-file-name.zip" }, "runOrder": 1 }, { "inputArtifacts": [], "name": "Source2", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "S3" }, "outputArtifacts": [ { "name": "source2" } ], "configuration": { "S3Bucket": "my-other-input-bucket-name", "S3ObjectKey": "my-other-source-code-file-name.zip" }, "runOrder": 1 } ] }, { "name": "Build", "actions": [ { "inputArtifacts": [ { "name": "source1" }, { "name": "source2" } ], "name": "Build", "actionTypeId": { "category": "Build", "owner": "AWS", "version": "1", "provider": "AWS CodeBuild" }, "outputArtifacts": [ { "name": "artifact1" }, { "name": "artifact2" } ], "configuration": { "ProjectName": "my-build-project-name", "PrimarySource": "source1" }, "runOrder": 1 } ] } ], "artifactStore": { "type": "S3", "location": "AWS-CodePipeline-internal-bucket-name" }, "name": "my-pipeline-name", "version": 1 } }

En este archivo JSON:

  • Debe designar uno de los orígenes de entrada como PrimarySource. Esta fuente es el directorio en el que CodeBuild busca y ejecuta el archivo buildspec. La palabra clave PrimarySource se usa para especificar la fuente principal en la configuration sección de la CodeBuild etapa del archivo JSON.

  • Cada origen de entrada se instala en su propio directorio. Este directorio se almacena en la variable de entorno integrado $CODEBUILD_SRC_DIR para el origen principal y $CODEBUILD_SRC_DIR_yourInputArtifactName para todos los demás orígenes. Para la canalización de este ejemplo, los dos directorios de origen de entrada son $CODEBUILD_SRC_DIR y $CODEBUILD_SRC_DIR_source2. Para obtener más información, consulte Variables de entorno en los entornos de compilación.

  • Los nombres de los artefactos de salida especificados en el archivo JSON de la canalización deben coincidir con los de los artefactos secundarios definidos en el archivo buildspec. Esta canalización utiliza el archivo buildspec siguiente. Para obtener más información, consulte Sintaxis de buildspec.

    version: 0.2 phases: build: commands: - touch source1_file - cd $CODEBUILD_SRC_DIR_source2 - touch source2_file artifacts: files: - '**/*' secondary-artifacts: artifact1: base-directory: $CODEBUILD_SRC_DIR files: - source1_file artifact2: base-directory: $CODEBUILD_SRC_DIR_source2 files: - source2_file

Una vez creado el archivo JSON, puede crear la canalización. Utilice AWS CLI para ejecutar el comando create-pipeline y pasar el archivo al --cli-input-json parámetro. Para obtener más información, consulte Creación de una canalización (CLI) en la Guía del usuario de AWS CodePipeline .