

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

# CodeBuild용 GitHub Enterprise Server 샘플 실행
<a name="sample-github-enterprise"></a>

AWS CodeBuild 는 GitHub Enterprise Server를 소스 리포지토리로 지원합니다. 이 샘플에서는 GitHub Enterprise Server 리포지토리에 인증서가 설치되어 있을 때 CodeBuild 프로젝트를 설정하는 방법을 보여 줍니다. 또한 코드 변경이 GitHub Enterprise Server 리포지토리로 푸시될 때마다 CodeBuild가 다시 빌드되도록 Webhook를 활성화하는 방법도 보여줍니다.

**Topics**
+ [사전 조건](#sample-github-enterprise-prerequisites)
+ [1단계: GitHub Enterprise Server를 사용하여 빌드 프로젝트 생성 및 웹후크 활성화](#sample-github-enterprise-running)

## 사전 조건
<a name="sample-github-enterprise-prerequisites"></a>

1. CodeBuild 프로젝트에 대한 개인 액세스 토큰을 생성합니다. GitHub Enterprise 사용자를 생성하고 이 사용자를 위한 개인 액세스 토큰을 생성하는 것이 좋습니다. 이 토큰을 CodeBuild 프로젝트를 생성할 때 사용할 수 있도록 클립보드에 복사합니다. 자세한 내용은 GitHub Help 웹 사이트의 [Creating a personal access token for the command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/)을 참조하십시오.

   개인 액세스 토큰을 생성할 때 정의에 **리포지토리** 범위를 포함시킵니다.  
![\[정의의 repo 범위입니다.\]](http://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/images/scopes.png)

1. GitHub Enterprise Server에서 인증서를 다운로드합니다. CodeBuild는 인증서를 사용하여 리포지토리에 신뢰할 수 있는 SSL 연결을 만듭니다.

   **Linux/macOS 클라이언트:**

   터미널 창에서 다음 명령을 실행합니다.

   ```
   echo -n | openssl s_client -connect HOST:PORTNUMBER \
       | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /folder/filename.pem
   ```

   명령에서 자리 표시자를 다음 값으로 바꿉니다.

   *HOST*. GitHub Enterprise Server 리포지토리의 IP 주소입니다.

   *PORTNUMBER*. 연결에 사용하는 포트 번호입니다(예: 443).

   *folder*. 인증서를 다운로드한 폴더입니다.

   *filename*. 인증서 파일의 파일 이름입니다.
**중요**  
인증서를 .pem 파일로 저장합니다.

   **Windows 클라이언트:**

   브라우저를 사용하여 GitHub Enterprise Server에서 인증서를 다운로드합니다. 사이트의 인증서 세부 정보를 보려면 자물쇠 아이콘을 선택합니다. 인증서를 내보내는 방법에 대한 자세한 내용은 브라우저 설명서를 참조하십시오.
**중요**  
인증서를 .pem 파일로 저장합니다.

1. S3 버킷으로 인증서 파일을 업로드합니다. S3 버킷을 생성하는 방법에 대한 자세한 내용은 [S3 버킷을 생성하려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html)를 참조하십시오. S3 버킷으로 객체를 업로드하는 방법에 대한 자세한 내용은 [버킷에 파일 및 폴더를 업로드하려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)를 참조하십시오.
**참고**  
이 버킷은 빌드와 동일한 AWS 리전에 있어야 합니다. 예를 들어, CodeBuild가 미국 동부(오하이오) 리전에서 빌드를 실행하도록 명령을 지정하는 경우, 버킷도 미국 동부(오하이오) 리전에 있어야 합니다.

## 1단계: GitHub Enterprise Server를 사용하여 빌드 프로젝트 생성 및 웹후크 활성화
<a name="sample-github-enterprise-running"></a>

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) AWS CodeBuild 콘솔을 엽니다.

1.  CodeBuild 정보 페이지가 나타나면 **빌드 프로젝트 생성**을 선택합니다. 그렇지 않을 경우, 탐색 창에서 **빌드**를 확장한 후 **빌드 프로젝트**를 선택하고 **빌드 프로젝트 생성**을 선택합니다.

1. **프로젝트 이름**에 이 빌드 프로젝트의 이름을 입력합니다. 빌드 프로젝트 이름은 각 AWS 계정에서 고유해야 합니다. 또한 선택에 따라 빌드 프로젝트에 대한 설명을 포함하여 다른 사용자가 이 프로젝트의 용도를 이해하도록 도울 수 있습니다.

1. **소스**의 **소스 공급자**에서 **GitHub Enterprise Server**를 선택합니다.
   + **계정 자격 증명 관리**를 선택한 다음 **개인 액세스 토큰**을 선택합니다. **서비스**에서 **Secrets Manager(권장)**를 선택하고 보안 암호를 구성합니다. 그런 다음 **GitHub Enterprise 개인 액세스 토큰**에서 개인 액세스 토큰을 입력하고 **저장**을 선택합니다.
   + **리포지토리 URL**에 리포지토리 이름을 포함하여 리포지토리에 대한 경로를 입력합니다.
   + **추가 구성**을 확장합니다.
   + 코드 변경이 이 리포지토리로 푸시될 때마다 다시 빌드하려면 **코드 변경이 이 리포지토리로 푸시될 때마다 다시 빌드**를 선택합니다.
   + GitHub Enterprise Server 프로젝트 리포지토리에 연결되어 있는 동안 SSL 경고를 무시하려면 **안전하지 않은 SSL 활성화**를 선택합니다.
**참고**  
**Enable insecure SSL(안전하지 않은 SSL 활성화)**는 테스트 용도로만 사용하는 것이 좋습니다. 프로덕션 환경에 사용하면 안 됩니다.  
![\[GitHub Enterprise Server 프로젝트 리포지토리 구성입니다.\]](http://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/images/github-enterprise.png)

1. **환경**에서 다음과 같이 합니다.

   [**Environment image**]에서 다음 중 하나를 수행합니다.
   + 에서 관리하는 도커 이미지를 사용하려면 **관리형 이미지를** AWS CodeBuild선택한 다음 **운영 체제**, **런타임**, **이미지**(Image) 및 **이미지 버전**에서 선택합니다. 사용 가능한 경우 **환경 유형**에서 항목을 선택합니다.
   + 다른 도커 이미지를 사용하려면 **사용자 지정 이미지**를 선택합니다. **환경 유형**에서 **ARM**, **Linux**, **Linux GPU** 또는 **Windows**를 선택합니다. **Other registry(다른 레지스트리)**를 선택한 경우 **External registry URL(외부 레지스트리 URL)**에 Docker Hub의 도커 이미지 이름 및 태그를 `docker repository/docker image name` 형식으로 입력합니다. **Amazon ECR**을 선택하는 경우 **Amazon ECR 리포지토리**와 **Amazon ECR 이미지를** 사용하여 AWS 계정에서 도커 이미지를 선택합니다.
   + 프라이빗 도커 이미지를 사용하려면 **사용자 지정 이미지**를 선택합니다. **환경 유형**에서 **ARM**, **Linux**, **Linux GPU** 또는 **Windows**를 선택합니다. **Image registry(이미지 레지스트리)**에서 **Other registry(다른 레지스트리)**를 선택한 다음 프라이빗 도커 이미지에 대한 보안 인증 정보의 ARN을 입력합니다. 보안 인증은 Secrets Manager에서 생성됩니다. 자세한 내용은 AWS Secrets Manager사용 설명서의 [AWS Secrets Manager 이란?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) 섹션을 참조하세요.**

1. **서비스 역할**에서 다음 중 하나를 수행합니다.
   + CodeBuild 서비스 역할이 없는 경우 **새 서비스 역할**을 선택합니다. **역할 이름**에 새 역할의 이름을 입력합니다.
   + CodeBuild 서비스 역할이 있는 경우 **기존 서비스 역할**을 선택합니다. **역할 ARN**에서 서비스 역할을 선택합니다.
**참고**  
콘솔을 사용하여 빌드 프로젝트를 생성하거나 업데이트하는 경우, 이와 동시에 CodeBuild 서비스 역할을 만들 수 있습니다. 기본적으로 역할은 해당 빌드 프로젝트에서만 작동합니다. 콘솔을 사용하여 이 서비스 역할을 다른 빌드 프로젝트와 연결하는 경우 다른 빌드 프로젝트에서 작동하도록 역할이 업데이트됩니다. 하나의 서비스 역할은 최대 10개의 빌드 프로젝트에서 작동할 수 있습니다.

1. **추가 구성**을 확장합니다.

   CodeBuild를 사용하여 VPC에서 작업을 수행하려는 경우:
   + **VPC**에서 CodeBuild가 사용하는 VPC ID를 선택합니다.
   + **VPC 서브넷**에서 CodeBuild가 사용하는 리소스가 포함된 서브넷을 선택합니다.
   + **VPC 보안 그룹**에서 CodeBuild가 VPC의 리소스에 대한 액세스를 허용하기 위해 사용하는 보안 그룹을 선택합니다.

   자세한 내용은 [Amazon Virtual Private Cloud AWS CodeBuild 와 함께 사용](vpc-support.md) 단원을 참조하십시오.

1. **Buildspec**에서 다음 중 하나를 수행합니다.
   + **buildspec 파일 사용**을 선택하여 소스 코드 루트 디렉터리에 있는 buildspec.yml 파일을 사용합니다.
   + **빌드 명령 삽입**을 선택하여 콘솔에서 빌드 명령을 삽입합니다.

   자세한 내용은 [buildspec 참조](build-spec-ref.md) 단원을 참조하십시오.

1. **결과물**의 **유형**에서 다음 중 하나를 수행합니다.
   + 빌드 출력 아티팩트를 생성하지 않으려면 **No artifacts(아티팩트 없음)**를 선택합니다.
   + S3 버킷에 빌드 출력을 저장하려면 **Amazon S3**를 선택하고 다음 작업을 수행합니다.
     + 빌드 출력 ZIP 파일이나 폴더에 프로젝트 이름을 사용하려는 경우 **이름**을 비워 둡니다. 그렇지 않으면 이름을 입력합니다. 기본적으로 결과물 이름은 프로젝트의 이름입니다. 다른 이름을 사용하려면 결과물 이름 상자에 해당 이름을 입력합니다. ZIP 파일을 출력하려면 zip 확장명을 포함시킵니다.
     + [**Bucket name**]에서 출력 버킷의 이름을 선택합니다.
     + 이 절차의 앞부분에서 **빌드 명령 삽입**을 선택한 경우 **출력 파일**에 빌드 출력 ZIP 파일 또는 폴더에 넣으려는 빌드의 파일 위치를 입력합니다. 위치가 여러 개인 경우 각 위치를 쉼표로 구분합니다(예: `appspec.yml, target/my-app.jar`). 자세한 내용은 [buildspec 구문](build-spec-ref.md#build-spec-ref-syntax)의 `files` 설명을 참조하십시오.

1. **Cache type(캐시 유형)**에서 다음 중 하나를 선택합니다.
   + 캐시를 사용하지 않으려면 [**No cache**]를 선택합니다.
   + Amazon S3 캐시를 사용하려면 **Amazon S3**를 선택하고 다음을 수행합니다.
     + **버킷**에서 캐시가 저장된 S3 버킷의 이름을 선택합니다.
     + (선택 사항) **캐시 경로 접두사**에 Amazon S3 경로 접두사를 입력합니다. **Cache path prefix(캐시 경로 접두사)** 값은 디렉터리 이름과 비슷합니다. 따라서 캐시를 버킷의 동일한 디렉터리에 저장할 수 있습니다.
**중요**  
경로 접두사 끝에 후행 슬래시(/)를 추가하지 마십시오.
   +  로컬 캐시를 사용하려면 **로컬**을 선택한 다음 하나 이상의 로컬 캐시 모드를 선택해야 합니다.
**참고**  
Docker 계층 캐시 모드는 Linux에서만 사용할 수 있습니다. 이 모드를 선택할 경우 프로젝트를 권한이 있는 모드에서 실행해야 합니다.

   캐시를 사용하면 빌드 환경의 재사용 가능한 특정 부분이 캐시에 저장되고 빌드 전반에서 사용되기 때문에 상당한 빌드 시간을 절약할 수 있습니다. buildspec 파일에 캐시를 지정하는 것에 대한 자세한 정보는 [buildspec 구문](build-spec-ref.md#build-spec-ref-syntax) 단원을 참조하십시오. 캐싱에 대한 자세한 정보는 [성능을 개선하기 위한 캐시 빌드](build-caching.md)을 참조하십시오.

1. **빌드 프로젝트 생성**을 선택합니다. 빌드 프로젝트 페이지에서 **빌드 시작**을 선택합니다.