

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

# CodeBuild를 사용하는 파이프라인 생성(AWS CLI)
<a name="how-to-create-pipeline-cli"></a>

다음 절차에 따라 CodeBuild를 사용하여 소스 코드를 빌드하는 파이프라인을 생성하세요.

 AWS CLI 를 사용하여 빌드된 소스 코드를 배포하거나 소스 코드만 테스트하는 파이프라인을 생성하려면 [파이프라인 편집(AWS CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/how-to-edit-pipelines.html#how-to-edit-pipelines-cli)의 지침과 *AWS CodePipeline 사용 설명서*의 [CodePipeline 파이프라인 구조 참조](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-structure.html)를 조정할 수 있습니다.

1. CodeBuild에서 빌드 프로젝트를 생성하거나 식별합니다. 자세한 내용은 [빌드 프로젝트 생성](create-project.md) 단원을 참조하십시오.
**중요**  
CodePipeline에서 재정의되더라도 빌드 프로젝트는 빌드 출력 아티팩트 설정을 정의해야 합니다. 자세한 내용은 [빌드 프로젝트 생성(AWS CLI)](create-project.md#create-project-cli)의 `artifacts` 설명을 참조하십시오.

1. 이 주제에 설명된 IAM 엔터티 중 하나에 해당하는 AWS 액세스 키 및 AWS 보안 액세스 키 AWS CLI 로를 구성했는지 확인합니다. 자세한 내용은AWS Command Line Interface 사용 설명서의 [AWS Command Line Interface설정](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)을 참조하세요.**

1. 파이프라인 구조를 나타내는 JSON 형식의 파일을 생성합니다. 파일 이름을 `create-pipeline.json` 또는 비슷한 이름으로 지정합니다. 예를 들어, 다음 JSON 형식 구조는 CodeBuild를 사용하는 빌드 작업 및 S3 입력 버킷을 참조하는 소스 작업으로 파이프라인을 생성합니다.

   ```
   {
     "pipeline": {
       "roleArn": "arn:aws:iam::<account-id>:role/<AWS-CodePipeline-service-role-name>",
       "stages": [
         {
           "name": "Source",
           "actions": [
             {
               "inputArtifacts": [],
               "name": "Source",
               "actionTypeId": {
                 "category": "Source",
                 "owner": "AWS",
                 "version": "1",
                 "provider": "S3"
               },
               "outputArtifacts": [
                 {
                   "name": "MyApp"
                 }
               ],
               "configuration": {
                 "S3Bucket": "<bucket-name>",
                 "S3ObjectKey": "<source-code-file-name.zip>"
               },
               "runOrder": 1
             }
           ]
         },
         {
           "name": "Build",
           "actions": [
             {
               "inputArtifacts": [
                 {
                   "name": "MyApp"
                 }
               ],
               "name": "Build",
               "actionTypeId": {
                 "category": "Build",
                 "owner": "AWS",
                 "version": "1",
                 "provider": "CodeBuild"
               },
               "outputArtifacts": [
                 {
                   "name": "default"
                 }
               ],
               "configuration": {
                 "ProjectName": "<build-project-name>"
               },
               "runOrder": 1
             }
           ]
         }
       ],
       "artifactStore": {
         "type": "S3",
         "location": "<CodePipeline-internal-bucket-name>"
       },
       "name": "<my-pipeline-name>",
       "version": 1
     }
   }
   ```

   이 JSON 형식의 데이터에서는 다음이 적용됩니다.
   + `roleArn`의 값은 사용자가 생성했거나 사전 요구 사항의 일부로 식별한 CodePipeline 서비스 역할의 ARN과 일치해야 합니다.
   + `configuration`의 `S3Bucket` 및 `S3ObjectKey` 값은 소스 코드가 S3 버킷에 저장되어 있다고 가정합니다. 다른 소스 코드 리포지토리 유형에 대한 설정은AWS CodePipeline 사용 설명서의 [CodePipeline 파이프라인 구조 참조](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-structure.html)를 참조하세요.**
   + `ProjectName`의 값은 이 절차의 앞부분에서 생성한 CodeBuild 빌드 프로젝트의 이름입니다.
   + `location`의 값은 이 파이프라인에서 사용하는 S3 버킷의 이름입니다. 자세한 내용은AWS CodePipeline 사용 설명서의 [CodePipeline의 아티팩트 스토어로 사용할 S3 버킷에 대한 정책 생성](https://docs.aws.amazon.com/codepipeline/latest/userguide/access-permissions.html#how-to-create-bucket-policy)을 참조하세요.**
   + `name`의 값은 이 파이프라인의 이름입니다. 모든 파이프라인 이름은 계정에서 고유해야 합니다.

   이 데이터는 소스 작업과 빌드 작업만 설명하지만 테스트, 빌드 출력 아티팩트 배포, AWS Lambda 함수 호출 등과 관련된 활동에 대한 작업을 추가할 수 있습니다. 자세한 내용은AWS CodePipeline 사용 설명서의 [AWS CodePipeline 파이프라인 구조 참조](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-structure.html)를 참조하세요.**

1. JSON 파일이 들어 있는 폴더로 전환한 다음, 파일 이름을 지정하여 **[create-pipeline](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/create-pipeline.html)** CodePipeline 명령을 실행합니다.

   ```
   aws codepipeline create-pipeline --cli-input-json file://create-pipeline.json
   ```
**참고**  
CodeBuild가 지원되는 AWS 리전에서 파이프라인을 생성해야 합니다. 자세한 내용은 *Amazon Web Services 일반 참조*의 [AWS CodeBuild](https://docs.aws.amazon.com/general/latest/gr/rande.html#codebuild_region) 섹션을 참조하세요.

   JSON 형식의 데이터가 출력에 나타나고 CodePipeline이 파이프라인을 생성합니다.

1. 파이프라인 상태에 대한 정보를 가져오려면 파이프라인 이름을 지정하여 CodePipeline **[get-pipeline-state](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html)** 명령을 실행합니다.

   ```
   aws codepipeline get-pipeline-state --name <my-pipeline-name>
   ```

   출력에서 빌드가 성공했음을 확인하는 정보를 찾습니다. 간결하게 나타내기 위해 생략된 데이터를 표시하는 데 줄임표(`...`)가 사용됩니다.

   ```
   {
     ...
     "stageStates": [
       ...  
       {
         "actionStates": [
           {
             "actionName": "CodeBuild",
             "latestExecution": {
               "status": "SUCCEEDED",
               ...
             },
             ...
           }
         ]
       }
     ]
   }
   ```

   이 명령을 너무 일찍 실행하면 빌드 작업에 대해 어떤 정보도 표시되지 않을 수 있습니다. 파이프라인에서 빌드 작업 실행이 완료될 때까지 이 명령을 여러 번 실행해야 할 수도 있습니다.

1. 빌드에 성공하면 다음 지침에 따라 빌드 출력 아티팩트를 가져오세요. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.
**참고**  
CodeBuild 콘솔의 관련 빌드 세부 정보 페이지에서 **빌드 아티팩트** 링크를 선택하여 빌드 출력 아티팩트를 가져올 수도 있습니다. 이 페이지로 이동하려면 이 절차의 나머지 단계를 건너뛰고 [빌드 세부 정보 보기(콘솔)](view-build-details.md#view-build-details-console) 섹션을 참조하세요.

1. 버킷 목록에서 파이프라인에서 사용하는 버킷을 엽니다. 버킷의 이름은 `codepipeline-<region-ID>-<random-number>` 형식을 따릅니다. `create-pipeline.json` 파일에서 버킷 이름을 가져오거나 CodePipeline **get-pipeline** 명령을 실행하여 버킷 이름을 가져올 수 있습니다.

   ```
   aws codepipeline get-pipeline --name <pipeline-name>
   ```

    출력에서 `pipeline` 객체는 `artifactStore` 객체를 포함하며, 이 객체에는 버킷 이름의 `location` 값이 들어 있습니다.

1. 파이프라인 이름(예: `<pipeline-name>`)과 일치하는 폴더를 엽니다.

1. 해당 폴더에서 이름이 `default`인 폴더를 엽니다.

1. 파일 내용의 압축을 풉니다. 해당 폴더에 파일이 여러 개 있는 경우 가장 최근의 **마지막 수정 시간** 타임스탬프를 사용하여 파일의 내용을 추출합니다. (시스템의 ZIP 유틸리티에서 작업할 수 있도록 파일에 `.zip` 확장자를 지정해야 할 수도 있습니다.) 빌드 출력 아티팩트는 파일의 추출된 내용에 있습니다.