

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 다중 입력 소스 및 출력 아티팩트 샘플
<a name="sample-multi-in-out"></a>

입력 소스 1개 이상과 출력 결과물 세트 1개 이상을 사용해 AWS CodeBuild 빌드 프로젝트를 만들 수 있습니다. 이번 샘플은 아래와 같은 빌드 프로젝트를 설정하는 방법에 대한 내용입니다.
+ 유형에 따라 여러 가지 소스와 리포지토리를 사용합니다.
+ 단일 빌드에서 다수의 S3 버킷에 빌드 아티팩트를 게시합니다.

 다음 샘플에서는 빌드 프로젝트를 생성하여 빌드를 실행하는 데 사용합니다. 또한 빌드 프로젝트의 buildspec 파일을 사용해 소스 1개 이상을 포함시키고, 아티팩트 세트 1개 이상을 생성하는 방법에 대해서 설명합니다.

CodeBuild에 대한 다중 소스 입력을 사용해 다중 출력 아티팩트를 생성하는 파이프라인을 만드는 방법은 [CodePipeline/CodeBuild와 다중 입력 소스 및 출력 아티팩트 통합 샘플](sample-codepipeline.md#sample-pipeline-multi-input-output) 섹션을 참조하세요.

**Topics**
+ [여러 입력 및 출력으로 빌드 프로젝트 생성](sample-multi-in-out-create.md)
+ [소스 없이 빌드 프로젝트 생성](no-source.md)

# 여러 입력 및 출력으로 빌드 프로젝트 생성
<a name="sample-multi-in-out-create"></a>

다음 절차에 따라 여러 입력 및 출력이 있는 빌드 프로젝트를 생성합니다.

**여러 입력 및 출력으로 빌드 프로젝트를 생성하려면**

1.  소스를 1개 이상의 S3 버킷, CodeCommit, GitHub, GitHub Enterprise Server 또는 Bitbucket 리포지토리에 업로드합니다.

1.  기본 소스로 사용할 소스를 선택합니다. 기본 소스란 CodeBuild가 buildspec 파일을 찾아서 실행하는 소스를 말합니다.

1.  빌드 프로젝트를 생성합니다. 자세한 내용은 [에서 빌드 프로젝트 생성AWS CodeBuild](create-project.md) 섹션을 참조하세요.

1.  빌드 프로젝트를 생성하고, 빌드를 실행하고, 빌드에 대한 정보를 가져옵니다.

1.  AWS CLI를 사용하여 빌드 프로젝트를 생성하는 경우, `create-project` 명령에 JSON 형식으로 입력하면 다음과 같은 모습이 될 수 있습니다.

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

 기본 소스는 `source` 속성에서 정의됩니다. 그 밖에 다른 소스는 보조 소스라고 불리며, `secondarySources`에 표시됩니다. 보조 소스는 모두 자체 디렉터리에 설치됩니다. 이 디렉터리는 내장 환경 변수인 `CODEBUILD_SRC_DIR_sourceIdentifer`에 저장됩니다. 자세한 내용은 [빌드 환경의 환경 변수](build-env-ref-env-vars.md) 섹션을 참조하세요.

 `secondaryArtifacts` 속성에는 아티팩트 정의 목록이 포함됩니다. 이러한 아티팩트는 `secondary-artifacts` 블록 내에 중첩되는 buildspec 파일의 `artifacts` 블록을 사용합니다.

 buildspec 파일의 보조 아티팩트는 아티팩트와 동일한 구조를 가지고 있지만 아티팩트 식별자로 구분됩니다.

**참고**  
 [CodeBuild API](https://docs.aws.amazon.com/codebuild/latest/APIReference/)에서는 보조 아티팩트의 `artifactIdentifier`가 `CreateProject` 및 `UpdateProject`에서 반드시 필요한 속성입니다. 보조 아티팩트를 참조할 때 사용해야 합니다.

 앞서 얘기한 JSON 형식의 입력을 사용하면 프로젝트의 buildspec 파일은 다음과 같은 모습이 될 수 있습니다.

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

 기본 속성의 버전은 API를 사용해 `sourceVersion`의 `StartBuild` 속성에서 재정의할 수 있습니다. 보조 소스 버전을 1개 이상 재정의할 때는 `secondarySourceVersionOverride` 속성을 사용하십시오.

 `start-build`에서 AWS CLI 명령에 JSON 형식으로 입력하면 다음과 같은 모습이 될 수 있습니다.

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

# 소스 없이 빌드 프로젝트 생성
<a name="no-source"></a>

 소스를 구성할 때 **NO\$1SOURCE** 소스 유형을 선택하여 CodeBuild 프로젝트를 구성할 수 있습니다. 소스 유형이 **NO\$1SOURCE**일 경우, 프로젝트에 소스가 없으므로 buildspec 파일을 지정할 수 없습니다. 대신에 `buildspec` CLI 명령에 대한 JSON 형식 입력의 `create-project` 속성 내 YAML 형식 buildspec 문자열 지정이 필요합니다. 값이 다음과 같을 것입니다.

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

자세한 내용은 [빌드 프로젝트 생성(AWS CLI)](create-project.md#create-project-cli) 섹션을 참조하세요.