AWS CodeBuild가 소스 리포지토리로 GitHub Enterprise Server를 지원합니다. 이 샘플에서는 GitHub Enterprise Server 리포지토리에 인증서가 설치되어 있을 때 CodeBuild 프로젝트를 설정하는 방법을 보여 줍니다. 또한 코드 변경이 GitHub Enterprise Server 리포지토리로 푸시될 때마다 CodeBuild가 다시 빌드되도록 Webhook를 활성화하는 방법도 보여줍니다.
사전 조건
-
CodeBuild 프로젝트에 대한 개인 액세스 토큰을 생성합니다. GitHub Enterprise 사용자를 생성하고 이 사용자를 위한 개인 액세스 토큰을 생성하는 것이 좋습니다. 이 토큰을 CodeBuild 프로젝트를 생성할 때 사용할 수 있도록 클립보드에 복사합니다. 자세한 내용은 GitHub Help 웹 사이트의 Creating a personal access token for the command line
을 참조하십시오. 개인 액세스 토큰을 생성할 때 정의에 리포지토리 범위를 포함시킵니다.
-
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 파일로 저장합니다.
-
S3 버킷으로 인증서 파일을 업로드합니다. S3 버킷을 생성하는 방법에 대한 자세한 내용은 S3 버킷을 생성하려면 어떻게 해야 합니까?를 참조하십시오. S3 버킷으로 객체를 업로드하는 방법에 대한 자세한 내용은 버킷에 파일 및 폴더를 업로드하려면 어떻게 해야 합니까?를 참조하십시오.
참고
이 버킷은 빌드와 동일한 AWS 리전에 있어야 합니다. 예를 들어, CodeBuild가 미국 동부(오하이오) 리전에서 빌드를 실행하도록 명령을 지정하는 경우, 버킷도 미국 동부(오하이오) 리전에 있어야 합니다.
1단계: GitHub Enterprise Server를 사용하여 빌드 프로젝트 생성 및 웹후크 활성화
https://console.aws.amazon.com/codesuite/codebuild/home
에서 AWS CodeBuild 콘솔을 엽니다. CodeBuild 정보 페이지가 나타나면 빌드 프로젝트 생성을 선택합니다. 그렇지 않을 경우, 탐색 창에서 빌드를 확장한 후 빌드 프로젝트를 선택하고 빌드 프로젝트 생성을 선택합니다.
프로젝트 이름에 이 빌드 프로젝트의 이름을 입력합니다. 각 AWS 계정에서 빌드 프로젝트 이름은 고유해야 합니다. 또한 선택에 따라 빌드 프로젝트에 대한 설명을 포함하여 다른 사용자가 이 프로젝트의 용도를 이해하도록 도울 수 있습니다.
-
소스의 소스 공급자에서 GitHub Enterprise를 선택합니다.
-
[Personal Access Token]에서 클리보드에 복사해 놓은 토큰을 붙여 넣고 [Save Token]을 선택합니다. Repository URL에 GitHub Enterprise Server 리포지토리의 URL을 입력합니다.
참고
개인 액세스 토큰은 한 번만 입력하고 저장하면 됩니다. 향후 모든 AWS CodeBuild 프로젝트가 이 토큰을 사용합니다.
-
리포지토리 URL에 리포지토리 이름을 포함하여 리포지토리에 대한 경로를 입력합니다.
-
추가 구성을 확장합니다.
-
코드 변경이 이 리포지토리로 푸시될 때마다 다시 빌드하려면 코드 변경이 이 리포지토리로 푸시될 때마다 다시 빌드를 선택합니다.
-
GitHub Enterprise Server 프로젝트 리포지토리에 연결되어 있는 동안 SSL 경고를 무시하려면 안전하지 않은 SSL 활성화를 선택합니다.
참고
Enable insecure SSL(안전하지 않은 SSL 활성화)는 테스트 용도로만 사용하는 것이 좋습니다. 프로덕션 환경에 사용하면 안 됩니다.
-
환경에서 다음과 같이 합니다.
[Environment image]에서 다음 중 하나를 수행합니다.
-
AWS CodeBuild가 관리하는 도커 이미지를 사용하려면 Managed image(관리형 이미지)를 선택한 후 운영 체제, 런타임, 이미지 및 이미지 버전에서 항목을 선택합니다. 사용 가능한 경우 환경 유형에서 항목을 선택합니다.
-
다른 도커 이미지를 사용하려면 사용자 지정 이미지를 선택합니다. 환경 유형에서 ARM, Linux, Linux GPU 또는 Windows를 선택합니다. Other registry(다른 레지스트리)를 선택한 경우 External registry URL(외부 레지스트리 URL)에 Docker Hub의 도커 이미지 이름 및 태그를
형식으로 입력합니다. Amazon ECR을 선택하는 경우 Amazon ECR 리포지토리 및 Amazon ECR 이미지를 사용하여 AWS 계정의 도커 이미지를 선택합니다.docker repository
/docker image name
-
프라이빗 도커 이미지를 사용하려면 사용자 지정 이미지를 선택합니다. 환경 유형에서 ARM, Linux, Linux GPU 또는 Windows를 선택합니다. Image registry(이미지 레지스트리)에서 Other registry(다른 레지스트리)를 선택한 다음 프라이빗 도커 이미지에 대한 보안 인증 정보의 ARN을 입력합니다. 보안 인증은 Secrets Manager에서 생성됩니다. 자세한 내용은 AWS Secrets Manager 사용 설명서의 AWS Secrets Manager이란? 섹션을 참조하세요.
-
서비스 역할에서 다음 중 하나를 수행합니다.
-
CodeBuild 서비스 역할이 없는 경우 새 서비스 역할을 선택합니다. 역할 이름에 새 역할의 이름을 입력합니다.
-
CodeBuild 서비스 역할이 있는 경우 기존 서비스 역할을 선택합니다. 역할 ARN에서 서비스 역할을 선택합니다.
참고
콘솔을 사용하여 빌드 프로젝트를 생성하거나 업데이트하는 경우, 이와 동시에 CodeBuild 서비스 역할을 만들 수 있습니다. 기본적으로 역할은 해당 빌드 프로젝트에서만 작동합니다. 콘솔을 사용하여 이 서비스 역할을 다른 빌드 프로젝트와 연결하는 경우 다른 빌드 프로젝트에서 작동하도록 역할이 업데이트됩니다. 하나의 서비스 역할은 최대 10개의 빌드 프로젝트에서 작동할 수 있습니다.
-
-
추가 구성을 확장합니다.
CodeBuild를 사용하여 VPC에서 작업을 수행하려는 경우:
-
VPC에서 CodeBuild가 사용하는 VPC ID를 선택합니다.
-
VPC 서브넷에서 CodeBuild가 사용하는 리소스가 포함된 서브넷을 선택합니다.
-
VPC 보안 그룹에서 CodeBuild가 VPC의 리소스에 대한 액세스를 허용하기 위해 사용하는 보안 그룹을 선택합니다.
자세한 내용은 Amazon Virtual Private Cloud에서 AWS CodeBuild 사용 단원을 참조하십시오.
-
Buildspec에서 다음 중 하나를 수행합니다.
-
buildspec 파일 사용을 선택하여 소스 코드 루트 디렉터리에 있는 buildspec.yml 파일을 사용합니다.
-
빌드 명령 삽입을 선택하여 콘솔에서 빌드 명령을 삽입합니다.
자세한 내용은 buildspec 참조을 참조하세요.
-
결과물의 유형에서 다음 중 하나를 수행합니다.
-
빌드 출력 아티팩트를 생성하지 않으려면 No artifacts(아티팩트 없음)를 선택합니다.
-
S3 버킷에 빌드 출력을 저장하려면 Amazon S3를 선택하고 다음 작업을 수행합니다.
-
빌드 출력 ZIP 파일이나 폴더에 프로젝트 이름을 사용하려는 경우 이름을 비워 둡니다. 그렇지 않으면 이름을 입력합니다. 기본적으로 결과물 이름은 프로젝트의 이름입니다. 다른 이름을 사용하려면 결과물 이름 상자에 해당 이름을 입력합니다. ZIP 파일을 출력하려면 zip 확장명을 포함시킵니다.
-
[Bucket name]에서 출력 버킷의 이름을 선택합니다.
-
이 절차의 앞부분에서 빌드 명령 삽입을 선택한 경우 출력 파일에 빌드 출력 ZIP 파일 또는 폴더에 넣으려는 빌드의 파일 위치를 입력합니다. 위치가 여러 개인 경우 각 위치를 쉼표로 구분합니다(예:
appspec.yml, target/my-app.jar
). 자세한 내용은 buildspec 구문의files
설명을 참조하십시오.
-
-
Cache type(캐시 유형)에서 다음 중 하나를 선택합니다.
-
캐시를 사용하지 않으려면 [No cache]를 선택합니다.
-
Amazon S3 캐시를 사용하려면 Amazon S3를 선택하고 다음을 수행합니다.
-
버킷에서 캐시가 저장된 S3 버킷의 이름을 선택합니다.
-
(선택 사항) 캐시 경로 접두사에 Amazon S3 경로 접두사를 입력합니다. Cache path prefix(캐시 경로 접두사) 값은 디렉터리 이름과 비슷합니다. 따라서 캐시를 버킷의 동일한 디렉터리에 저장할 수 있습니다.
중요
경로 접두사 끝에 후행 슬래시(/)를 추가하지 마십시오.
-
-
로컬 캐시를 사용하려면 로컬을 선택한 다음 하나 이상의 로컬 캐시 모드를 선택해야 합니다.
참고
Docker 계층 캐시 모드는 Linux에서만 사용할 수 있습니다. 이 모드를 선택할 경우 프로젝트를 권한이 있는 모드에서 실행해야 합니다.
캐시를 사용하면 빌드 환경의 재사용 가능한 특정 부분이 캐시에 저장되고 빌드 전반에서 사용되기 때문에 상당한 빌드 시간을 절약할 수 있습니다. buildspec 파일에 캐시를 지정하는 것에 대한 자세한 정보는 buildspec 구문 단원을 참조하십시오. 캐싱에 대한 자세한 정보는 성능을 개선하기 위한 캐시 빌드을 참조하십시오.
-
-
빌드 프로젝트 생성을 선택합니다. 빌드 프로젝트 페이지에서 빌드 시작을 선택합니다.
-
소스에서 webhook를 활성화한 경우 페이로드 URL 및 보안 암호 값이 포함된 webhook 생성 대화 상자가 표시됩니다.
중요
[Create webhook] 대화 상자는 한 번만 나타납니다. 페이로드 URL 및 보안 키를 복사합니다. 이들 값은 GitHub Enterprise Server에 Webhook를 추가할 때 필요합니다.
페이로드 URL 및 보안 키를 다시 생성해야 하는 경우에는 먼저 GitHub Enterprise Server 리포지토리에서 Webhook를 삭제해야 합니다. CodeBuild 프로젝트에서 Webhook 확인란의 선택을 취소하고 저장을 선택합니다. 그런 다음, Webhook 확인란을 선택하여 CodeBuild 프로젝트를 생성하거나 업데이트할 수 있습니다. [Create webhook] 대화 상자가 다시 나타납니다.
-
GitHub Enterprise Server에서 CodeBuild 프로젝트가 저장된 리포지토리를 선택합니다.
-
설정, Hooks & services(후크 및 서비스), Add webhook(webhook 추가)를 차례로 선택합니다.
-
페이로드 URL 및 보안 키를 입력하고 그 외 필드에 대해서는 기본값을 수락한 다음 [Add webhook]를 선택합니다.
-
CodeBuild 프로젝트로 돌아갑니다. [Create webhook] 대화 상자를 선택하고 [Start build]를 선택합니다.