

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.

# Ejecución de compilaciones en lotes
<a name="batch-build"></a>

Se puede utilizar AWS CodeBuild para ejecutar compilaciones simultáneas y coordinadas de un proyecto con compilaciones por lotes. 

**Topics**
+ [

## Rol de seguridad
](#batch_security_role)
+ [

## Tipos de compilación por lotes
](#batch_build_types)
+ [

## Modo de informe por lotes
](#batch-report-mode)
+ [

## Más información
](#batch_more_info)

## Rol de seguridad
<a name="batch_security_role"></a>

Las compilaciones por lotes introducen un nuevo rol de seguridad en la configuración por lotes. Este nuevo rol es obligatorio`StartBuild`, `StopBuild` ya que CodeBuild debes poder ejecutar las compilaciones y `RetryBuild` acciones en tu nombre para ejecutar compilaciones como parte de un lote. Los clientes deberían utilizar un nuevo rol, y no el mismo rol que utilizan para su compilación, por dos motivos:
+ Al asignar los permisos de `StartBuild`, `StopBuild` y `RetryBuild` en el rol de compilación, una sola compilación podría iniciar más compilaciones a través de la especificación de compilación.
+ CodeBuild Las compilaciones por lotes proporcionan restricciones que restringen la cantidad de compilaciones y tipos de procesamiento que se pueden usar para las compilaciones del lote. Si la función de compilación tiene estos permisos, es posible que las propias compilaciones puedan eludir estas restricciones.

## Tipos de compilación por lotes
<a name="batch_build_types"></a>

CodeBuild admite los siguientes tipos de compilación por lotes:

**Topics**
+ [

### Grafo de compilación
](#batch_build_graph)
+ [

### Lista de compilación
](#batch_build_list)
+ [

### Matriz de compilación
](#batch_build_matrix)
+ [

### Distribución ramificada de compilación
](#batch_build_fanout)

### Grafo de compilación
<a name="batch_build_graph"></a>

Un grafo de compilación define un conjunto de tareas que dependen de otras tareas del lote. 

En el siguiente ejemplo, se define un grafo de compilación que crea una cadena de dependencias. 

```
batch:
  fast-fail: false
  build-graph:
    - identifier: build1
      env:
        variables:
          BUILD_ID: build1
      ignore-failure: false
    - identifier: build2
      buildspec: build2.yml
      env:
        variables:
          BUILD_ID: build2
      depend-on:
        - build1
    - identifier: build3
      env:
        variables:
          BUILD_ID: build3
      depend-on:
        - build2
    - identifier: build4
      env:
        compute-type: ARM_LAMBDA_1GB
    - identifier: build5
      env:
        fleet: fleet_name
```

En este ejemplo:
+ `build1` se ejecuta primero porque no tiene dependencias.
+ `build2` depende de `build1`, por lo que `build2` se ejecuta después de completar `build1`.
+ `build3` depende de `build2`, por lo que `build3` se ejecuta después de completar `build2`.

Para obtener más información acerca de la sintaxis del grafo de especificación de compilación, consulte [`batch/build-graph`](batch-build-buildspec.md#build-spec.batch.build-graph).

### Lista de compilación
<a name="batch_build_list"></a>

Una lista de compilación define una serie de tareas que se ejecutan en paralelo. 

En el ejemplo siguiente se define una lista de compilación. Las compilaciones `build1` y `build2` se ejecutarán en paralelo.

```
batch:
  fast-fail: false
  build-list:
    - identifier: build1
      env:
        variables:
          BUILD_ID: build1
      ignore-failure: false
    - identifier: build2
      buildspec: build2.yml
      env:
        variables:
          BUILD_ID: build2
      ignore-failure: true
    - identifier: build3
      env:
        compute-type: ARM_LAMBDA_1GB
    - identifier: build4
      env:
        fleet: fleet_name
    - identifier: build5
      env:
        compute-type: GENERAL_LINUX_XLAGRE
```

Para obtener más información acerca de la sintaxis de la lista de especificación de compilación, consulte [`batch/build-list`](batch-build-buildspec.md#build-spec.batch.build-list).

### Matriz de compilación
<a name="batch_build_matrix"></a>

Una matriz de compilación define las tareas con diferentes configuraciones que se ejecutan en paralelo. CodeBuild crea una compilación independiente para cada combinación de configuraciones posible. 

El ejemplo siguiente muestra una matriz de compilación con dos archivos de especificaciones de compilación y tres valores de una variable de entorno.

```
batch:
  build-matrix:
    static:
      ignore-failure: false
    dynamic:
      buildspec: 
        - matrix1.yml
        - matrix2.yml
      env:
        variables:
          MY_VAR:
            - VALUE1
            - VALUE2
            - VALUE3
```

En este ejemplo, CodeBuild crea seis compilaciones:
+ `matrix1.yml` por `$MY_VAR=VALUE1`
+ `matrix1.yml` por `$MY_VAR=VALUE2`
+ `matrix1.yml` por `$MY_VAR=VALUE3`
+ `matrix2.yml` por `$MY_VAR=VALUE1`
+ `matrix2.yml` por `$MY_VAR=VALUE2`
+ `matrix2.yml` por `$MY_VAR=VALUE3`

Cada compilación tendrá la configuración siguiente:
+ `ignore-failure` es `false`.
+ `env/type` es `LINUX_CONTAINER`.
+ `env/image` es `aws/codebuild/amazonlinux-x86_64-standard:4.0`.
+ `env/privileged-mode` es `true`.

Estas compilaciones se ejecutan en paralelo.

Para obtener más información acerca de la sintaxis de la matriz de especificación de compilación, consulte [`batch/build-matrix`](batch-build-buildspec.md#build-spec.batch.build-matrix).

### Distribución ramificada de compilación
<a name="batch_build_fanout"></a>

Una distribución ramificada de compilación define una tarea que se dividirá en varias compilaciones en el lote. Esto se puede utilizar para ejecutar pruebas en paralelo. CodeBuild crea una compilación independiente para cada fragmento de casos de prueba en función del valor establecido en el `parallelism` campo.

En el siguiente ejemplo, se define una distribución ramificada de compilación que crea cinco compilaciones que se ejecutan en paralelo.

```
version: 0.2

batch:
   fast-fail: false 
   build-fanout:
     parallelism: 5
     ignore-failure: false

phases:
  install:
    commands:
      - npm install
   build:
    commands:
      - mkdir -p test-results
      - cd test-results
      - |
        codebuild-tests-run \
         --test-command 'npx jest --runInBand --coverage' \
         --files-search "codebuild-glob-search '**/test/**/*.test.js'" \
         --sharding-strategy 'equal-distribution'
```

En este ejemplo, suponiendo que hay 100 pruebas que deben ejecutarse, CodeBuild crea cinco compilaciones, cada una de las cuales ejecuta 20 pruebas en paralelo.

Para obtener más información acerca de la sintaxis del grafo de especificación de compilación, consulte [`batch/build-fanout`](batch-build-buildspec.md#build-spec.batch.build-fanout).

## Modo de informe por lotes
<a name="batch-report-mode"></a>

Si el proveedor de origen de tu proyecto es Bitbucket o GitHub Enterprise y tu proyecto está configurado para informar de los estados de compilación al proveedor de origen, puedes seleccionar cómo quieres que se envíen los estados de compilación por lotes al proveedor de origen. GitHub Es posible seleccionar que los estados se envíen como un único informe de estado agregado para el lote o que se notifique el estado de cada compilación de lote por separado.

Para obtener más información, consulte los temas siguientes:
+ [Configuración por lotes (crear)](create-project.md#create-project-console-batch-config)
+ [Configuración por lotes (actualizar)](change-project.md#change-project-console-batch-config)

## Más información
<a name="batch_more_info"></a>

Para obtener más información, consulte los temas siguientes:
+ [Referencia de especificaciones de compilación para compilación por lotes](batch-build-buildspec.md)
+ [Configuración de lotes](create-project.md#create-project-console-batch-config)
+ [Ejecutar una compilación por lotes (AWS CLI)](run-batch-build-cli.md)
+ [Detención de las compilaciones por lotes en AWS CodeBuild](stop-batch-build.md)