기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
에서 빌드 프로젝트 생성 AWS CodeBuild
AWS CodeBuild 콘솔 AWS CLI또는 AWS SDKs 를 사용하여 빌드 프로젝트를 생성할 수 있습니다.
사전 조건
빌드 프로젝트를 생성하기 전에 빌드 계획의 질문에 답변하세요.
빌드 프로젝트 만들기(콘솔)
https://console.aws.amazon.com/codesuite/codebuild/home
CodeBuild 정보 페이지가 표시되면 빌드 프로젝트 생성을 선택합니다. 그렇지 않을 경우, 탐색 창에서 빌드를 확장한 후 빌드 프로젝트를 선택하고 빌드 프로젝트 생성을 선택합니다.
빌드 프로젝트 생성을 선택합니다.
다음 섹션을 채웁니다. 완료되면 페이지 하단에서 빌드 프로젝트 생성을 선택합니다.
프로젝트 구성
- 프로젝트 이름
-
이 빌드 프로젝트의 이름을 입력합니다. 빌드 프로젝트 이름은 각 AWS 계정에서 고유해야 합니다.
- 설명
-
선택적으로 빌드 프로젝트에 대한 설명을 입력하여 다른 사용자가 이 프로젝트의 용도를 이해하도록 도울 수 있습니다.
- 빌드 배지
-
(선택 사항) 프로젝트의 빌드 상태를 표시하고 삽입 가능하게 하려면 빌드 배치 활성화를 선택합니다. 자세한 내용은 빌드 배지 샘플 단원을 참조하십시오.
참고
소스 공급자가 Amazon S3인 경우 빌드 배지가 적용되지 않습니다.
- 동시 빌드 제한 활성화
-
(선택 사항) 이 프로젝트의 동시 빌드 수를 제한하려면 다음 단계를 수행합니다.
-
이 프로젝트에서 시작할 수 있는 동시 빌드 수 제한을 선택합니다.
-
동시 빌드 제한에 이 프로젝트에 허용되는 최대 동시 빌드 수를 입력합니다. 이 제한은 계정에 설정된 동시 빌드 제한보다 클 수 없습니다. 계정 제한보다 큰 숫자를 입력하려고 하면 오류 메시지가 표시됩니다.
현재 빌드 수가 이 한도 이하인 경우에만 새 빌드가 시작됩니다. 현재 빌드 수가 이 한도에 도달하면 새 빌드가 제한되고 실행되지 않습니다.
-
- 추가 정보
-
(선택 사항) 태그 에 지원 AWS 서비스가 사용할 태그의 이름과 값을 입력합니다. [Add row]를 사용하여 태그를 추가합니다. 최대 50개의 태그를 추가할 수 있습니다.
소스
- 소스 공급자
-
소스 코드 공급자 유형을 선택합니다. 다음 목록을 사용하여 소스 공급자에 알맞은 유형을 선택합니다.
참고
CodeBuild 는 Bitbucket Server를 지원하지 않습니다.
환경
- 프로비저닝 모델
-
다음 중 하나를 수행합니다.
-
에서 관리하는 온디맨드 플릿을 사용하려면 온디맨드 를 AWS CodeBuild선택합니다. 온디맨드 플릿을 통해 CodeBuild 는 빌드를 위한 컴퓨팅을 제공합니다. 빌드가 완료되면 머신이 파괴됩니다. 온디맨드 플릿은 완전 관리형이며, 수요 급증을 처리할 수 있는 자동 규모 조정 기능이 포함되어 있습니다.
-
에서 관리하는 예약 용량 플릿을 사용하려면 예약 용량 을 AWS CodeBuild선택한 다음 플릿 이름 을 선택합니다. 예약 용량 플릿을 사용하면 빌드 환경을 위한 전용 인스턴스 세트를 구성할 수 있습니다. 이러한 머신은 유휴 상태로 유지되므로 빌드 또는 테스트를 즉시 처리하고 빌드 기간을 단축할 수 있습니다. 예약 용량 플릿을 사용하면 머신이 상시 가동되므로 프로비저닝하는 한 계속해서 비용이 발생합니다.
자세한 내용은 예약된 용량 플릿에서 빌드 실행을 참조하세요.
-
- 환경 이미지
-
다음 중 하나를 수행합니다.
-
에서 관리하는 Docker 이미지를 사용하려면 관리형 이미지()를 AWS CodeBuild선택한 다음 운영 체제, 런타임, 이미지 및 이미지 버전 에서 선택합니다. 사용 가능한 경우 환경 유형에서 항목을 선택합니다.
-
다른 도커 이미지를 사용하려면 사용자 지정 이미지를 선택합니다. 환경 유형 에서 , ARM Linux , Linux 또는 Windows GPU를 선택합니다. 기타 레지스트리 를 선택한 경우 외부 레지스트리 URL에 대해 형식을 사용하여 Docker Hub에서 Docker 이미지의 이름과 태그를 입력합니다
. Amazon ECR를 선택한 경우 Amazon ECR리포지토리 및 Amazon ECR 이미지를 사용하여 AWS 계정에서 Docker 이미지를 선택합니다.docker repository
/docker image name
-
프라이빗 도커 이미지를 사용하려면 사용자 지정 이미지를 선택합니다. 환경 유형 에서 , ARM Linux , Linux GPU또는 Windows 를 선택합니다. 이미지 레지스트리 에서 기타 레지스트리 를 선택한 다음 프라이빗 도커 이미지의 보안 인증 ARN 정보 중 를 입력합니다. 보안 인증은 Secrets Manager에서 생성됩니다. 자세한 내용은 AWS Secrets Manager사용 설명서의 AWS Secrets Manager 이란? 섹션을 참조하세요.
참고
CodeBuild 는 사용자 지정 Docker 이미지에
ENTRYPOINT
대해 를 재정의합니다. -
- 컴퓨팅
-
다음 중 하나를 수행합니다.
-
EC2 컴퓨팅을 사용하려면 를 선택합니다EC2. EC2 컴퓨팅은 작업 실행 중에 최적화된 유연성을 제공합니다.
-
Lambda 컴퓨팅을 사용하려면 Lambda 를 선택합니다. Lambda 컴퓨팅은 빌드에 최적화된 시작 속도를 제공합니다. Lambda는 시작 지연 시간이 짧아 더 빠른 빌드를 지원합니다. Lambda도 자동으로 확장되므로 빌드가 실행 대기열에서 대기하지 않습니다. 자세한 내용은 AWS Lambda 컴퓨팅 기반 빌드 실행을 참조하세요.
-
- 서비스 역할
다음 중 하나를 수행합니다.
-
CodeBuild 서비스 역할이 없는 경우 새 서비스 역할 을 선택합니다. 역할 이름에 새 역할의 이름을 입력합니다.
-
CodeBuild 서비스 역할이 있는 경우 기존 서비스 역할 을 선택합니다. 역할 ARN에서 서비스 역할을 선택합니다.
참고
콘솔을 사용하여 빌드 프로젝트를 생성할 때 동시에 CodeBuild 서비스 역할을 생성할 수 있습니다. 기본적으로 역할은 해당 빌드 프로젝트에서만 작동합니다. 콘솔을 사용하여 이 서비스 역할을 다른 빌드 프로젝트와 연결하는 경우 다른 빌드 프로젝트에서 작동하도록 역할이 업데이트됩니다. 하나의 서비스 역할은 최대 10개의 빌드 프로젝트에서 작동할 수 있습니다.
-
- 추가 구성
-
- 제한 시간
-
5분에서 36시간 사이의 값을 지정하면 완료되지 않으면 빌드가 CodeBuild 중지됩니다. [hours] 및 [minutes]가 비어 있는 경우 기본값인 60분이 사용됩니다.
- 권한 있음
-
(선택 사항) Docker 이미지를 빌드하려는 경우 또는 이 빌드 프로젝트를 사용하여 Docker 이미지를 빌드하려는 경우에만 빌드에 더 높은 권한을 부여하려면 이 플래그 활성화를 선택합니다. 그렇지 않으면 Docker 데몬과 상호 작용을 시도하는 모든 연결된 빌드가 실패합니다. 또한 빌드가 상호 작용할 수 있도록 Docker 데몬을 시작해야 합니다. 이를 수행하는 한 가지 방법은 다음 빌드 명령을 실행하여 빌드 사양의
install
단계에서 Docker 데몬을 초기화하는 것입니다. Docker 지원과 CodeBuild 함께 에서 제공하는 빌드 환경 이미지를 선택한 경우 이러한 명령을 실행하지 마십시오.참고
기본적으로 빌드가 아닌VPC 경우 Docker 데몬이 활성화됩니다. VPC 빌드에 Docker 컨테이너를 사용하려면 Docker Docs 웹 사이트의 런타임 권한 및 Linux 기능을
참조하고 권한 부여 모드를 활성화합니다. 또한 Windows는 권한 모드를 지원하지 않습니다. - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
- VPC
에서 작업 CodeBuild 하려는 경우VPC:
-
에서 가 CodeBuild 사용하는 VPC ID를 VPC선택합니다.
-
VPC 서브넷 에서 가 CodeBuild 사용하는 리소스가 포함된 서브넷을 선택합니다.
-
VPC 보안 그룹 에서 가 의 리소스에 대한 액세스를 허용하는 데 CodeBuild 사용하는 보안 그룹을 선택합니다VPCs.
자세한 내용은 Amazon Virtual Private 클라우드와 AWS CodeBuild 함께 사용 단원을 참조하십시오.
-
- 컴퓨팅
-
사용 가능한 옵션 중 하나를 선택합니다.
- 환경 변수
-
사용할 빌드의 각 환경 변수에 대해 이름 및 값을 입력하고 유형을 선택합니다.
참고
CodeBuild 는 AWS 리전의 환경 변수를 자동으로 설정합니다. buildspec.yml에 추가하지 않은 경우 다음 환경 변수를 설정해야 합니다.
-
AWS_ACCOUNT_ID
-
IMAGE_REPO_NAME
-
IMAGE_TAG
콘솔과 AWS CLI 사용자는 환경 변수를 볼 수 있습니다. 환경 변수의 가시성에 대한 문제가 없다면 [Name] 및 [Value] 필드를 설정한 다음 [Type]을 [Plaintext]로 설정합니다.
액세스 키 ID, AWS 보안 AWS 액세스 키 또는 암호와 같은 민감한 값을 가진 환경 변수를 Amazon EC2 Systems Manager 파라미터 스토어 또는 에 파라미터로 저장하는 것이 좋습니다 AWS Secrets Manager.
Amazon EC2 Systems Manager 파라미터 스토어를 사용하는 경우 유형 에서 파라미터 를 선택합니다. 이름 에 참조할 의 식별자 CodeBuild 를 입력합니다. 값 에 Amazon EC2 Systems Manager 파라미터 스토어에 저장된 파라미터의 이름을 입력합니다. 예를 들어
/CodeBuild/dockerLoginPassword
라는 이름의 파라미터를 사용하여 유형에서 파라미터를 선택합니다. 이름에LOGIN_PASSWORD
을 입력합니다. 값에/CodeBuild/dockerLoginPassword
를 입력합니다.중요
Amazon EC2 Systems Manager 파라미터 스토어를 사용하는 경우 로 시작하는 파라미터 이름
/CodeBuild/
(예: )으로 파라미터를 저장하는 것이 좋습니다/CodeBuild/dockerLoginPassword
. CodeBuild 콘솔을 사용하여 Amazon EC2 Systems Manager에서 파라미터를 생성할 수 있습니다. 파라미터 생성을 선택하고 대화 상자에 표시되는 지시에 따릅니다. (이 대화 상자ARN의 KMS 키 에 대해 계정의 AWS KMS 키 의 를 지정할 수 있습니다. Amazon EC2 Systems Manager는 이 키를 사용하여 스토리지 중에 파라미터 값을 암호화하고 검색 중에 복호화합니다.) CodeBuild 콘솔을 사용하여 파라미터를 생성하는 경우 콘솔은 파라미터 이름을 저장할/CodeBuild/
때 로 시작합니다. 자세한 내용은 Amazon EC2 Systems Manager 사용 설명서의 Systems Manager 파라미터 스토어 및 Systems Manager 파라미터 스토어 콘솔 연습을 참조하세요.빌드 프로젝트가 Amazon EC2 Systems Manager 파라미터 스토어에 저장된 파라미터를 참조하는 경우 빌드 프로젝트의 서비스 역할이
ssm:GetParameters
작업을 허용해야 합니다. 이전에 새 서비스 역할을 선택한 경우 빌드 프로젝트의 기본 서비스 역할에 이 작업을 CodeBuild 포함합니다. Existing service role(기존 서비스 역할)을 선택한 경우에는 이 작업을 서비스 역할에 별도로 포함해야 합니다.빌드 프로젝트가 로 시작하지 않는 파라미터 이름으로 Amazon EC2 Systems Manager 파라미터 스토어에 저장된 파라미터를 참조
/CodeBuild/
하고 새 서비스 역할 을 선택한 경우, 로 시작하지 않는 파라미터 이름에 대한 액세스를 허용하도록 해당 서비스 역할을 업데이트해야 합니다/CodeBuild/
. 이는 서비스 역할이/CodeBuild/
로 시작하는 파라미터 이름에만 액세스할 수 있기 때문입니다.새 서비스 역할 을 선택하면 서비스 역할에 Amazon EC2 Systems Manager 파라미터 스토어의
/CodeBuild/
네임스페이스 아래에 있는 모든 파라미터를 복호화할 수 있는 권한이 포함됩니다.사용자가 설정한 환경 변수는 기존 환경 변수를 대체합니다. 예를 들어 도커 이미지에 값이
my_value
인MY_VAR
이라는 환경 변수가 이미 포함되어 있는데, 사용자가MY_VAR
환경 변수의 값을other_value
로 설정하면,my_value
가other_value
로 바뀝니다. 마찬가지로, 도커 이미지에 값이/usr/local/sbin:/usr/local/bin
인PATH
라는 환경 변수가 이미 포함되어 있는데, 사용자가PATH
환경 변수의 값을$PATH:/usr/share/ant/bin
으로 설정하면,/usr/local/sbin:/usr/local/bin
이$PATH:/usr/share/ant/bin
리터럴 값으로 바뀝니다.CODEBUILD_
로 시작하는 이름으로 환경 변수를 설정하지 마십시오. 이 접두사는 내부 전용으로 예약되어 있습니다.여러 위치에서 동일한 이름의 환경 변수가 정의되는 경우, 다음과 같이 값이 결정됩니다.
-
시작 빌드 작업 호출의 값이 가장 높은 우선 순위를 갖습니다.
-
빌드 프로젝트 정의의 값이 다음 우선 순위를 갖습니다.
-
buildspec 선언의 값이 가장 낮은 우선 순위를 갖습니다.
Secrets Manager를 사용하는 경우 유형으로 Secrets Manager로 선택합니다. 이름 에 참조할 의 식별자 CodeBuild 를 입력합니다. 값에
패턴을 사용하여secret-id
:json-key
:version-stage
:version-id
reference-key
를 입력합니다. 자세한 내용은 Secrets Manager reference-key in the buildspec file을 참조하세요.중요
Secrets Manager를 사용하는 경우 이름이
/CodeBuild/
로 시작하는 암호를 저장하는 것이 좋습니다(예:/CodeBuild/dockerLoginPassword
). 자세한 내용은 AWS Secrets Manager사용 설명서의 AWS Secrets Manager 이란? 섹션을 참조하세요.빌드 프로젝트가 Secrets Manager에 저장된 암호를 참조하는 경우 해당 빌드 프로젝트의 서비스 역할은
secretsmanager:GetSecretValue
작업을 허용해야 합니다. 이전에 새 서비스 역할을 선택한 경우 빌드 프로젝트의 기본 서비스 역할에 이 작업을 CodeBuild 포함합니다. Existing service role(기존 서비스 역할)을 선택한 경우에는 이 작업을 서비스 역할에 별도로 포함해야 합니다.빌드 프로젝트가
/CodeBuild/
로 시작되지 않는 보안 암호 이름으로 Secrets Manager에 저장된 암호를 참조하는 경우 새 서비스 역할을 선택하면/CodeBuild/
로 시작하지 않는 보안 암호 이름에 액세스할 수 있도록 해당 서비스 역할을 업데이트해야 합니다. 이는 서비스 역할이/CodeBuild/
로 시작하는 암호 이름에만 액세스할 수 있기 때문입니다.새 서비스 역할을 선택하면 에 있는
/CodeBuild/
네임스페이스의 모든 암호를 해독할 권한이 서비스 역할에 포함됩니다. -
Buildspec
- 빌드 사양
-
다음 중 하나를 수행합니다.
-
소스 코드에 buildspec 파일이 있는 경우 Use a buildspec file(빌드 사양 파일 사용) 을 선택합니다. 기본적으로 CodeBuild는 소스 코드 루트 디렉터리
buildspec.yml
에 이름이 지정된 파일을 찾습니다. buildspec 파일이 다른 이름 또는 위치를 사용하는 경우 소스 루트의 경로를 Buildspec 이름(예:buildspec-two.yml
또는 )에 입력합니다configuration/buildspec.yml
. 빌드 사양 파일이 S3 버킷에 있는 경우 빌드 프로젝트와 동일한 AWS 리전에 있어야 합니다. 를 사용하여 buildspec 파일을 지정합니다ARN(예:arn:aws:s3:::
).<my-codebuild-sample2>
/buildspec.yml -
소스 코드에 buildspec 파일이 포함되어 있지 않거나, 소스 코드의 루트 디렉터리에 있는
buildspec.yml
파일의build
단계에 지정된 것과 다른 빌드 명령 세트를 실행하려는 경우 빌드 명령 삽입을 선택합니다. 빌드 명령의build
단계에서 실행하려는 명령을 입력합니다. 명령이 여러 개인 경우 각 명령을&&
로 구분합니다(예:mvn test && mvn package
). 다른 구문에서 명령을 실행하려는 경우 또는build
단계에 대해 특히 긴 명령 목록이 있는 경우에는 소스 코드 루트 디렉터리에buildspec.yml
파일을 추가하고, 이 파일에 명령을 추가한 다음, 소스 코드 루트 디렉터리에서 buildspec.yml 사용을 선택합니다.
자세한 정보는 buildspec 참조 단원을 참조하십시오.
-
배치 구성
빌드 그룹을 단일 작업으로 실행할 수 있습니다. 자세한 내용은 빌드를 일괄적으로 실행합니다. 단원을 참조하십시오.
- 배치 구성 정의
-
이 프로젝트에서 배치 빌드를 허용하려면 선택합니다.
- 배치 서비스 역할
-
배치 빌드에 대한 서비스 역할을 제공합니다.
다음 중 하나를 선택합니다.
-
배치 서비스 역할이 없는 경우 새 서비스 역할을 선택합니다. 서비스 역할에 새 역할의 이름을 입력합니다.
-
배치 서비스 역할이 있는 경우 기존 서비스 역할을 선택합니다. 서비스 역할에서 서비스 역할을 선택합니다.
배치 빌드는 배치 구성에 새로운 보안 역할을 도입합니다. 는 사용자를 대신하여
StartBuild
,StopBuild
및RetryBuild
작업을 호출하여 배치의 일부로 빌드를 실행할 수 CodeBuild 있어야 하므로 이 새 역할이 필요합니다. 고객은 다음과 같은 두 가지 이유로 빌드에 사용하는 것과 동일한 역할이 아닌 새 역할을 사용해야 합니다.-
빌드 역할
StartBuild
,StopBuild
및RetryBuild
권한을 부여하면 단일 빌드에서 buildspec을 통해 더 많은 빌드를 시작할 수 있습니다. -
CodeBuild 배치 빌드는 배치의 빌드에 사용할 수 있는 빌드 및 컴퓨팅 유형의 수를 제한하는 제한을 제공합니다. 빌드 역할에 이러한 권한이 있는 경우 빌드 자체가 이러한 제한을 우회할 수 있습니다.
-
- 배치에 허용되는 컴퓨팅 유형
-
배치에 허용되는 컴퓨팅 유형을 선택합니다. 해당하는 항목을 모두 선택합니다.
- 배치에 허용되는 최대 빌드 수
-
배치에 허용되는 최대 빌드 수를 입력합니다. 이 제한을 초과하는 배치는 실패합니다.
- 배치 제한 시간
-
배치 빌드가 완료되는 최대 시간을 입력합니다.
- 아티팩트 결합
-
배치의 모든 아티팩트를 단일 위치로 결합을 선택하면 배치의 모든 아티팩트가 단일 위치로 결합됩니다.
- 배치 보고서 모드
-
배치 빌드에 대해 원하는 빌드 상태 보고서 모드를 선택합니다.
참고
이 필드는 프로젝트 소스가 Bitbucket GitHub또는 GitHub Enterprise인 경우에만 사용할 수 있으며, 소스 에서 빌드 시작 및 완료를 선택한 경우 소스 공급자에게 빌드 상태를 보고합니다.
- 빌드 집계
-
배치의 모든 빌드 상태를 단일 상태 보고서로 통합하려면 선택합니다.
- 개별 빌드
-
배치에 있는 모든 빌드의 빌드 상태를 별도로 보고하려면 선택합니다.
아티팩트
- 유형
-
다음 중 하나를 수행합니다.
-
빌드 출력 결과물을 생성하지 않으려면 [No artifacts]를 선택합니다. 빌드 테스트만 실행 중이거나 Docker 이미지를 Amazon ECR리포지토리로 푸시하려는 경우 이 작업을 수행할 수 있습니다.
-
S3 버킷에 빌드 출력을 저장하려면 Amazon S3를 선택하고 다음 작업을 수행합니다.
-
빌드 출력 ZIP 파일 또는 폴더에 프로젝트 이름을 사용하려면 이름을 비워 둡니다. 그렇지 않으면 이름을 입력합니다. (ZIP파일을 출력하려는 경우 ZIP 파일 확장명을 지정하려면 ZIP 파일 이름 뒤에 포함해야 합니다.)
-
buildspec 파일에 지정된 이름으로 콘솔에서 지정한 이름을 재정의하려는 경우 의미 체계 버전 관리 사용을 선택합니다. buildspec 파일의 이름은 빌드 시 계산되며 Shell 명령 언어를 사용합니다. 예를 들어 결과물 이름이 항상 고유하도록 날짜와 시간을 결과물 이름에 추가할 수 있습니다. 고유한 결과물 이름을 사용하면 결과물을 덮어쓰지 않을 수 있습니다. 자세한 내용은 buildspec 구문 단원을 참조하십시오.
-
[Bucket name]에서 출력 버킷의 이름을 선택합니다.
-
이 절차의 앞부분에서 빌드 명령 삽입을 선택한 경우 출력 파일 의 경우 빌드 출력 파일 또는 폴더에 넣을 빌드의 ZIP 파일 위치를 입력합니다. 위치가 여러 개인 경우 각 위치를 쉼표로 구분합니다(예:
appspec.yml, target/my-app.jar
). 자세한 내용은 buildspec 구문의files
설명을 참조하십시오. -
빌드 아티팩트를 암호화하지 않으려면 Remove artifacts encryption(결과물 암호화 제거)을 선택합니다.
-
각각 원하는 보조 아티팩트 세트마다 다음과 같이 실행합니다.
-
Atrifact identifier(아티팩트 식별자)에서 128자 미만으로 영숫자와 밑줄만 포함된 값을 입력합니다.
-
Add artifact(아티팩트 추가)를 선택합니다.
-
이전 단계에 따라 보조 결과물을 구성합니다.
-
Save artifact(아티팩트 저장)를 선택합니다.
-
- 추가 구성
-
- 암호화 키
-
(선택 사항) 다음 중 하나를 수행하십시오.
-
계정에서 Amazon S3에 대한 AWS 관리형 키 를 사용하여 빌드 출력 아티팩트를 암호화하려면 암호화 키를 비워 둡니다. 이 값이 기본값입니다.
-
고객 관리형 키를 사용하여 빌드 출력 아티팩트를 암호화하려면 암호화 키 에 KMS 키ARN의 를 입력합니다.
arn:aws:kms:
형식을 사용합니다.region-ID
:account-ID
:key/key-ID
-
- 캐시 유형
Cache type(캐시 유형)에서 다음 중 하나를 선택합니다.
-
캐시를 사용하지 않으려면 [No cache]를 선택합니다.
-
Amazon S3 캐시를 사용하려면 Amazon S3를 선택하고 다음을 수행합니다.
-
버킷에서 캐시가 저장된 S3 버킷의 이름을 선택합니다.
-
(선택 사항) 캐시 경로 접두사에 Amazon S3 경로 접두사를 입력합니다. Cache path prefix(캐시 경로 접두사) 값은 디렉터리 이름과 비슷합니다. 따라서 캐시를 버킷의 동일한 디렉터리에 저장할 수 있습니다.
중요
경로 접두사 끝에 후행 슬래시(/)를 추가하지 마십시오.
-
-
로컬 캐시를 사용하려면 로컬을 선택한 다음 하나 이상의 로컬 캐시 모드를 선택해야 합니다.
참고
Docker 계층 캐시 모드는 Linux에서만 사용할 수 있습니다. 이 모드를 선택할 경우 프로젝트를 권한이 있는 모드에서 실행해야 합니다.
캐시를 사용하면 빌드 환경의 재사용 가능한 특정 부분이 캐시에 저장되고 빌드 전반에서 사용되기 때문에 상당한 빌드 시간을 절약할 수 있습니다. buildspec 파일에 캐시를 지정하는 것에 대한 자세한 정보는 buildspec 구문 단원을 참조하십시오. 캐싱에 대한 자세한 정보는 캐시 빌드를 통한 성능 향상을 참조하십시오.
-
로그
생성하려는 로그를 선택합니다. Amazon CloudWatch Logs, Amazon S3 로그 또는 둘 다를 생성할 수 있습니다.
- CloudWatch
-
Amazon CloudWatch Logs 로그를 원하는 경우:
- CloudWatch 로그
-
CloudWatch 로그 를 선택합니다.
- 그룹 이름
-
Amazon CloudWatch Logs 로그 그룹의 이름을 입력합니다.
- 스트림 이름
-
Amazon CloudWatch Logs 로그 스트림 이름을 입력합니다.
- S3
-
Amazon S3 로그를 원할 경우:
- S3 로그
-
S3 로그를 선택합니다.
- 버킷
-
로그에 대한 S3 버킷 이름을 선택합니다.
- 경로 접두사
-
로그의 접두사를 입력합니다.
- S3 로그 암호화 비활성화
-
S3 로그를 암호화하지 않으려면 선택합니다.
빌드 프로젝트 생성(AWS CLI)
AWS CLI 와 함께 를 사용하는 방법에 대한 자세한 내용은 섹션을 CodeBuild참조하세요명령줄 참조.
를 사용하여 CodeBuild 빌드 프로젝트를 생성하려면 형식이 JSON지정된 프로젝트 구조를 생성하고 구조를 입력한 AWS CLI다음 create-project
명령을 호출하여 프로젝트를 생성합니다.
JSON 파일 생성
--generate-cli-skeleton
옵션을 사용하여 create-project
명령을 사용하여 스켈레톤 JSON 파일을 생성합니다.
aws codebuild create-project --generate-cli-skeleton >
<json-file>
이렇게 하면 에서 지정한 경로와 JSON 파일 이름이 있는 파일이 생성됩니다.<json-file>
.
JSON 파일 채우기
다음과 같이 JSON 데이터를 수정하고 결과를 저장합니다.
{ "name": "
<project-name>
", "description": "<description>
", "source": { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>
", "gitCloneDepth": "<git-clone-depth>
", "buildspec": "<buildspec>
", "InsecureSsl": "<insecure-ssl>
", "reportBuildStatus": "<report-build-status>
", "buildStatusConfig": { "context": "<context>
", "targetUrl": "<target-url>
" }, "gitSubmodulesConfig": { "fetchSubmodules": "<fetch-submodules>
" }, "auth": { "type": "<auth-type>
", "resource": "<auth-resource>
" }, "sourceIdentifier": "<source-identifier>
" }, "secondarySources": [ { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>
", "gitCloneDepth": "<git-clone-depth>
", "buildspec": "<buildspec>
", "InsecureSsl": "<insecure-ssl>
", "reportBuildStatus": "<report-build-status>
", "auth": { "type": "<auth-type>
", "resource": "<auth-resource>
" }, "sourceIdentifier": "<source-identifier>
" } ], "secondarySourceVersions": [ { "sourceIdentifier": "<secondary-source-identifier>
", "sourceVersion": "<secondary-source-version>
" } ], "sourceVersion": "<source-version>"
, "artifacts": { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<artifacts-location>
", "path": "<artifacts-path>
", "namespaceType": "<artifacts-namespacetype>
", "name": "<artifacts-name>
", "overrideArtifactName": "<override-artifact-name>
", "packaging": "<artifacts-packaging>
" }, "secondaryArtifacts": [ { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<secondary-artifact-location>
", "path": "<secondary-artifact-path>
", "namespaceType": "<secondary-artifact-namespaceType>
", "name": "<secondary-artifact-name>
", "packaging": "<secondary-artifact-packaging>
", "artifactIdentifier": "<secondary-artifact-identifier>
" } ], "cache": { "type": "<cache-type>
", "location": "<cache-location>
", "mode": [ "<cache-mode>
" ] }, "environment": { "type": "LINUX_CONTAINER" | "LINUX_GPU_CONTAINER" | "ARM_CONTAINER" | "WINDOWS_SERVER_2019_CONTAINER" | "WINDOWS_SERVER_2022_CONTAINER", "image": "<image>
", "computeType": "BUILD_GENERAL1_SMALL" | "BUILD_GENERAL1_MEDIUM" | "BUILD_GENERAL1_LARGE" | "BUILD_GENERAL1_2XLARGE", "certificate": "<certificate>
", "environmentVariables": [ { "name": "<environmentVariable-name>
", "value": "<environmentVariable-value>
", "type": "<environmentVariable-type>
" } ], "registryCredential": [ { "credential": "<credential-arn-or-name>
", "credentialProvider": "<credential-provider>
" } ], "imagePullCredentialsType": "CODEBUILD" | "SERVICE_ROLE", "privilegedMode": "<privileged-mode>
" }, "serviceRole": "<service-role>
", "timeoutInMinutes":<timeout>
, "queuedTimeoutInMinutes":<queued-timeout>
, "encryptionKey": "<encryption-key>
", "tags": [ { "key": "<tag-key>
", "value": "<tag-value>
" } ], "vpcConfig": { "securityGroupIds": [ "<security-group-id>
" ], "subnets": [ "<subnet-id>
" ], "vpcId": "<vpc-id>
" }, "badgeEnabled": "<badge-enabled>
", "logsConfig": { "cloudWatchLogs": { "status": "<cloudwatch-logs-status>
", "groupName": "<group-name>
", "streamName": "<stream-name>
" }, "s3Logs": { "status": "<s3-logs-status>
", "location": "<s3-logs-location>
", "encryptionDisabled": "<s3-logs-encryption-disabled>
" } }, "fileSystemLocations": [ { "type": "EFS", "location": "<EFS-DNS-name-1>
:/<directory-path>
", "mountPoint": "<mount-point>
", "identifier": "<efs-identifier>
", "mountOptions": "<efs-mount-options>
" } ], "buildBatchConfig": { "serviceRole": "<batch-service-role>
", "combineArtifacts":<combine-artifacts>
, "restrictions": { "maximumBuildsAllowed":<max-builds>
, "computeTypesAllowed": [ "<compute-type>
" ] }, "timeoutInMins":<batch-timeout>
, "batchReportMode": "REPORT_AGGREGATED_BATCH" | "REPORT_INDIVIDUAL_BUILDS" }, "concurrentBuildLimit":<concurrent-build-limit>
}
다음을 바꿉니다.
이름
필수 사항입니다. 이 빌드 프로젝트의 이름입니다. 이 이름은 AWS 계정의 모든 빌드 프로젝트에서 고유해야 합니다.
description
선택 사항입니다. 이 빌드 프로젝트의 설명입니다.
source
필수 사항입니다. 이 빌드 프로젝트의 소스 코드 설정에 대한 정보가 포함된 ProjectSource 객체입니다. source
객체를 추가한 후에는 secondarySources를 사용해 소스를 최대 12개까지 더 추가할 수 있습니다. 이러한 설정에는 다음이 포함됩니다.
- source/type
-
필수 사항입니다. 빌드할 소스 코드가 포함된 리포지토리의 유형입니다. 유효한 값으로는 다음이 포함됩니다.
-
CODECOMMIT
-
CODEPIPELINE
-
GITHUB
-
GITHUB_ENTERPRISE
-
GITLAB
-
GITLAB_SELF_MANAGED
-
BITBUCKET
-
S3
-
NO_SOURCE
NO_SOURCE
를 사용할 경우 프로젝트에 소스가 없으므로 buildspec은 파일이 될 수 없습니다. 대신buildspec
속성을 사용하여 빌드 사양에 YAML형식이 지정된 문자열을 지정해야 합니다. 자세한 내용은 소스 없이 빌드 프로젝트 만들기 단원을 참조하십시오. -
- source/location
-
를 설정하지 않는 한 필수
<source-type>
CODEPIPELINE
으로 전송합니다. 지정한 리포지토리 유형의 소스 코드 위치입니다.-
CodeCommit의 경우 소스 코드와 buildspec 파일(예: )이 포함된 URL리포지토리에 HTTPS 복제합니다
https://git-codecommit.
.<region-id>
.amazonaws.com/v1/repos/<repo-name>
-
Amazon S3의 경우 빌드 입력 버킷 이름에 소스 코드와 빌드 사양이 포함된 ZIP 파일의 경로와 이름이 뒤따릅니다. 예:
-
입력 버킷의 루트에 있는 ZIP 파일의 경우:
.<bucket-name>
/<object-name>
.zip -
입력 버킷의 하위 폴더에 있는 ZIP 파일의 경우:
.<bucket-name>
/<subfoler-path>
/<object-name>
.zip
-
-
GitHub의 경우 소스 코드와 buildspec 파일이 포함된 URL리포지토리에 HTTPS 복제합니다. 에는 github.com 포함해야 URL 합니다. AWS 계정을 계정에 연결해야 합니다 GitHub . 이렇게 하려면 CodeBuild 콘솔을 사용하여 빌드 프로젝트를 생성합니다.
-
[Authorize application]을 선택합니다. ( GitHub 계정에 연결한 후에는 빌드 프로젝트 생성을 완료할 필요가 없습니다. CodeBuild 콘솔을 닫을 수 있습니다.)
-
-
GitHub 엔터프라이즈 서버의 경우 HTTP 또는 가 소스 코드와 buildspec 파일이 포함된 URL 리포지토리에 HTTPS 복제됩니다. 또한 Enterprise Server AWS 계정에 계정을 GitHub 연결해야 합니다. 이렇게 하려면 CodeBuild 콘솔을 사용하여 빌드 프로젝트를 생성합니다.
-
GitHub 엔터프라이즈 서버에서 개인 액세스 토큰을 생성합니다.
-
CodeBuild 프로젝트를 생성할 때 사용할 수 있도록 이 토큰을 클립보드에 복사합니다. 자세한 내용은 GitHub 도움말 웹 사이트의 명령줄에 대한 개인 액세스 토큰 생성을
참조하세요. -
콘솔을 사용하여 CodeBuild 프로젝트를 생성할 때 소스 의 소스 공급자 에서 GitHub 엔터프라이즈 를 선택합니다.
-
[Personal Access Token]에서 클리보드에 복사한 토큰을 붙여 넣습니다. 토큰 저장을 선택합니다. 이제 CodeBuild 계정이 GitHub Enterprise Server 계정에 연결됩니다.
-
-
GitLab 및 GitLab 자체 관리형의 경우 소스 코드와 buildspec 파일이 포함된 URL 리포지토리에 HTTPS 복제합니다. 를 사용하는 경우 GitLab에 gitlab.com 포함되어야 URL 합니다. GitLab 자체 관리형을 사용하는 경우 URL에 gitlab.com 포함할 필요가 없습니다. AWS 계정을 GitLab 또는 GitLab 자체 관리형 계정에 연결해야 합니다. 이렇게 하려면 콘솔을 CodeBuild 사용하여 빌드 프로젝트를 생성합니다.
-
개발자 도구 탐색 창에서 설정 , 연결 , 연결 생성을 차례로 선택합니다. 이 페이지에서 GitLab 또는 GitLab 자체 관리형 연결을 생성한 다음 에 연결을 GitLab선택합니다.
-
-
Bitbucket의 경우 소스 코드와 buildspec 파일이 포함된 URL리포지토리에 HTTPS 복제합니다. 에는 bitbucket.org 포함해야 URL 합니다. 또한 AWS 계정을 Bitbucket 계정에 연결해야 합니다. 이렇게 하려면 CodeBuild 콘솔을 사용하여 빌드 프로젝트를 생성합니다.
-
콘솔을 사용하여 Bitbucket에 연결(또는 재연결)하면 Bitbucket [Confirm access to your account] 페이지에서 [Grant access]를 선택합니다. (Bitbucket 계정에 연결한 후에는 빌드 프로젝트 생성을 완료할 필요가 없습니다. CodeBuild 콘솔을 닫을 수 있습니다.)
-
-
의 경우 에서 파이프라인을 생성할 때 파이프라인의 소스 단계에서 소스 코드 위치를 지정하므로
source
. CodePipeline ignores에location
대한 값을 CodePipeline지정하지 AWS CodePipeline마세요.
-
- 소스/gitCloneDepth
-
선택 사항입니다. 다운로드할 이력의 수준입니다. 최소값은 0입니다. 이 값이 0이거나, 25를 초과하거나, 지정되지 않은 경우 각 빌드 프로젝트에서 전체 이력이 다운로드됩니다. 소스 유형이 Amazon S3일 경우 이 값이 지원되지 않습니다.
- source/buildspec
-
선택 사항입니다. 사용할 빌드 사양 정의 또는 파일입니다. 이 값을 제공하지 않거나 빈 문자열로 설정하는 경우 소스 코드에 루트 디렉터리의
buildspec.yml
파일이 포함되어 있어야 합니다. 이 값이 설정된 경우 인라인 buildspec 정의, 기본 소스의 루트 디렉터리에 상대적인 대체 buildspec 파일의 경로 또는 S3 버킷의 경로가 될 수 있습니다. 버킷은 빌드 프로젝트와 동일한 AWS 리전에 있어야 합니다. 를 사용하여 buildspec 파일을 지정합니다ARN(예:arn:aws:s3:::
). 자세한 내용은 buildspec 파일 이름 및 스토리지 위치 단원을 참조하십시오.<my-codebuild-sample2>
/buildspec.yml - source/auth
-
가 빌드할 소스 코드에 액세스 CodeBuild 하기 위한 권한 부여 설정에 대한 정보를 포함합니다.
- 소스/인증/유형
-
필수 사항입니다. 사용할 권한 부여 유형입니다. 유효한 값은 다음과 같습니다.
-
OAUTH
-
CODECONNECTIONS
-
SECRETS_MANAGER
-
- 소스/인증/리소스
-
선택 사항입니다. 지정된 권한 부여 유형에 적용되는 리소스 값입니다. Secrets Manager ARN 또는 가 될 수 있습니다 CodeConnections ARN.
- 소스/reportBuildStatus
-
빌드의 시작 및 완료 상태를 소스 공급자에게 보낼지 여부를 지정합니다. GitHub, GitHub 엔터프라이즈 서버 또는 Bitbucket 이외의 소스 공급자로 이 값을 설정하면
invalidInputException
가 발생합니다.소스 공급자에게 빌드 상태를 보고하려면 소스 공급자와 연결된 사용자에게 리포지토리에 대한 쓰기 권한이 있어야 합니다. 사용자에게 쓰기 권한이 없는 경우 빌드 상태를 업데이트할 수 없습니다. 자세한 내용은 소스 공급자 액세스 단원을 참조하십시오.
- 소스/buildStatusConfig
-
CodeBuild 빌드 프로젝트가 소스 공급자에 빌드 상태를 보고하는 방법을 정의하는 정보가 포함되어 있습니다. 이 옵션은 소스 유형이
GITHUB
,GITHUB_ENTERPRISE
또는BITBUCKET
인 경우에만 사용됩니다.- 소스/buildStatusConfig/컨텍스트
-
Bitbucket 소스의 경우 이 파라미터는 Bitbucket 커밋 상태의
name
파라미터에 사용됩니다. GitHub 소스의 경우 이 파라미터는 GitHub 커밋 상태의context
파라미터에 사용됩니다.예를 들어, 에 환경 변수를 사용하여 빌드 번호와 웹후크 트리거가
context
CodeBuild 포함되도록 할 수 있습니다.AWS CodeBuild sample-project Build #$CODEBUILD_BUILD_NUMBER - $CODEBUILD_WEBHOOK_TRIGGER
그 결과 webhook 풀 요청 이벤트에 의해 트리거된 빌드 #24에 대해 다음과 같은 컨텍스트가 나타납니다.
AWS CodeBuild sample-project Build #24 - pr/8
- 소스/buildStatusConfig/targetUrl
-
Bitbucket 소스의 경우 이 파라미터는 Bitbucket 커밋 상태의
url
파라미터에 사용됩니다. GitHub 소스의 경우 이 파라미터는 GitHub 커밋 상태의target_url
파라미터에 사용됩니다.예를 들어 를
targetUrl
로 설정할 수https://aws.amazon.com/codebuild/
있으며 커밋 상태는 이 에 연결됩니다URL.<path to build>
에 CodeBuild 환경 변수를 포함하여 에 추가 정보를
targetUrl
추가할 수도 있습니다URL. 예를 들어 에 빌드 리전을 추가하려면 를 다음과targetUrl
같이 URL설정합니다."targetUrl": "https://aws.amazon.com/codebuild/
<path to build>
?region=$AWS_REGION"빌드 리전이
us-east-2
이면 다음과 같이 확장됩니다.https://aws.amazon.com/codebuild/
<path to build>
?region=us-east-2
- 소스/gitSubmodulesConfig
-
선택 사항입니다. Git 하위 모듈 구성에 대한 정보입니다. CodeCommit, GitHub, GitHub 엔터프라이즈 서버 및 Bitbucket에만 사용됩니다.
- 소스/gitSubmodulesConfig/fetchSubmodules
-
리포지토리에 Git 하위 모듈을 포함하려면
fetchSubmodules
를true
로 설정합니다. 포함된 Git 하위 모듈을 로 구성해야 합니다HTTPS.
- 소스/InsecureSsl
-
선택 사항입니다. GitHub 엔터프라이즈 서버에서만 사용됩니다. GitHub Enterprise Server 프로젝트 리포지토리에 연결하는 동안 TLS 경고를 무시
true
하려면 이 값을 로 설정합니다. 기본값은false
입니다.InsecureSsl
은 테스트 용도로만 사용해야 합니다. 프로덕션 환경에 사용하면 안 됩니다. - 소스/sourceIdentifier
-
프로젝트 소스의 사용자 정의 식별자입니다. 기본 소스의 경우 선택 사항입니다. 보조 소스에 필요합니다.
secondarySources
선택 사항입니다. 빌드 프로젝트의 보조 소스에 대한 정보가 포함된 ProjectSource 객체 배열입니다. 보조 소스는 12개까지 추가할 수 있습니다. secondarySources
객체는 source 객체에서 사용하는 것과 동일한 속성을 사용합니다. 보조 소스 객체에는 sourceIdentifier
가 필요합니다.
secondarySourceVersions
선택 사항입니다. ProjectSourceVersion 객체 배열입니다. 빌드 레벨에서 secondarySourceVersions
이 지정되어 있으면 그 버전이 이 버전보다 우선합니다.
sourceVersion
선택 사항입니다. 이 프로젝트에 대해 빌드할 빌드 입력의 버전입니다. 지정하지 않으면 최신 버전이 사용됩니다. 지정하면 다음 중 하나여야 합니다.
-
CodeCommit의 경우 사용할 커밋 ID, 브랜치 또는 Git 태그입니다.
-
GitHub의 경우 빌드하려는 소스 코드 버전에 해당하는 커밋 ID, 풀 요청 ID, 브랜치 이름 또는 태그 이름입니다. 풀 요청 ID가 지정된 경우
pr/pull-request-ID
형식을 사용해야 합니다(예:pr/25
). 브랜치 이름을 지정하면 브랜치의 HEAD 커밋 ID가 사용됩니다. 지정하지 않으면 기본 브랜치의 HEAD 커밋 ID가 사용됩니다. -
GitLab의 경우 커밋 ID, 풀 요청 ID, 브랜치 이름, 태그 이름 또는 참조 및 커밋 ID입니다. 자세한 내용은 소스 버전 샘플 포함 AWS CodeBuild 단원을 참조하십시오.
-
Bitbucket의 경우, 빌드하려는 소스 코드의 버전에 해당하는 커밋 ID, 분기 이름 또는 태그 이름입니다. 브랜치 이름이 지정되면 브랜치의 HEAD 커밋 ID가 사용됩니다. 지정하지 않으면 기본 브랜치의 HEAD 커밋 ID가 사용됩니다.
-
Amazon S3의 경우 사용할 빌드 입력 ZIP 파일을 나타내는 객체의 버전 ID입니다.
빌드 수준에서 sourceVersion
이 지정되어 있으면 (프로젝트 수준에서) 그 버전이 이 sourceVersion
보다 우선합니다. 자세한 내용은 소스 버전 샘플 포함 AWS CodeBuild 단원을 참조하십시오.
artifacts
필수 사항입니다. 이 빌드 프로젝트의 출력 아티팩트 설정에 대한 정보가 포함된 ProjectArtifacts 객체입니다. artifacts
객체를 추가한 후에는 secondaryArtifacts를 사용해 아티팩트를 최대 12개까지 더 추가할 수 있습니다. 이러한 설정에는 다음이 포함됩니다.
- artifacts/type
-
필수 사항입니다. 빌드 출력 결과물의 유형입니다. 유효한 값은 다음과 같습니다.
-
CODEPIPELINE
-
NO_ARTIFACTS
-
S3
-
- artifacts/location
-
S3
아티팩트 유형에만 사용됩니다. 다른 아티팩트 유형에는 사용되지 않습니다.사전 요구 사항에서 생성했거나 식별한 출력 버킷의 이름입니다.
- artifacts/path
-
S3
아티팩트 유형에만 사용됩니다. 다른 아티팩트 유형에는 사용되지 않습니다.ZIP 파일 또는 폴더를 배치할 출력 버킷의 에 있는 경로입니다. 에 값을 지정하지 않으면 및 를
path
CodeBuild 사용하여namespaceType
(지정된 경우) 빌드 출력 ZIP 파일 또는 폴더의 경로와 이름을name
결정합니다. 예를 들어path
에 대해MyPath
,name
에 대해MyArtifact.zip
을 를 지정하면 경로와 이름은MyPath/MyArtifact.zip
이 됩니다. - 아티팩트/namespaceType
-
S3
아티팩트 유형에만 사용됩니다. 다른 아티팩트 유형에는 사용되지 않습니다.빌드 출력 ZIP 파일 또는 폴더의 네임스페이스입니다. 유효한 값에는
BUILD_ID
및NONE
(이)가 있습니다.BUILD_ID
를 사용하여 빌드 출력 ZIP 파일 또는 폴더의 경로에 빌드 ID를 삽입합니다. 그렇지 않은 경우NONE
을 사용합니다. 에 값을 지정하지 않으면 및 를namespaceType
CodeBuild 사용하여path
(지정된 경우) 빌드 출력 ZIP 파일 또는 폴더의 경로와 이름을name
결정합니다. 예를 들어path
에 대해MyPath
,namespaceType
에 대해BUILD_ID
,name
에 대해MyArtifact.zip
을 지정하면 경로와 이름은MyPath/
이 됩니다.build-ID
/MyArtifact.zip - artifacts/name
-
S3
아티팩트 유형에만 사용됩니다. 다른 아티팩트 유형에는 사용되지 않습니다.내부의 빌드 출력 ZIP 파일 또는 폴더의 이름입니다
location
. 예를 들어path
에 대해MyPath
,name
에 대해MyArtifact.zip
을 를 지정하면 경로와 이름은MyPath/MyArtifact.zip
이 됩니다. - 아티팩트/overrideArtifactName
-
S3 아티팩트 유형에만 사용됩니다. 다른 아티팩트 유형에는 사용되지 않습니다.
선택 사항입니다.
true
로 설정할 경우 buildspec 파일의artifacts
블록에서 지정한 이름이name
을 재정의합니다. 자세한 내용은 에 대한 빌드 사양 참조 CodeBuild 단원을 참조하십시오. - artifacts/packaging
-
S3
아티팩트 유형에만 사용됩니다. 다른 아티팩트 유형에는 사용되지 않습니다.선택 사항입니다. 아티팩트를 패키징하는 방법을 지정합니다. 허용되는 값:
- NONE
-
빌드 아티팩트가 포함된 폴더를 생성합니다. 이것이 기본값입니다.
- ZIP
-
빌드 아티팩트가 포함된 ZIP 파일을 생성합니다.
secondaryArtifacts
선택 사항입니다. 빌드 프로젝트의 보조 아티팩트 설정에 대한 정보를 포함하는 ProjectArtifacts 객체 배열입니다. 보조 아티팩트는 최대 12개까지 추가할 수 있습니다. secondaryArtifacts
는 artifacts 객체에서 사용하는 것과 동일한 수의 설정을 사용합니다.
cache
필수 사항입니다. 이 빌드 프로젝트의 캐시 설정에 대한 정보가 포함된 ProjectCache 객체입니다. 자세한 내용은 캐시 빌드 단원을 참조하십시오.
환경
필수 사항입니다. 이 프로젝트의 빌드 환경 설정에 대한 정보가 포함된 ProjectEnvironment 객체입니다. 이러한 설정은 다음과 같습니다.
- environment/type
-
필수 사항입니다. 빌드 환경의 유형입니다. 자세한 내용은 CodeBuild API 참조 의 유형을 참조하세요.
- environment/image
-
필수 사항입니다. 이 빌드 환경에서 사용하는 도커 이미지 식별자입니다. 일반적으로 이 식별자는 다음과 같이 표현됩니다.
image-name
:tag
. 예를 들어 가 Docker 이미지를 관리하는 데 CodeBuild 사용하는 Docker 리포지토리에서 가 될 수 있습니다aws/codebuild/standard:5.0
. Docker Hub에서는maven:3.3.9-jdk-8
입니다. Amazon ECR에서
. 자세한 내용은 에서 제공하는 도커 이미지 CodeBuild 단원을 참조하십시오.account-id
.dkr.ecr.region-id
.amazonaws.com/your-Amazon-ECR-repo-name
:tag
- 환경/computeType
-
필수 사항입니다. 이 빌드 환경에서 사용하는 컴퓨팅 리소스를 지정합니다. 자세한 내용은 참조computeType의 섹션을 참조하세요. CodeBuild API
- environment/certificate
-
선택 사항입니다. PEM인코딩된 인증서ARN가 포함된 Amazon S3 버킷, 경로 접두사 및 객체 키의 . 객체 키는 .pem 파일 또는 PEM인코딩된 인증서가 포함된 .zip 파일일 수 있습니다. 예를 들어 Amazon S3 버킷 이름이
이고 경로 접두사는<my-bucket>
이고 객체 키 이름이<cert>
인 경우<certificate.pem>
certificate
에 허용되는 형식은
또는<my-bucket/cert/certificate.pem>
arn:aws:s3:::
입니다.<my-bucket/cert/certificate.pem>
- 환경/environmentVariables
-
선택 사항입니다. 이 빌드 환경에 지정하려는 환경 변수를 포함하는 EnvironmentVariable 객체 배열입니다. 각 환경 변수는
name
,value
,type
의name
,value
,type
을 포함하는 객체로 표현됩니다.콘솔과 AWS CLI 사용자는 모든 환경 변수를 볼 수 있습니다. 환경 변수의 가시성에 대한 문제가 없으면
name
및value
를 설정하고type
을PLAINTEXT
로 설정합니다.액세스 키 ID, AWS 보안 AWS 액세스 키 또는 암호와 같은 민감한 값을 가진 환경 변수를 Amazon EC2 Systems Manager 파라미터 스토어 또는 에 파라미터로 저장하는 것이 좋습니다 AWS Secrets Manager.
name
의 경우 저장된 파라미터에 참조할 에 대한 식별자 CodeBuild 를 설정합니다.Amazon EC2 Systems Manager 파라미터 스토어를 사용하는 경우 에 대해 파라미터의 이름을 파라미터 스토어에 저장된 것으로
value
설정합니다.type
를PARAMETER_STORE
으로 설정합니다. 이름이/CodeBuild/dockerLoginPassword
인 파라미터를 예제로 사용하여name
을LOGIN_PASSWORD
로 설정합니다.value
을/CodeBuild/dockerLoginPassword
으로 설정합니다.type
를PARAMETER_STORE
로 설정합니다.중요
Amazon EC2 Systems Manager 파라미터 스토어를 사용하는 경우 파라미터 이름
/CodeBuild/
(예: )으로 시작하는 파라미터를 저장하는 것이 좋습니다/CodeBuild/dockerLoginPassword
. CodeBuild 콘솔을 사용하여 Amazon EC2 Systems Manager에서 파라미터를 생성할 수 있습니다. 파라미터 생성을 선택하고 대화 상자에 표시되는 지시에 따릅니다. (이 대화 상자ARN의 KMS 키 에 대해 계정의 AWS KMS 키 의 를 지정할 수 있습니다. Amazon EC2 Systems Manager는 이 키를 사용하여 스토리지 중에 파라미터 값을 암호화하고 검색 중에 복호화합니다.) CodeBuild 콘솔을 사용하여 파라미터를 생성하는 경우 콘솔은 파라미터 이름을 저장할/CodeBuild/
때 로 시작합니다. 자세한 내용은 Amazon EC2 Systems Manager 사용 설명서의 Systems Manager 파라미터 스토어 및 Systems Manager 파라미터 스토어 콘솔 연습을 참조하세요.빌드 프로젝트가 Amazon EC2 Systems Manager 파라미터 스토어에 저장된 파라미터를 참조하는 경우 빌드 프로젝트의 서비스 역할이
ssm:GetParameters
작업을 허용해야 합니다. 이전에 새 서비스 역할을 선택한 경우 빌드 프로젝트의 기본 서비스 역할에 이 작업을 CodeBuild 포함합니다. Existing service role(기존 서비스 역할)을 선택한 경우에는 이 작업을 서비스 역할에 별도로 포함해야 합니다.빌드 프로젝트가 로 시작하지 않는 파라미터 이름으로 Amazon EC2 Systems Manager 파라미터 스토어에 저장된 파라미터를 참조
/CodeBuild/
하고 새 서비스 역할 을 선택한 경우, 로 시작하지 않는 파라미터 이름에 대한 액세스를 허용하도록 해당 서비스 역할을 업데이트해야 합니다/CodeBuild/
. 이는 서비스 역할이/CodeBuild/
로 시작하는 파라미터 이름에만 액세스할 수 있기 때문입니다.새 서비스 역할 을 선택하면 서비스 역할에 Amazon EC2 Systems Manager 파라미터 스토어의
/CodeBuild/
네임스페이스 아래에 있는 모든 파라미터를 복호화할 수 있는 권한이 포함됩니다.사용자가 설정한 환경 변수는 기존 환경 변수를 대체합니다. 예를 들어 도커 이미지에 값이
my_value
인MY_VAR
이라는 환경 변수가 이미 포함되어 있는데, 사용자가MY_VAR
환경 변수의 값을other_value
로 설정하면,my_value
가other_value
로 바뀝니다. 마찬가지로, 도커 이미지에 값이/usr/local/sbin:/usr/local/bin
인PATH
라는 환경 변수가 이미 포함되어 있는데, 사용자가PATH
환경 변수의 값을$PATH:/usr/share/ant/bin
으로 설정하면,/usr/local/sbin:/usr/local/bin
이$PATH:/usr/share/ant/bin
리터럴 값으로 바뀝니다.CODEBUILD_
로 시작하는 이름으로 환경 변수를 설정하지 마십시오. 이 접두사는 내부 전용으로 예약되어 있습니다.여러 위치에서 동일한 이름의 환경 변수가 정의되는 경우, 다음과 같이 값이 결정됩니다.
-
시작 빌드 작업 호출의 값이 가장 높은 우선 순위를 갖습니다.
-
빌드 프로젝트 정의의 값이 다음 우선 순위를 갖습니다.
-
buildspec 선언의 값이 가장 낮은 우선 순위를 갖습니다.
Secrets Manager를
value
사용하는 경우 파라미터 이름을 Secrets Manager에 저장된 항목으로 설정합니다.type
를SECRETS_MANAGER
으로 설정합니다. 이름이/CodeBuild/dockerLoginPassword
인 보안 암호를 예제로 사용하여name
을LOGIN_PASSWORD
로 설정합니다.value
을/CodeBuild/dockerLoginPassword
으로 설정합니다.type
를SECRETS_MANAGER
로 설정합니다.중요
Secrets Manager를 사용하는 경우 이름이
/CodeBuild/
로 시작하는 암호를 저장하는 것이 좋습니다(예:/CodeBuild/dockerLoginPassword
). 자세한 내용은 AWS Secrets Manager사용 설명서의 AWS Secrets Manager 이란? 섹션을 참조하세요.빌드 프로젝트가 Secrets Manager에 저장된 암호를 참조하는 경우 해당 빌드 프로젝트의 서비스 역할은
secretsmanager:GetSecretValue
작업을 허용해야 합니다. 이전에 새 서비스 역할을 선택한 경우 빌드 프로젝트의 기본 서비스 역할에 이 작업을 CodeBuild 포함합니다. Existing service role(기존 서비스 역할)을 선택한 경우에는 이 작업을 서비스 역할에 별도로 포함해야 합니다.빌드 프로젝트가
/CodeBuild/
로 시작되지 않는 보안 암호 이름으로 Secrets Manager에 저장된 암호를 참조하는 경우 새 서비스 역할을 선택하면/CodeBuild/
로 시작하지 않는 보안 암호 이름에 액세스할 수 있도록 해당 서비스 역할을 업데이트해야 합니다. 이는 서비스 역할이/CodeBuild/
로 시작하는 암호 이름에만 액세스할 수 있기 때문입니다.새 서비스 역할을 선택하면 에 있는
/CodeBuild/
네임스페이스의 모든 암호를 해독할 권한이 서비스 역할에 포함됩니다. -
- 환경/registryCredential
-
선택 사항입니다. 프라이빗 Docker 레지스트리에 대한 액세스를 제공하는 자격 증명을 지정하는 RegistryCredential 객체입니다.
- 환경/registryCredential/자격 증명
-
를 사용하여 생성된 보안 인증의 ARN 또는 이름을 지정합니다 AWS Managed Services. 현재 리전에 있는 자격 증명의 이름만 사용할 수 있습니다.
- 환경/registryCredential/credentialProvider
-
유일한 유효 값은
SECRETS_MANAGER
입니다.
이를 설정할 경우 다음과 같이 해야 합니다.
-
imagePullCredentials
를SERVICE_ROLE
로 설정해야 합니다. -
이미지는 큐레이션된 이미지 또는 Amazon ECR 이미지일 수 없습니다.
- 환경/imagePullCredentials유형
-
선택 사항입니다. 에서 빌드의 이미지를 가져오는 데 CodeBuild 사용하는 보안 인증 유형입니다. 두 가지 값을 사용할 수 있습니다.
- CODEBUILD
-
CODEBUILD
는 자체 보안 인증을 CodeBuild 사용하는 를 지정합니다. CodeBuild 서비스 보안 주체를 신뢰하려면 Amazon ECR리포지토리 정책을 편집해야 합니다. - SERVICE_ROLE
-
빌드 프로젝트의 서비스 역할을 CodeBuild 사용하는 를 지정합니다.
교차 계정 또는 프라이빗 레지스트리 이미지를 사용할 경우
SERVICE_ROLE
자격 증명을 사용해야 합니다. CodeBuild 큐레이션된 이미지를 사용할 때는CODEBUILD
보안 인증 정보를 사용해야 합니다. - 환경/privilegedMode
-
이 빌드 프로젝트를 사용하여 도커 이미지를 빌드하려는 경우에만
true
로 설정합니다. 그렇지 않으면 Docker 데몬과 상호 작용을 시도하는 모든 연결된 빌드가 실패합니다. 또한 빌드가 상호 작용할 수 있도록 Docker 데몬을 시작해야 합니다. 이를 수행하는 한 가지 방법은 다음 빌드 명령을 실행하여 buildspec 파일의install
단계에서 Docker 데몬을 초기화하는 것입니다. Docker 지원과 CodeBuild 함께 에서 제공하는 빌드 환경 이미지를 지정한 경우 이러한 명령을 실행하지 마십시오.참고
기본적으로 빌드가 아닌VPC 경우 Docker 데몬이 활성화됩니다. VPC 빌드에 Docker 컨테이너를 사용하려면 Docker Docs 웹 사이트의 런타임 권한 및 Linux 기능을
참조하고 권한 부여 모드를 활성화합니다. 또한 Windows는 권한 모드를 지원하지 않습니다. - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
serviceRole
필수 사항입니다. 서비스 역할ARN의 는 사용자를 대신하여 서비스와 상호 작용하는 데 CodeBuild 사용합니다(예: arn:aws:iam::
).account-id
:role/role-name
timeoutInMinutes
선택 사항입니다. 5~2160(36시간) 사이의 분 수로 CodeBuild, 완료되지 않으면 빌드가 중지됩니다. 지정하지 않을 경우 기본값인 60을 사용합니다. 제한 시간으로 인해 빌드가 CodeBuild 중지되었는지 여부와 중지된 시기를 확인하려면 batch-get-builds
명령을 실행합니다. 빌드가 중지되었는지 확인하려면 출력에서 FAILED
의 buildStatus
값을 살펴봅니다. 빌드가 시간 초과된 시간을 확인하려면 출력에서 TIMED_OUT
의 phaseStatus
와 연결된 endTime
값을 살펴봅니다.
queuedTimeoutIn분
선택 사항입니다. 5~480(8시간) 사이의 분 수로, 아직 대기열에 남아 있는 CodeBuild 경우 빌드가 중지됩니다. 지정하지 않을 경우 기본값인 60을 사용합니다.
encryptionKey
선택 사항입니다. 빌드 출력을 암호화하는 CodeBuild 데 AWS KMS key 사용되는 ARN의 별칭 또는 입니다. 별칭을 지정하는 경우 arn:aws:kms:
형식을 사용하고, 별칭이 있는 경우 region-ID
:account-ID
:key/key-ID
alias/
형식을 사용합니다. 지정하지 않으면 Amazon S3의 관리 AWS형 KMS 키가 사용됩니다.key-alias
tags
선택 사항입니다. 이 빌드 프로젝트와 연결할 태그를 제공하는 Tag 객체 배열입니다. 최대 50개의 태그를 지정할 수 있습니다. 이러한 태그는 CodeBuild 빌드 프로젝트 태그를 지원하는 모든 AWS 서비스에서 사용할 수 있습니다. 각 태그는 key
와 value
가 있는 객체로 표현됩니다.
vpcConfig
선택 사항입니다. 프로젝트의 VPC 구성에 대한 정보를 포함하는 VpcConfig 객체입니다. 자세한 내용은 Amazon Virtual Private 클라우드와 AWS CodeBuild 함께 사용 단원을 참조하십시오.
이러한 속성은 다음과 같습니다.
- vpcId
-
필수 사항입니다. 에서 CodeBuild 사용하는 VPC ID입니다. 이 명령을 실행하여 VPC IDs 리전의 모든 목록을 가져옵니다.
aws ec2 describe-vpcs --region
<region-ID>
- subnets
-
필수 사항입니다. 에서 사용하는 리소스를 IDs 포함하는 서브넷 배열입니다 CodeBuild. 이 명령을 실행하여 다음 를 가져옵니다IDs.
aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region
<region-ID>
- securityGroupIds
-
필수 사항입니다. 에서 의 리소스에 대한 액세스를 허용하는 CodeBuild 데 IDs 사용되는 보안 그룹의 배열입니다VPC. 이 명령을 실행하여 다음 를 가져옵니다IDs.
aws ec2 describe-security-groups --filters "Name=vpc-id,Values=
<vpc-id>
" --<region-ID>
badgeEnabled
선택 사항입니다. CodeBuild 프로젝트에 빌드 배지를 포함할지 여부를 지정합니다. 빌드 배지를 활성화하려면 true
로 설정하고, 그렇지 않으면 false
로 설정합니다. 자세한 내용은 를 사용하여 배지 샘플 제작 CodeBuild 단원을 참조하십시오.
logsConfig
이 빌드의 로그가 있는 위치에 대한 정보가 포함된 LogsConfig 객체입니다.
- logsConfig/cloudWatchLogs
-
로그를 로그로 푸시하는 방법에 대한 정보가 포함된 CloudWatchLogsConfig 객체 CloudWatch 입니다.
- logsConfig/s3Logs
-
Amazon S3LogsConfig로 Amazon S3 객체입니다.
fileSystemLocations
선택 사항입니다. Amazon EFS 구성에 대한 정보가 포함된 ProjectFileSystemsLocation 객체 배열입니다.
buildBatchConfig
선택 사항입니다. buildBatchConfig
객체는 프로젝트의 배치 빌드 구성 정보를 포함하는 ProjectBuildBatchConfig 구조입니다.
- buildBatchConfig/serviceRole
-
배치 빌드 프로젝트의 서비스 역할ARN입니다.
- buildBatchConfig/combineArtifacts
-
배치 빌드의 빌드 아티팩트를 단일 아티팩트 위치로 결합할지 여부를 지정하는 부울 값입니다.
- buildBatchConfig/제한/maximumBuildsAllowed
-
허용되는 최대 빌드 수입니다.
- buildBatchConfig/제한/computeTypesAllowed
-
배치 빌드에 허용되는 컴퓨팅 유형을 지정하는 문자열 배열입니다. 이러한 값은 빌드 환경 컴퓨팅 유형를 참조하세요.
- buildBatchConfig/timeoutInMinutes
-
배치 빌드를 완료해야 하는 최대 시간(분)입니다.
- buildBatchConfig/batchReportMode
-
배치 빌드를 위해 빌드 상태 보고서를 소스 제공자에게 보내는 방법을 지정합니다. 유효한 값으로는 다음이 포함됩니다.
REPORT_AGGREGATED_BATCH
-
(기본값) 모든 빌드 상태를 단일 상태 보고서로 집계합니다.
REPORT_INDIVIDUAL_BUILDS
-
각 개별 빌드에 대해 별도의 상태 보고서를 보냅니다.
concurrentBuildLimit
이 프로젝트에 허용된 최대 동시 실행 빌드 수입니다.
현재 빌드 수가 이 한도 이하인 경우에만 새 빌드가 시작됩니다. 현재 빌드 수가 이 한도에 도달하면 새 빌드가 제한되고 실행되지 않습니다.
프로젝트 생성
프로젝트를 생성하려면 JSON 파일을 전달하면서 create-project
명령을 다시 실행합니다.
aws codebuild create-project --cli-input-json file://
<json-file>
성공하면 콘솔 출력에 프로젝트 객체의 JSON 표현이 나타납니다. 이 데이터의 예는 CreateProject 응답 구문을 참조하세요.
빌드 프로젝트 이름을 제외한 모든 빌드 프로젝트 설정은 나중에 변경할 수 있습니다. 자세한 내용은 빌드 프로젝트 설정 변경(AWS CLI) 단원을 참조하십시오.
빌드 실행을 시작하려면 빌드 실행(AWS CLI) 단원을 참조하십시오.
소스 코드가 GitHub 리포지토리에 저장되어 있고 코드 변경이 리포지토리 CodeBuild 로 푸시될 때마다 소스 코드를 다시 빌드하려는 경우 섹션을 참조하세요빌드 실행 자동 시작(AWS CLI).
빌드 프로젝트 생성(AWS SDKs)
AWS CodeBuild 와 함께 를 사용하는 방법에 대한 자세한 내용은 섹션을 AWS SDKs참조하세요AWS SDK 및 도구 참조.
빌드 프로젝트 생성(AWS CloudFormation)
AWS CodeBuild 와 함께 를 사용하는 방법에 대한 자세한 내용은 AWS CloudFormation 사용 설명서의 에 대한 AWS CloudFormation 템플릿을 CodeBuild AWS CloudFormation참조하세요.