

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 sus fuentes en uno o más repositorios de S3 CodeCommit GitHub, GitHub Enterprise Server o Bitbucket. 

1.  Elija cuál es el origen principal. Esta es la fuente en la que CodeBuild busca y ejecuta tu archivo buildspec. 

1.  Cree un proyecto de compilación. Para obtener más información, consulte [Cree un proyecto de construcció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 utilizas el AWS CLI para crear el proyecto de compilación, la JSON-formatted entrada del `create-project` comando podría tener 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/), el valor `artifactIdentifier` de un artefacto secundario es un atributo obligatorio en `CreateProject` y `UpdateProject`. Debe utilizarse para hacer referencia a un artefacto secundario. 

 Con la JSON-formatted entrada anterior, el archivo buildspec del proyecto podría tener el siguiente 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`. 

 La JSON-formatted entrada del `start-build` comando en el AWS CLI podría tener este aspecto: 

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