En esta sección se describen ejemplos de integraciones entre CodePipeline y CodeBuild.
Muestra | Descripción |
---|---|
Ejemplos de integraciones y compilaciones por lotes de CodePipeline/CodeBuild |
En estos ejemplos se muestra cómo usar AWS CodePipeline para crear un proyecto de compilación que utiliza compilaciones por lotes. |
En este ejemplo, se muestra cómo se utiliza AWS CodePipeline para crear un proyecto de compilación que utiliza varios orígenes de entrada a fin de crear varios artefactos de salida. |
Ejemplos de integraciones y compilaciones por lotes de CodePipeline/CodeBuild
AWS CodeBuild admite las compilaciones por lotes. En los siguientes ejemplos se muestra cómo utilizar AWS CodePipeline para crear un proyecto de compilación que utilice compilaciones por lotes.
Puede utilizar un archivo con formato JSON que defina la estructura de la canalización y, después, usarlo con la 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 permitir las compilaciones por lotes en CodePipeline, defina el parámetro BatchEnabled
del objeto configuration
en 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
}
}
A continuación se muestra un ejemplo de un archivo de especificaciones de compilación de CodeBuild 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 salida build1
, CodeBuild cargará el artefacto principal de build1
en la ubicación de build1
. Para el nombre de salida build1_artifact1
, CodeBuild cargará el artefacto secundario artifact1
de build1
en la ubicación de build1_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 la AWS CLI para ejecutar el comando create-pipeline y transferir 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 permitir las compilaciones por lotes en CodePipeline, defina el parámetro BatchEnabled
del objeto configuration
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
}
}
A continuación se muestra un ejemplo de un archivo de especificaciones de compilación de CodeBuild 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 activados para la compilación por lotes, solo se permite una salida. CodeBuild combinará los artefactos principales de todas las compilaciones en un solo archivo ZIP.
Una vez creado el archivo JSON, puede crear la canalización. Utilice la AWS CLI para ejecutar el comando create-pipeline y transferir 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.
Ejemplo de integración de CodePipeline/CodeBuild con varios orígenes de entrada y artefactos de salida
Un proyecto de AWS CodeBuild puede aceptar varios orígenes de entrada. También puede crear más de un artefacto de salida. En este ejemplo, se muestra cómo se utiliza AWS CodePipeline para crear un proyecto de compilación que utiliza varios orígenes de entrada a fin de crear varios artefactos de salida. Para obtener más información, consulte Ejemplo de varios orígenes de entrada y varios artefactos de salida.
Puede utilizar un archivo con formato JSON que defina la estructura de la canalización y, después, usarlo con la 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, consulte Referencia de la estructura de la canalización de CodePipeline en la Guía del usuario de AWS CodePipeline.
{
"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 el archivo de especificaciones de compilación y lo ejecuta. La palabra clavePrimarySource
se utiliza para especificar el origen principal en la secciónconfiguration
de la fase CodeBuild en el 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 la AWS CLI para ejecutar el comando create-pipeline y transferir 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.