

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.

# Ejemplo de varios orígenes de entrada y varios artefactos de salida
<a name="sample-multi-in-out"></a>

Puede crear un proyecto de compilación de AWS CodeBuild con varios orígenes de entrada y varios conjuntos de artefactos de salida. En este ejemplo se muestra cómo configurar un proyecto de compilación que: 
+ Utiliza varios orígenes y repositorios de distintos tipos.
+ Publica los artefactos de compilación en varios buckets de S3 en una sola compilación.

 En el ejemplo siguiente, se crea un proyecto de compilación que se utiliza para ejecutar una compilación. El ejemplo usa el archivo buildspec del proyecto de compilación para mostrar cómo incorporar más de un origen y crear más de un conjunto de artefactos. 

Para obtener información sobre cómo crear una canalización que utilice varias entradas de origen en CodeBuild para crear varios artefactos de salida, consulte [Ejemplo de una CodePipeline/CodeBuild integración con múltiples fuentes de entrada y artefactos de salida](sample-codepipeline.md#sample-pipeline-multi-input-output).

**Topics**
+ [Creación de un proyecto de compilación con varias entradas y salidas](sample-multi-in-out-create.md)
+ [Creación de un proyecto de compilación sin un origen](no-source.md)

# 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"
      },
   ]
}
```

# Creación de un proyecto de compilación sin un origen
<a name="no-source"></a>

 Para configurar un proyecto de CodeBuild, puede elegir el tipo de origen al configurar el origen. Cuando el tipo de origen es **NO\$1SOURCE**, no puede especificar un archivo de especificación de compilación porque su proyecto no tiene un origen. En su lugar, debe especificar una cadena de especificación de compilación con formato YAML en el atributo `buildspec` de la entrada con formato JSON al comando de la CLI `create-project`. Podría ser como el siguiente: 

```
{
  "name": "project-name",
  "source": {
    "type": "NO_SOURCE",
    "buildspec": "version: 0.2\n\nphases:\n  build:\n    commands:\n      - command"
   },
  "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"
}
```

Para obtener más información, consulte [Crear un proyecto de compilación (AWS CLI)](create-project.md#create-project-cli).