

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Várias fontes de entrada e exemplos de artefatos de saída
<a name="sample-multi-in-out"></a>

Você pode criar um projeto de compilação do AWS CodeBuild com mais de uma origem de entrada e mais de um conjunto de artefatos de saída. Este exemplo mostra como configurar um projeto de compilação que: 
+ Usa várias origens e repositórios de diferentes tipos.
+ Publica artefatos de compilação em vários buckets do S3 em uma única compilação.

 No exemplo a seguir, você cria um projeto de compilação e o utiliza para executar uma compilação. O exemplo usa o arquivo buildspec do projeto de compilação para mostrar como incorporar mais de uma origem e criar mais de um conjunto de artefatos. 

Para saber como criar um pipeline que use várias entradas de origem para o CodeBuild a fim de criar vários artefatos de saída, consulte [Amostra de uma CodePipeline/CodeBuild integração com várias fontes de entrada e artefatos de saída](sample-codepipeline.md#sample-pipeline-multi-input-output).

**Topics**
+ [Criar um projeto de compilação com várias entradas e saídas](sample-multi-in-out-create.md)
+ [Criar um projeto de compilação sem uma origem](no-source.md)

# Criar um projeto de compilação com várias entradas e saídas
<a name="sample-multi-in-out-create"></a>

Use o procedimento a seguir para criar um projeto de compilação com várias entradas e saídas.

**Para criar um projeto de compilação com várias entradas e saídas**

1.  Faça upload das origens em um ou mais buckets do S3, repositórios do CodeCommit, do GitHub, do GitHub Enterprise Server ou do Bitbucket. 

1.  Escolha qual será a origem principal. Essa é a origem em que o CodeBuild procura e executa o arquivo buildspec. 

1.  Crie um projeto de compilação. Para obter mais informações, consulte [Criar um projeto de compilação no AWS CodeBuild](create-project.md). 

1.  Crie o projeto de compilação, execute a compilação e obtenha informações sobre ela. 

1.  Se você usar a AWS CLI para criar o projeto de compilação, a entrada em formato JSON para o comando `create-project` poderá ser semelhante a: 

   ```
   {
     "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"
   }
   ```

 Sua origem principal é definida abaixo do atributo `source`. Todas as outras origens são chamadas de secundárias e aparecem abaixo de `secondarySources`. Todas as origens secundárias são instaladas em seu próprio diretório. Esse diretório é armazenado na variável de ambiente interna `CODEBUILD_SRC_DIR_sourceIdentifer`. Para obter mais informações, consulte [Variáveis de ambiente em ambientes de compilação](build-env-ref-env-vars.md). 

 O atributo `secondaryArtifacts` contém uma lista de definições de artefato. Esses artefatos usam o bloco `secondary-artifacts` do arquivo buildspec que fica aninhado dentro do bloco `artifacts`. 

 Os artefatos secundários no arquivo buildspec têm a mesma estrutura que os artefatos e são separados pelo seu respectivo identificador de artefato. 

**nota**  
 Na [API do CodeBuild](https://docs.aws.amazon.com/codebuild/latest/APIReference/), o `artifactIdentifier` em um artefato secundário é um atributo obrigatório em `CreateProject` e `UpdateProject`. Ele deve ser usado para fazer referência a um artefato secundário. 

 Com a entrada em formato JSON anterior, o arquivo buildspec do projeto deve ter esta aparência: 

```
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
```

 Você pode substituir a versão da origem principal usando a API com o atributo `sourceVersion` em `StartBuild`. Para substituir uma ou mais versões de origem secundária, use o atributo `secondarySourceVersionOverride`. 

 A entrada em formato JSON para o comando `start-build` na AWS CLI deve ter esta aparência: 

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

# Criar um projeto de compilação sem uma origem
<a name="no-source"></a>

 Para configurar um projeto do CodeBuild, escolha o tipo de origem **NO\$1SOURCE** ao configurar a origem. Quando o tipo de origem for **NO\$1SOURCE**, você não poderá especificar um arquivo buildspec porque o projeto não terá uma origem. Em vez disso, você deverá especificar uma string buildspec formatada em YAML no atributo `buildspec` da entrada formatada em JSON para o comando `create-project` da CLI. A aparência poderá ser semelhante a esta: 

```
{
  "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 obter mais informações, consulte [Crie um projeto de compilação (AWS CLI)](create-project.md#create-project-cli).