

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.

# Creación de un proyecto de compilación con varias entradas y salidas
<a name="sample-multi-in-out-create"></a>

Utilice el siguiente procedimiento para crear un proyecto de compilación con varias entradas y salidas.

**Para crear un proyecto de compilación con varias entradas y salidas**

1.  Cargue las fuentes en uno o más buckets de S3 o en uno o más repositorios de CodeCommit, GitHub, GitHub Enterprise Server o Bitbucket. 

1.  Elija cuál es el origen principal. Esta es la fuente donde CodeBuild busca el archivo de especificaciones de compilación y lo ejecuta. 

1.  Cree un proyecto de compilación. Para obtener más información, consulte [Creación de un proyecto de compilación en AWS CodeBuild](create-project.md). 

1.  Cree el proyecto de compilación, ejecute la compilación y obtenga información sobre esta. 

1.  Si usa la AWS CLI para crear el proyecto de compilación, es posible que el resultado con formato JSON del comando `create-project` tenga un aspecto similar al siguiente: 

   ```
   {
     "name": "sample-project",
     "source": {
       "type": "S3",
       "location": "<bucket/sample.zip>"
     },
     "secondarySources": [
       {
         "type": "CODECOMMIT",
         "location": "https://git-codecommit.us-west-2.amazonaws.com/v1/repos/repo",
         "sourceIdentifier": "source1"
       },
       {
         "type": "GITHUB",
         "location": "https://github.com/awslabs/aws-codebuild-jenkins-plugin",
         "sourceIdentifier": "source2"
       }
     ],
     "secondaryArtifacts": [ss
       {
         "type": "S3",
         "location": "<output-bucket>",
         "artifactIdentifier": "artifact1"
       },
       {
         "type": "S3",
         "location": "<other-output-bucket>",
         "artifactIdentifier": "artifact2"
       }
     ],
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "aws/codebuild/standard:5.0",
       "computeType": "BUILD_GENERAL1_SMALL"
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```

 El origen principal se define en el atributo `source`. El resto de orígenes se denominan secundarios y aparecen en `secondarySources`. Todos los orígenes secundarios se instalan en su propio directorio. Este directorio se almacena en la variable de entorno integrada `CODEBUILD_SRC_DIR_sourceIdentifer`. Para obtener más información, consulte [Variables de entorno en los entornos de compilación](build-env-ref-env-vars.md). 

 El atributo `secondaryArtifacts` contiene una lista de definiciones de artefacto. Estos artefactos usan el bloque `secondary-artifacts` del archivo buildspec anidado en el bloque `artifacts`. 

 Los artefactos secundarios del archivo buildspec tienen la misma estructura que el resto de artefactos y se separan mediante el identificador correspondiente. 

**nota**  
 En la [API de CodeBuild](https://docs.aws.amazon.com/codebuild/latest/APIReference/), `artifactIdentifier` de un artefacto secundario es un atributo obligatorio en `CreateProject` y `UpdateProject`. Debe utilizarse para hacer referencia a un artefacto secundario. 

 Si se utiliza la entrada con formato JSON anterior, el archivo buildspec del proyecto puede tener este aspecto: 

```
version: 0.2

phases:
  install:
    runtime-versions:
      java: openjdk11
  build:
    commands:
      - cd $CODEBUILD_SRC_DIR_source1
      - touch file1
      - cd $CODEBUILD_SRC_DIR_source2
      - touch file2

artifacts:
  files:
    - '**.*'
  secondary-artifacts:
    artifact1:
      base-directory: $CODEBUILD_SRC_DIR_source1
      files:
        - file1
    artifact2:
      base-directory: $CODEBUILD_SRC_DIR_source2
      files:
        - file2
```

 Puede reemplazar la versión del origen principal mediante la API con el atributo `sourceVersion` en `StartBuild`. Para reemplazar una o varias versiones de origen secundario, utilice el atributo `secondarySourceVersionOverride`. 

 Es posible que la entrada con formato JSON del comando `start-build` de la AWS CLI tenga este aspecto: 

```
{
   "projectName": "sample-project",
   "secondarySourcesVersionOverride": [
      {
        "sourceIdentifier": "source1",
        "sourceVersion": "codecommit-branch"
      },
      {
        "sourceIdentifier": "source2",
        "sourceVersion": "github-branch"
      },
   ]
}
```