AWS CodeBuild
사용 설명서 (API 버전 2016-10-06)

CodeBuild에서 빌드 프로젝트 만들기

CodeBuild 콘솔, AWS CLI 또는 AWS SDK를 사용하여 빌드 프로젝트를 생성할 수 있습니다.

사전 조건

빌드 계획 섹션의 질문에 답하십시오.

빌드 프로젝트 만들기(콘솔)

  1. Open the AWS CodeBuild console at https://console.aws.amazon.com/codesuite/codebuild/home.

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

  3. 빌드 프로젝트 생성을 선택합니다.

  4. 프로젝트 구성에서 다음과 같이 합니다.

    Create build project(빌드 프로젝트 생성) 페이지의 Project configuration(프로젝트 구성)에 이 빌드 프로젝트의 이름을 입력합니다. 각 AWS 계정에서 빌드 프로젝트 이름은 고유해야 합니다. 또한 선택에 따라 빌드 프로젝트에 대한 설명을 포함하여 다른 사용자가 이 프로젝트의 용도를 이해하도록 도울 수 있습니다.

    프로젝트의 빌드 상태를 표시하고 삽입 가능하게 하려면 Build Badge(빌드 배지)를 선택합니다. 자세한 내용은 빌드 배지 샘플 단원을 참조하십시오.

    참고

    소스 공급자가 Amazon S3인 경우 빌드 배지가 적용되지 않습니다.

    Additional configuration(추가 구성)을 확장합니다.

    (선택 사항) 사용할 AWS 서비스를 지원할 태그의 이름 및 값을 태그에 입력합니다. [Add row]를 사용하여 태그를 추가합니다. 최대 50개의 태그를 추가할 수 있습니다.

  5. 소스에서 다음과 같이 합니다.

    소스 공급자에서 소스 코드 공급자 유형을 선택합니다. 아래 표를 사용하여 소스 공급자에 알맞은 유형을 선택하십시오.

    참고

    CodeBuild에서는 Bitbucket이 지원되지 않습니다.

    소스 공급자 Amazon S3 CodeCommit Bitbucket GitHub GitHub Enterprise

    버킷의 경우 소스 코드가 포함된 입력 버킷의 이름을 선택합니다.

    X

    S3 객체 키 또는 S3 폴더의 경우 소스 코드가 포함된 ZIP 파일의 이름 또는 폴더 경로를 입력합니다. S3 버킷의 모든 항목을 다운로드하려면 슬래시(/)를 입력합니다.

    X

    Connect using OAuth(OAuth를 사용하여 연결) 또는 Connect with a Bitbucket app password(Bitbucket 앱 암호를 사용하여 연결)를 선택하고 지침에 따라 Bitbucket에 연결 또는 다시 연결합니다.

    X

    Connect using OAuth(OAuth를 사용하여 연결) 또는 Connect with a GitHub personal access token(GitHub 개인용 액세스 토큰을 사용하여 연결)을 선택하고 지침에 따라 GitHub에 연결 또는 다시 연결하고 AWS CodeBuild에 대한 액세스 권한을 부여합니다.

    X

    개인용 액세스 토큰의 경우, GitHub Enterprise 샘플 단원의 개인용 액세스 토큰을 클립보드에 복사하는 방법을 참조하십시오. 토큰을 텍스트 필드에 붙여넣고, 토큰 저장을 선택합니다.

    참고

    개인용 액세스 토큰은 한 번만 입력하고 저장하면 됩니다. 그러면 CodeBuild에서 이후 모든 프로젝트에 이 토큰을 사용합니다.

    X

    리포지토리에서 사용할 리포지토리를 선택합니다.

    X

    Reference type(참조 유형)의 경우 브랜치, Git 태그 또는 커밋 ID를 선택하여 소스 코드 버전을 지정합니다. 자세한 내용은 CodeBuild를 사용한 소스 버전 샘플 단원을 참조하십시오.

    X

    리포지토리의 경우 퍼블릭 리포지토리를 사용할지 아니면 계정의 리포지토리를 사용할지를 선택합니다.

    X X

    리포지토리 URL은 퍼블릭 리포지토리를 사용할 때만 이용하십시오. URL에는 소스 공급자의 이름이 포함되어야 합니다. 예를 들어, Bitbucket URL에는 bitbucket.org가 포함되어야 합니다.

    X X

    소스 공급자가 Amazon S3라면 소스 버전에 입력 파일의 빌드를 나타내는 객체의 버전 ID를 입력합니다. 소스 공급자가 GitHub 또는 GitHub Enterprise인 경우 풀 요청, 브랜치, 커밋 ID, 태그 또는 참조 및 커밋 ID를 입력합니다. 소스 공급자가 Bitbucket라면 브랜치, 커밋 ID, 태그 또는 레퍼런스 및 커밋 ID를 입력합니다. 자세한 내용은 CodeBuild를 사용한 소스 버전 샘플 단원을 참조하십시오.

    X X X X

    Git clone 깊이를 선택하면 이력이 지정된 커밋 수로 잘린 부분 복제가 생성됩니다. 전체 복제가 필요할 경우 전체를 선택합니다.

    X X X X

    리포지토리에 Git 하위 모듈을 포함하려면 Use Git submodules(Git 하위 모듈 사용)를 선택합니다.

    X X X X

    빌드 시작 및 완료 상태가 소스 공급자에게 보고되도록 하려면 Report build statuses to source provider when your builds start and finish(빌드가 시작되고 완료될 때 소스 공급자에게 빌드 상태 보고)를 선택합니다.

    참고

    Webhook에 의해 트리거된 빌드의 상태는 항상 소스 공급자에게 보고됩니다.

    X X X

    코드 변경이 이 리포지토리로 푸시될 때마다 CodeBuild에서 소스 코드를 빌드하게 하려면 코드 변경이 이 리포지토리로 푸시될 때마다 다시 빌드를 선택합니다. Webhook는 Bitbucket, GitHub 또는 GitHub Enterprise 리포지토리에서만 허용됩니다.

    X X X

    코드 변경이 이 리포지토리로 푸시될 때마다 다시 빌드를 선택한 경우 이벤트 유형에서 빌드를 트리거할 이벤트를 선택합니다. 정규식을 사용하여 필터를 생성합니다. 필터를 지정하지 않으면 모든 업데이트, 풀 요청 생성 및 모든 푸시 이벤트가 빌드를 트리거합니다. 자세한 내용은 GitHub Webhook 이벤트 필터링 Bitbucket Webhook 이벤트 필터링 단원을 참조하십시오.

    X X X

    GitHub Enterprise 프로젝트 리포지토리에 연결되어 있는 동안 SSL 경고를 무시하려면 Insecure SSL(보안되지 않은 SSL)을 선택합니다.

    X

    각각 원하는 보조 소스마다 다음과 같이 실행합니다.

    1. Add source(소스 추가)를 선택합니다.

    2. Source identifier(소스 식별자)에서 128자 미만으로 영숫자와 밑줄만 포함된 값을 입력합니다.

    3. 소스 공급자에서 소스 코드 공급자 유형을 선택합니다. 이 단계 앞 부분의 표를 사용하여 보조 소스 공급자에 적합한 항목을 선택합니다.

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

    [Environment image]에서 다음 중 하나를 수행합니다.

    • AWS CodeBuild가 관리하는 도커 이미지를 사용하려면 Managed image(관리형 이미지)를 선택한 후 운영 체제, 런타임, 이미지이미지 버전에서 항목을 선택합니다. 사용 가능한 경우 환경 유형에서 항목을 선택합니다.

    • 다른 도커 이미지를 사용하려면 사용자 지정 이미지를 선택합니다. 환경 유형에서 ARM, Linux, Linux GPU, or 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, or Windows를 선택합니다. Image registry(이미지 레지스트리)에서 Other registry(다른 레지스트리)를 선택한 다음 프라이빗 도커 이미지에 대한 자격 증명 정보의 ARN을 입력합니다. 자격 증명은 Secrets Manager에서 생성해야 합니다. 자세한 내용은 AWS Secrets Manager란 무엇입니까?를 참조하십시오.

    (선택 사항) 이 빌드 프로젝트를 사용하여 Docker 이미지를 빌드하려는 경우 및 선택한 빌드 환경 이미지가 Docker 지원을 통해 CodeBuild에서 제공하지 않는 경우에만 권한이 있음을 선택합니다. 그렇지 않으면 Docker 데몬과 상호 작용을 시도하는 모든 연결된 빌드가 실패합니다. 또한 빌드가 상호 작용할 수 있도록 Docker 데몬을 시작해야 합니다. 이를 수행하는 한 가지 방법은 다음 빌드 명령을 실행하여 빌드 사양의 install 단계에서 Docker 데몬을 초기화하는 것입니다. 선택한 빌드 환경 이미지가 Docker 지원을 통해 CodeBuild에서 제공되지 않는 경우 이 명령을 실행하지 마십시오.

    - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay& - timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"

    서비스 역할에서 다음 중 하나를 수행합니다.

    • CodeBuild 서비스 역할이 없는 경우 New service role(새 서비스 역할)을 선택합니다. 역할 이름에 새 역할의 이름을 입력합니다.

    • CodeBuild 서비스 역할이 있는 경우 Existing service role(기존 서비스 역할)을 선택합니다. 역할 ARN에서 서비스 역할을 선택합니다.

    참고

    콘솔을 사용하여 빌드 프로젝트를 생성하거나 업데이트하는 경우, 이와 동시에 CodeBuild 서비스 역할을 만들 수 있습니다. 기본적으로 역할은 해당 빌드 프로젝트에서만 작동합니다. 콘솔을 사용하여 이 서비스 역할을 다른 빌드 프로젝트와 연결하는 경우 다른 빌드 프로젝트에서 작동하도록 역할이 업데이트됩니다. 하나의 서비스 역할은 최대 10개의 빌드 프로젝트에서 작동할 수 있습니다.

    Additional configuration(추가 구성)을 확장합니다.

    (선택 사항) 제한 시간에, 빌드가 완료되지 않는 경우 CodeBuild가 해당 빌드를 중지할 제한 시간으로 5분에서 480분(8시간) 사이의 값을 지정합니다. [hours] 및 [minutes]가 비어 있는 경우 기본값인 60분이 사용됩니다.

    VPC에서 다음 중 하나를 수행합니다.

    • 프로젝트에 VPC를 사용하지 않으려면 VPC 없음을 선택합니다.

    • CodeBuild를 사용하여 VPC에서 작업을 수행하려는 경우:

      • VPC에서 CodeBuild가 사용하는 VPC ID를 선택합니다.

      • VPC 서브넷에서 CodeBuild가 사용하는 리소스가 포함된 서브넷을 선택합니다.

      • VPC 보안 그룹에서 CodeBuild가 VPC의 리소스에 대한 액세스를 허용하기 위해 사용하는 보안 그룹을 선택합니다.

    자세한 정보는 CodeBuild을 Amazon Virtual Private Cloud와 함께 사용 단원을 참조하십시오.

    [Compute]에서 사용 가능한 옵션 중 하나를 선택합니다.

    환경 변수에서, 사용할 빌드의 각 환경 변수에 대해 이름 및 값을 입력하고 유형을 선택합니다. 환경 변수 추가를 사용하여 환경 변수를 추가합니다.

    참고

    CodeBuild는 AWS 리전의 환경 변수를 자동으로 설정합니다. 해당 변수를 buildspec.yml에 포함하지 않는 경우 다음 환경 변수를 설정해야 합니다.

    • AWS_ACCOUNT_ID

    • IMAGE_REPO_NAME

    • IMAGE_TAG

    다른 사용자는 CodeBuild 콘솔 및 AWS CLI를 사용하여 환경 변수를 확인할 수 있습니다. 환경 변수의 가시성에 대한 문제가 없다면 [Name] 및 [Value] 필드를 설정한 다음 [Type]을 [Plaintext]로 설정합니다.

    AWS 액세스 키 ID, AWS 보안 액세스 키 또는 암호와 같은 중요한 값을 가진 환경 변수는 Amazon EC2 Systems Manager 파라미터 스토어 또는 AWS Secrets Manager에 파라미터로 저장하는 것이 좋습니다.

    Amazon EC2 Systems Manager 파라미터 스토어를 사용하는 경우 유형에서 파라미터를 선택합니다. 이름에 CodeBuild가 참조할 식별자를 입력합니다. 에 Amazon EC2 Systems Manager 파라미터 스토어에 저장되는 파라미터의 이름을 입력합니다. 예를 들어 /CodeBuild/dockerLoginPassword라는 이름의 파라미터를 사용하여 유형에서 파라미터를 선택합니다. 이름LOGIN_PASSWORD를 입력합니다. [Value]에 /CodeBuild/dockerLoginPassword를 입력합니다.

    중요

    Amazon EC2 Systems Manager 파라미터 스토어를 사용하는 경우 /CodeBuild/로 시작되는 파라미터 이름(예: /CodeBuild/dockerLoginPassword)으로 파라미터를 저장하는 것이 좋습니다. CodeBuild 콘솔을 사용하여 Amazon EC2 Systems Manager에서 파라미터를 만들 수 있습니다. 파라미터 생성을 선택하고 대화 상자에 표시되는 지시에 따릅니다. 대화 상자의 KMS 키에 해당 계정의 AWS KMS 키에 대한 ARN을 지정할 수 있습니다. Amazon EC2 Systems Manager는 이 키를 사용하여 저장 시 파라미터의 값을 암호화하고 검색 시 암호를 해독합니다. CodeBuild 콘솔을 사용하여 파라미터를 만드는 경우 콘솔은 /CodeBuild/라는 이름의 파라미터가 저장될 때 이를 시작합니다. 자세한 정보는 Amazon EC2 Systems Manager 사용 설명서Systems Manager 파라미터 스토어Systems Manager 파라미터 스토어 콘솔 연습을 참조하십시오.

    빌드 프로젝트가 Amazon EC2 Systems Manager 파라미터 스토어에 저장된 파라미터를 참조하는 경우 해당 빌드 프로젝트의 서비스 역할은 ssm:GetParameters 작업을 허용해야 합니다. 앞에서 New service role(새 서비스 역할)을 선택한 경우에는 CodeBuild는 빌드 프로젝트의 기본 서비스 역할에 이 작업을 포함합니다. Existing service role(기존 서비스 역할)을 선택한 경우에는 이 작업을 서비스 역할에 별도로 포함해야 합니다.

    빌드 프로젝트가 /CodeBuild/로 시작되지 않는 파라미터 이름으로 Amazon EC2 Systems Manager 파라미터 스토어에 저장된 파라미터를 참조하는 경우 New service role(새 서비스 역할)을 선택하면 /CodeBuild/로 시작하지 않는 파라미터 이름에 액세스할 수 있도록 해당 서비스 역할을 업데이트해야 합니다. 이는 서비스 역할이 /CodeBuild/로 시작하는 파라미터 이름에만 액세스할 수 있기 때문입니다.

    New service role(새 서비스 역할)을 선택하면 Amazon EC2 Systems Manager 파라미터 스토어에 있는 /CodeBuild/ 네임스페이스의 모든 파라미터를 해독할 권한이 서비스 역할에 포함됩니다.

    사용자가 설정한 환경 변수는 기존 환경 변수를 대체합니다. 예를 들어 Docker 이미지에 값이 my_valueMY_VAR이라는 환경 변수가 이미 포함되어 있는데, 사용자가 MY_VAR 환경 변수의 값을 other_value로 설정하면, my_valueother_value로 바뀝니다. 마찬가지로, Docker 이미지에 값이 /usr/local/sbin:/usr/local/binPATH라는 환경 변수가 이미 포함되어 있는데, 사용자가 PATH 환경 변수의 값을 $PATH:/usr/share/ant/bin으로 설정하면, /usr/local/sbin:/usr/local/bin$PATH:/usr/share/ant/bin 리터럴 값으로 바뀝니다.

    CODEBUILD_로 시작하는 이름으로 환경 변수를 설정하지 마십시오. 이 접두사는 내부 전용으로 예약되어 있습니다.

    여러 위치에서 동일한 이름의 환경 변수가 정의되는 경우, 다음과 같이 값이 결정됩니다.

    • 시작 빌드 작업 호출의 값이 가장 높은 우선 순위를 갖습니다.

    • 빌드 프로젝트 정의의 값이 다음 우선 순위를 갖습니다.

    • 빌드 사양 선언의 값이 가장 낮은 우선 순위를 갖습니다.

    Secrets Manager를 사용하는 경우 유형에서 Secrets Manager를 선택합니다. 이름에 CodeBuild가 참조할 식별자를 입력합니다. secret-id:json-key:version-stage:version-id 패턴을 사용하여 reference-key를 입력합니다. 자세한 정보는 Buildspec 파일의 Secrets Manager 참조 키 단원을 참조하십시오.

    중요

    Secrets Manager를 사용하는 경우 이름이 /CodeBuild/로 시작하는 암호를 저장하는 것이 좋습니다(예: /CodeBuild/dockerLoginPassword). 자세한 내용은 AWS Secrets Manager 사용 설명서AWS Secrets Manager란 무엇입니까?를 참조하십시오.

    빌드 프로젝트가 Secrets Manager에 저장된 암호를 참조하는 경우 해당 빌드 프로젝트의 서비스 역할은 secretsmanager:GetSecretValue 작업을 허용해야 합니다. 앞에서 New service role(새 서비스 역할)을 선택한 경우에는 CodeBuild는 빌드 프로젝트의 기본 서비스 역할에 이 작업을 포함합니다. Existing service role(기존 서비스 역할)을 선택한 경우에는 이 작업을 서비스 역할에 별도로 포함해야 합니다.

    빌드 프로젝트가 /CodeBuild/로 시작되지 않는 암호 이름으로 Secrets Manager에 저장된 암호를 참조하는 경우 New service role(새 서비스 역할)을 선택하면 /CodeBuild/로 시작하지 않는 암호 이름에 액세스할 수 있도록 해당 서비스 역할을 업데이트해야 합니다. 이는 서비스 역할이 /CodeBuild/로 시작하는 암호 이름에만 액세스할 수 있기 때문입니다.

    New service role(새 서비스 역할)을 선택하면 Secrets Manager에 있는 /CodeBuild/ 네임스페이스의 모든 암호를 해독할 권한이 생성된 서비스 역할에 포함됩니다.

  7. Buildspec에서 다음과 같이 합니다.

    빌드 사양에서 다음 중 하나를 수행합니다.

    • 소스 코드에 buildspec 파일이 있는 경우 Use a buildspec file(빌드 사양 파일 사용) 을 선택합니다.

    • 소스 코드에 buildspec 파일이 포함되어 있지 않거나, 소스 코드의 루트 디렉터리에 있는 buildspec.yml 파일의 build 단계에 지정된 것과 다른 빌드 명령 세트를 실행하려는 경우 빌드 명령 삽입을 선택합니다. 빌드 명령build 단계에서 실행하려는 명령을 입력합니다. 명령이 여러 개인 경우 각 명령을 &&로 구분합니다(예: mvn test && mvn package). 다른 구문에서 명령을 실행하려는 경우 또는 build 구문에 특히 긴 명령 목록이 있는 경우에는 소스 코드 루트 디렉터리에 buildspec.yml 파일을 추가하고, 이 파일에 명령을 추가한 다음, 소스 코드 루트 디렉터리에서 buildspec.yml 사용을 선택합니다.

    자세한 정보는 빌드 사양 참조 단원을 참조하십시오.

  8. 결과물에서 다음과 같이 합니다.

    유형에서 다음 중 하나를 수행합니다.

    • 빌드 출력 결과물을 생성하지 않으려면 [No artifacts]를 선택합니다. 빌드 테스트만 실행하고 있는 경우 또는 Amazon ECR 리포지토리에 Docker 이미지를 푸시하려는 경우에 이럴 수 있습니다.

    • Amazon S3 버킷에 빌드 출력을 저장하려면 Amazon S3를 선택하고 다음 작업을 수행합니다.

      • 빌드 출력 ZIP 파일이나 폴더에 프로젝트 이름을 사용하려는 경우 이름을 비워 둡니다. 그렇지 않으면 이름을 입력합니다. (ZIP 파일을 출력하고 ZIP 파일에 파일 확장명을 넣으려는 경우, ZIP 파일 이름 뒤에 이를 포함하십시오.)

      • buildspec 파일에 지정된 이름으로 콘솔에서 지정한 이름을 재정의하려는 경우 의미 체게 버전 관리 사용을 선택합니다. buildspec 파일의 이름은 빌드 시 계산되며 Shell 명령 언어를 사용합니다. 예를 들어 결과물 이름이 항상 고유하도록 날짜와 시간을 결과물 이름에 추가할 수 있습니다. 고유한 결과물 이름을 사용하면 결과물을 덮어쓰지 않을 수 있습니다. 자세한 정보는 빌드 사양 구문 단원을 참조하십시오.

      • [Bucket name]에서 출력 버킷의 이름을 선택합니다.

      • 이 절차의 앞부분에서 빌드 명령 삽입을 선택한 경우 출력 파일에 빌드 출력 ZIP 파일 또는 폴더에 넣으려는 빌드의 파일 위치를 입력합니다. 위치가 여러 개인 경우 각 위치를 쉼표로 구분합니다(예: appspec.yml, target/my-app.jar). 자세한 내용은 빌드 사양 구문files 설명을 참조하십시오.

      • 빌드 결과물을 암호화하지 않으려면 Remove artifacts encryption(결과물 암호화 제거)을 선택합니다.

    각각 원하는 보조 아티팩트 세트마다 다음과 같이 실행합니다.

    1. Atrifact identifier(아티팩트 식별자)에서 128자 미만으로 영숫자와 밑줄만 포함된 값을 입력합니다.

    2. Add artifact(아티팩트 추가)를 선택합니다.

    3. 이전 단계에 따라 보조 결과물을 구성합니다.

    4. Save artifact(아티팩트 저장)를 선택합니다.

    Additional configuration(추가 구성)을 확장합니다.

    (선택 사항) [Encryption key]에서 다음 중 하나를 수행합니다.

    • 계정의 Amazon S3에 AWS 관리형 CMK(고객 관리형 키)를 사용하여 빌드 출력 아티팩트를 암호화하려면 암호화 키를 비워 둡니다. 이 값이 기본값입니다.

    • 고객 관리형 CMK를 사용하여 빌드 출력 결과물을 암호화하려면 암호화 키에 CMK의 ARN을 입력합니다. arn:aws:kms:region-ID:account-ID:key/key-ID 형식을 사용합니다.

    Cache type(캐시 유형)에서 다음 중 하나를 선택합니다.

    • 캐시를 사용하지 않으려면 [No cache]를 선택합니다.

    • Amazon S3 캐시를 사용하려면 Amazon S3를 선택하고 다음을 수행합니다.

      • 버킷에서 캐시가 저장된 Amazon S3 버킷의 이름을 선택합니다.

      • (선택 사항) Cache path prefix(캐시 경로 접두사)에 Amazon S3 경로 접두사를 입력합니다. Cache path prefix(캐시 경로 접두사) 값은 디렉터리 이름과 비슷합니다. 따라서 캐시를 버킷의 동일한 디렉터리에 저장할 수 있습니다.

        중요

        경로 접두사 끝에 후행 슬래시(/)를 추가하지 마십시오.

    • 로컬 캐시를 사용하려면 로컬을 선택한 다음 하나 이상의 로컬 캐시 모드를 선택해야 합니다.

      참고

      Docker 계층 캐시 모드는 Linux에서만 사용할 수 있습니다. 이 모드를 선택할 경우 프로젝트를 권한이 있는 모드에서 실행해야 합니다.

    캐시를 사용하면 빌드 환경의 재사용 가능한 특정 부분이 캐시에 저장되고 빌드 전반에서 사용되기 때문에 상당한 빌드 시간을 절약할 수 있습니다. buildspec 파일에 캐시를 지정하는 것에 대한 자세한 정보는 빌드 사양 구문 단원을 참조하십시오. 캐싱에 대한 자세한 정보는 CodeBuild에서 캐싱 구축을 참조하십시오.

  9. 로그에서 생성하려는 로그를 선택합니다. Amazon CloudWatch Logs 로그나 Amazon S3 로그 또는 둘 다 생성할 수 있습니다.

    Amazon CloudWatch Logs 로그를 생성하려는 경우 다음을 수행합니다.

    • CloudWatch 로그를 선택합니다.

    • 그룹 이름에 Amazon CloudWatch Logs 로그 그룹 이름을 입력합니다.

    • 스트림 이름에 Amazon CloudWatch Logs 로그 스트림 이름을 입력합니다.

    Amazon S3 로그를 생성하려는 경우 다음을 수행합니다.

    • S3 로그를 선택합니다.

    • 버킷에서 로그에 대한 S3 버킷 이름을 선택합니다.

    • 경로 접두사에 로그의 접두사를 입력합니다.

    (선택 사항) 이 절차의 앞부분에서 결과물유형Amazon S3를 선택했다면 Artifacts packaging(결과물 패키지)에서 다음 중 하나를 수행합니다.

    • CodeBuild가 빌드 출력을 포함하는 ZIP 파일을 생성하도록 하려면 Zip을 선택합니다.

    • CodeBuild가 빌드 출력을 포함하는 폴더를 생성하도록 하려면 없음을 선택합니다. (이 값이 기본값입니다.)

    • S3 로그를 암호화하지 않으려면 Remove S3 log encryption(S3 로그 암호화 제거)을 선택합니다.

  10. 빌드 프로젝트 생성을 선택합니다.

  11. 검토 페이지에서 빌드 시작을 선택합니다.

빌드 프로젝트 만들기(AWS CLI)

AWS CLI와 CodeBuild를 함께 사용하는 방법에 대한 내용은 명령줄 레퍼런스 단원을 참조하십시오.

  1. create-project 명령을 실행합니다.

    aws codebuild create-project --generate-cli-skeleton

    JSON 형식 데이터가 출력에 표시됩니다. AWS CLI가 설치된 로컬 컴퓨터 또는 인스턴스의 위치에 있는 파일(예: create-project.json)에 데이터를 복사합니다. 복사된 데이터를 다음과 같이 수정하고 결과를 저장합니다.

    { "name": "project-name", "description": "description", "source": { "type": "source-type", "location": "source-location", "gitCloneDepth": "gitCloneDepth", "buildspec": "buildspec", "InsecureSsl": "InsecureSsl", "reportBuildStatus": reportBuildStatus", "gitSubmodulesConfig": { "fetchSubmodules": "fetchSubmodules" }, "auth": { "type": "auth-type", "resource": "resource" } }, ”sourceVersion”: “source-version”, “secondarySourceVersions”: { “sourceIdentifier”: ”secondary-source-identifier”, “sourceVersion”: ”secondary-source-version” }, "artifacts": { "type": "artifacts-type", "location": "artifacts-location", "path": "path", "namespaceType": "namespaceType", "name": "artifacts-name", "overrideArtifactName": "override-artifact-name", "packaging": "packaging" }, "cache": { "type": "cache-type", "location": "cache-location", "mode": [ "cache-mode" ] }, "logsConfig": { "cloudWatchLogs": { "status": "cloudwatch-logs-status", "groupName": "group-name", "streamName": "stream-name" } "s3Logs": { "status": "s3-logs-status", "location": "s3-logs-location", "encryptionDisabled": "s3-logs-encryptionDisabled" } } "secondaryArtifacts": [ { "type": "artifacts-type", "location": "artifacts-location", "path": "path", "namespaceType": "namespaceType", "name": "artifacts-name", "packaging": "packaging", "artifactIdentifier": "artifact-identifier" } ] , "secondarySources": [ { "type": "source-type", "location": "source-location", "gitCloneDepth": "gitCloneDepth", "buildspec": "buildspec", "InsecureSsl": "InsecureSsl", "reportBuildStatus": "reportBuildStatus", "auth": { "type": "auth-type", "resource": "resource" }, "sourceIdentifier": "source-identifier" } ], "serviceRole": "serviceRole", "vpcConfig": { "securityGroupIds": [ "security-group-id" ], "subnets": [ "subnet-id" ], "vpcId": "vpc-id" }, "timeoutInMinutes": timeoutInMinutes, "encryptionKey": "encryptionKey", "tags": [ { "key": "tag-key", "value": "tag-value" } ], "environment": { "type": "environment-type", "image": "image", "computeType": "computeType", "certificate": "certificate", "environmentVariables": [ { "name": "environmentVariable-name", "value": "environmentVariable-value", "type": "environmentVariable-type" } ], "registryCredential": [ { "credential": "credential-arn-or-name", "credentialProvider": "credential-provider" } ], "imagePullCredentialsType": "imagePullCredentialsType-value, "privilegedMode": "privilegedMode" }, "badgeEnabled": "badgeEnabled" }

    다음을 바꿉니다.

    • project-name: 필수 값입니다. 이 빌드 프로젝트의 이름입니다. 이 이름은 AWS 계정에 있는 모든 빌드 프로젝트에서 고유해야 합니다.

    • description: 선택적 값입니다. 이 빌드 프로젝트의 설명입니다.

    • 필수 source 객체의 경우, 이 빌드 프로젝트의 소스 코드 설정에 대한 정보입니다. source 객체를 추가한 후에는 CodeBuild secondarySources 객체를 사용해 소스를 최대 12개까지 더 추가할 수 있습니다. 이러한 설정에는 다음이 포함됩니다.

      • source-type: 필수 값입니다. 빌드할 소스 코드가 포함된 리포지토리의 유형입니다. 유효한 값에는 CODECOMMIT, CODEPIPELINE, GITHUB, GITHUB_ENTERPRISE, BITBUCKET, S3NO_SOURCE가 있습니다. NO_SOURCE를 사용할 경우 buildspec은 프로젝트에 소스가 없으므로 파일이 될 수 없습니다. 대신에 buildspec 속성을 사용하여 buildspec에 대해 YAML 형식이 지정된 문자열을 지정해야 합니다. 자세한 내용은 소스 샘플이 없는 프로젝트 단원을 참조하십시오.

      • source-location: 필수 값입니다(source-typeCODEPIPELINE으로 설정하지 않은 경우). 지정한 리포지토리 유형의 소스 코드 위치입니다.

        • CodeCommit의 경우 HTTPS가 소스 코드 및 빌드 사양을 포함하는 리포지토리에 URL을 복제합니다(예: https://git-codecommit.region-id.amazonaws.com/v1/repos/repo-name).

        • Amazon S3의 경우, 빌드 입력 버킷 이름 다음에 슬래시(/)가 나오고 그 다음에 소스 코드 및 빌드 사양을 포함하는 ZIP 파일 이름이 나옵니다(예: bucket-name/object-name.zip). 이 연습에서는 ZIP 파일이 빌드 입력 버킷의 루트에 있다고 가정합니다. (ZIP 파일이 버킷 내부의 폴더에 있는 경우 대신 bucket-name/path/to/object-name.zip을 사용하십시오.)

        • GitHub의 경우 HTTPS가 소스 코드 및 빌드 사양을 포함하는 리포지토리에 URL을 복제합니다. URL에 "github.com"이 포함되어야 합니다. AWS 계정을 GitHub 계정에 연결해야 합니다. 이렇게 하려면 CodeBuild 콘솔을 사용하여 빌드 프로젝트를 생성합니다.

          1. 콘솔을 사용하여 GitHub에 연결(또는 재연결)하면 GitHub 애플리케이션 승인 페이지의 조직 액세스에서 CodeBuild가 액세스할 수 있게 하려는 각 리포지토리 옆의 액세스 요청을 선택합니다.

          2. [Authorize application]을 선택합니다. (GitHub 계정에 연결했으면 빌드 프로젝트 만들기를 완료하지 않아도 됩니다. CodeBuild 콘솔을 닫을 수 있습니다.)

        • GitHub Enterprise의 경우 HTTP 또는 HTTPS가 소스 코드 및 빌드 사양을 포함하는 리포지토리에 URL을 복제합니다. 또한 AWS 계정을 GitHub Enterprise 계정에도 연결해야 합니다. 이렇게 하려면 CodeBuild 콘솔을 사용하여 빌드 프로젝트를 생성합니다.

          1. GitHub Enterprise에서 개인용 액세스 토큰을 생성합니다.

          2. CodeBuild 프로젝트를 생성할 때 사용할 수 있도록 이 토큰을 클립보드에 복사합니다. 자세한 내용은 GitHub Help 웹 사이트에서 Creating a Personal Access Token in GitHub Enterprise를 참조하십시오.

          3. 콘솔을 사용하여 CodeBuild 프로젝트를 생성하는 경우, 소스소스 공급자에서 GitHub Enterprise를 선택합니다.

          4. [Personal Access Token]에서 클리보드에 복사한 토큰을 붙여 넣습니다. 토큰 저장을 선택합니다. 이제 CodeBuild 계정이 GitHub Enterprise 계정에 연결되었습니다.

        • Bitbucket의 경우 HTTPS가 소스 코드 및 빌드 사양을 포함하는 리포지토리에 URL을 복제합니다. URL에 "bitbucket.org"가 포함되어야 합니다. 또한 AWS 계정을 Bitbucket 계정에도 연결해야 합니다. 이렇게 하려면 CodeBuild 콘솔을 사용하여 빌드 프로젝트를 생성합니다.

          1. 콘솔을 사용하여 Bitbucket에 연결(또는 재연결)하면 Bitbucket [Confirm access to your account] 페이지에서 [Grant access]를 선택합니다. (Bitbucket 계정에 연결했으면 빌드 프로젝트 만들기를 완료하지 않아도 됩니다. CodeBuild 콘솔을 닫을 수 있습니다.)

        • AWS CodePipeline의 경우 sourcelocation 값을 지정하지 마십시오. CodePipeline에 파이프라인을 생성하면 파이프라인의 소스 단계에서 소스 코드 위치를 지정하게 되므로 CodePipeline에서 이 값을 무시합니다.

      • gitCloneDepth: 선택적 값입니다. 다운로드할 이력의 수준입니다. 최소값은 0입니다. 이 값이 0이거나, 25를 초과하거나, 지정되지 않은 경우 각 빌드 프로젝트에서 전체 이력이 다운로드됩니다. 소스 유형이 Amazon S3인 경우 이 값이 지원되지 않습니다.

      • buildspec: 선택적 값입니다. 사용할 빌드 사양 정의 또는 파일입니다. 이 값이 설정된 경우 내장된 CODEBUILD_SRC_DIR 환경 변수의 값에 상대적인 인라인 빌드 사양 정의 또는 대체 빌드 사양 파일의 경로가 될 수 있습니다. 이 값을 제공하지 않거나 빈 문자열로 설정하는 경우 소스 코드에 루트 디렉터리의 buildspec.yml 파일이 포함되어 있어야 합니다. 자세한 정보는 빌드 사양 파일 이름 및 스토리지 위치 단원을 참조하십시오.

      • auth: 이 객체는 CodeBuild 콘솔에서만 사용됩니다. auth-type(source-typeGITHUB로 설정되지 않은 경우) 또는 resource에 값을 지정하지 마십시오.

      • reportBuildStatus: 선택적 값입니다. 빌드의 시작 및 완료 상태를 소스 공급자에게 보낼지 여부를 지정합니다. GitHub, GitHub Enterprise 또는 Bitbucket이 아닌 소스 공급자로 설정하는 경우, invalidInputException이 발생합니다.

      • gitSubmodulesConfig: 선택적 값입니다. Git 하위 모듈 구성에 대한 정보입니다. CodeCommit, GitHub, GitHub Enterprise 및 Bitbucket에서만 사용됩니다. 리포지토리에 Git 하위 모듈을 포함하려면 fetchSubmodules를 true로 설정합니다. 포함된 Git 하위 모듈은 HTTPS로 구성해야 합니다.

      • InsecureSsl: 선택적 값입니다. GitHub Enterprise에서만 사용됩니다. GitHub Enterprise 프로젝트 리포지토리에 연결되어 있는 동안 SSL을 무시하려면 이 값을 true로 설정합니다. 기본값은 false입니다. InsecureSsl은 테스트 용도로만 사용해야 합니다. 프로덕션 환경에 사용하면 안 됩니다.

    • source-version: 선택적 값입니다. 이 프로젝트에 대해 빌드할 빌드 버전 입력. 지정하지 않으면 최신 버전이 사용됩니다. 지정하면 다음 중 하나여야 합니다.

      • CodeCommit의 경우: 사용할 커밋 ID입니다.

      • GitHub의 경우: 빌드하려는 소스 코드의 버전에 해당하는 커밋 ID, 풀 요청 ID, 분기 이름 또는 태그 이름입니다. 풀 요청 ID가 지정된 경우 pr/pull-request-ID 형식을 사용해야 합니다(예: pr/25). 분기 이름이 지정되어 있으면 분기의 HEAD 커밋 ID가 사용됩니다. 지정되지 않은 경우 기본 분기의 HEAD 커밋 ID가 사용됩니다.

      • Bitbucket의 경우: 빌드하려는 소스 코드의 버전에 해당하는 커밋 ID, 분기 이름 또는 태그 이름입니다. 분기 이름이 지정되어 있으면 분기의 HEAD 커밋 ID가 사용됩니다. 지정되지 않은 경우 기본 분기의 HEAD 커밋 ID가 사용됩니다.

      • Amazon Simple Storage Service(Amazon S3)의 경우: 사용할 빌드 입력 ZIP 파일을 나타내는 객체의 버전 ID입니다.

      빌드 수준에서 sourceVersion이 지정되어 있으면 (프로젝트 수준에서) 그 버전이 이 sourceVersion보다 우선합니다. 자세한 내용은 CodeBuild를 사용한 소스 버전 샘플 단원을 참조하십시오.

    • secondarySourceVersions: 선택적 값입니다. projectSourceVersion 객체의 배열입니다. 빌드 레벨에서 secondarySourceVersions이 지정되어 있으면 그 버전이 이 버전보다 우선합니다.

      • secondary-source-identifier: 빌드 프로젝트의 소스 식별자입니다.

      • secondary-source-version: sourceVersion 객체입니다.

    • 필수 artifacts 객체의 경우, 이 빌드 프로젝트의 출력 아티팩트 설정에 대한 정보입니다. artifacts 객체를 추가한 후에는 CodeBuild secondaryArtifacts 객체를 사용해 아티팩트를 최대 12개까지 더 추가할 수 있습니다. 이러한 설정에는 다음이 포함됩니다.

      • artifacts-type: 필수 값입니다. 빌드 출력 결과물의 유형입니다. 유효한 값에는 CODEPIPELINE, NO_ARTIFACTSS3이 있습니다.

      • artifacts-location: 필수 값입니다(artifacts-typeCODEPIPELINE 또는 NO_ARTIFACTS로 설정하지 않은 경우). 다음은 빌드 출력 결과물의 위치입니다.

        • artifacts-typeCODEPIPELINE을 지정한 경우 artifactslocation을 지정하지 마십시오.

        • artifacts-typeNO_ARTIFACTS을 지정한 경우 artifactslocation을 지정하지 마십시오.

        • artifacts-typeS3을 지정한 경우, 사전 요구사항에서 생성하거나 지정한 출력 버킷 이름입니다.

      • path: 선택적 값입니다. 빌드 출력 ZIP 파일 또는 폴더의 경로 및 이름입니다.

        • artifacts-typeCODEPIPELINE을 지정한 경우 artifactspath를 지정하지 마십시오.

        • artifacts-typeNO_ARTIFACTS을 지정한 경우 artifactspath을 지정하지 마십시오.

        • artifacts-typeS3을 지정한 경우, 빌드 출력 ZIP 파일이나 폴더에 대한 artifacts-location 내 경로가 됩니다. path에 값을 지정하지 않으면 CodeBuild가 namespaceType(지정된 경우) 및 artifacts-name을 사용하여 빌드 출력 ZIP 파일이나 폴더의 경로 및 이름을 결정합니다. 예를 들어 pathMyPath를 지정하고 artifacts-nameMyArtifact.zip을 지정하는 경우 경로 및 이름이 MyPath/MyArtifact.zip이 됩니다.

      • namespaceType: 선택적 값입니다. 빌드 출력 ZIP 파일 또는 폴더의 경로 및 이름입니다.

        • artifacts-typeCODEPIPELINE을 지정한 경우 artifactsnamespaceType을 지정하지 마십시오.

        • artifacts-typeNO_ARTIFACTS을 지정한 경우 artifactsnamespaceType을 지정하지 마십시오.

        • artifacts-typeS3을 지정한 경우 BUILD_IDNONE등이 유효한 값이 됩니다. 빌드 출력 ZIP 파일 또는 폴더의 경로에 빌드 ID를 삽입하려면 BUILD_ID를 사용하고 그렇지 않은 경우 NONE을 사용합니다. namespaceType에 값을 지정하지 않으면 CodeBuild가 path(지정된 경우) 및 artifacts-name을 사용하여 빌드 출력 ZIP 파일이나 폴더의 경로 및 이름을 결정합니다. 예를 들어 pathMyPath를 지정하고 namespaceTypeBUILD_ID를 지정하고 artifacts-nameMyArtifact.zip을 지정하는 경우 경로 및 이름이 MyPath/build-ID/MyArtifact.zip이 됩니다.

      • artifacts-name: 필수 값입니다(artifacts-typeCODEPIPELINE 또는 NO_ARTIFACTS로 설정하지 않은 경우). 빌드 출력 ZIP 파일 또는 폴더의 경로 및 이름입니다.

        • artifacts-typeCODEPIPELINE을 지정한 경우 artifactsname을 지정하지 마십시오.

        • artifacts-typeNO_ARTIFACTS을 지정한 경우 artifactsname을 지정하지 마십시오.

        • artifacts-typeS3을 지정한 경우, artifacts-location 내의 빌드 출력 ZIP 파일이나 폴더의 이름이 됩니다. 예를 들어 pathMyPath를 지정하고 artifacts-nameMyArtifact.zip을 지정하는 경우 경로 및 이름이 MyPath/MyArtifact.zip이 됩니다.

      • override-artifact-name: 부울 값(선택 사항). true로 설정할 경우 buildspec 파일의 artifacts 블록에서 지정한 이름이 artifacts-name을 재정의합니다. 자세한 정보는 CodeBuild의 빌드 사양 참조 단원을 참조하십시오.

      • packaging: 선택적 값입니다. 다음은 생성하려는 빌드 출력 결과물의 유형입니다.

        • artifacts-typeCODEPIPELINE을 지정한 경우 artifactspackaging을 지정하지 마십시오.

        • artifacts-typeNO_ARTIFACTS을 지정한 경우 artifactspackaging을 지정하지 마십시오.

        • artifacts-typeS3을 지정한 경우 ZIPNONE등이 유효한 값이 됩니다. 빌드 출력을 포함하는 ZIP 파일을 생성하려면 ZIP을 선택합니다. 빌드 출력을 포함하는 폴더를 생성하려면 NONE을 선택합니다. 기본값은 NONE입니다.

    • 필수 cache 객체의 경우, 이 빌드 프로젝트의 캐시 설정에 대한 정보입니다. 자세한 내용은 캐싱 구축 단원을 참조하십시오. 이러한 설정에는 다음이 포함됩니다.

      • cache-type: 필수 값입니다. 유효한 값은 S3, NO_CACHE 또는 LOCAL_CACHE입니다.

      • cache-location: 필수 값입니다(CacheTypeS3으로 설정한 경우에만). CacheType에 대해 Amazon S3를 지정한 경우 이는 Amazon S3 버킷의 ARN 및 경로 접두사입니다. 예를 들어 Amazon S3 버킷 이름이 my-bucket이고 경로 접두사가 build-cache인 경우 CacheLocation에 허용되는 형식은 my-bucket/build-cache 또는 arn:aws:s3:::my-bucket/build-cache입니다.

      • cache-mode: CacheTypeLOCAL로 설정한 경우 필수 값입니다. 다음 로컬 캐시 모드 중 하나 이상을 지정할 수 있습니다. LOCAL_SOURCE_CACHE, LOCAL_DOCKER_LAYER_CACHE, LOCAL_CUSTOM_CACHE.

        참고

        LOCAL_DOCKER_LAYER_CACHE 모드는 Linux에서만 사용할 수 있습니다. 이 모드를 선택할 경우 프로젝트를 권한이 있는 모드에서 실행해야 합니다.

    • logsConfig 객체의 경우, 이 빌드의 로그가 있는 위치에 대한 정보입니다.

      • cloudwatch-logs-status: 필수 값입니다. 유효한 값은 ENABLED 또는 DISABLED입니다. 해당 값이 ENABLED인 경우 다음 값은 필수입니다. 자세한 정보는 로그 그룹 및 로그 스트림 작업을 참조하십시오.

      • group-name: CloudWatch Logs 그룹의 이름입니다.

      • stream-name: CloudWatch Logs 스트림의 이름입니다.

      • s3-logs-status: 필수 값입니다. 유효한 값은 ENABLED 또는 DISABLED입니다.

      • s3-logs-location: s3-logs-statusENABLED인 경우 필수입니다. 이는 S3 버킷 및 경로 접두사의 ARN입니다. 예를 들어, Amazon S3 버킷 이름이 my-bucket이고 경로 접두사가 build-log인 경우 s3-logs-location의 허용되는 형식은 my-bucket/build-log 또는 arn:aws:s3:::my-bucket/build-log입니다.

      • s3-logs-encryptionDisabled: 선택적 부울 값입니다. true로 설정할 경우 S3 빌드 로그 출력이 암호화되지 않습니다. 기본적으로 S3 빌드 로그는 암호화됩니다.

    • secondaryArtifacts 객체(선택 사항)의 경우, 빌드 프로젝트에서 보조 아티팩트의 설정에 대한 정보입니다. 보조 아티팩트는 최대 12개까지 추가할 수 있습니다. secondaryArtifactsCodeBuild 결과물 객체 객체에서 사용하는 것과 동일한 수의 설정을 사용합니다. 설정은 다음과 같습니다.

    • secondarySources 객체(선택 사항)의 경우, 빌드 프로젝트에서 보조 소스의 설정에 대한 정보입니다. secondarySources는 최대 12개까지 추가할 수 있습니다. secondarySources 객체는 CodeBuild 소스 프로젝트에서 사용하는 것과 동일한 수의 설정을 사용합니다. 설정은 다음과 같습니다.

    • serviceRole: 필수 값입니다. IAM 사용자 대신 서비스와 상호 작용하기 위해 서비스 역할 CodeBuild의 ARN이 사용됩니다(예: arn:aws:iam::account-id:role/role-name).

    • 선택 가능한 vpcConfig 객체의 경우 VPC 구성에 대한 정보입니다. 이러한 설정은 다음과 같습니다.

      • vpcId: 필수 값입니다. CodeBuild가 사용하는 VPC ID입니다. 리전의 모든 Amazon VPC ID 목록을 보려면 다음 명령을 실행합니다.

        aws ec2 describe-vpcs
      • subnets: 필수 값입니다. CodeBuild가 사용하는 리소스가 포함된 서브넷 ID입니다. 이 ID를 얻으려면 다음 명령을 실행합니다.

        aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region us-east-1

        us-east-1이 아닌 다른 리전을 사용하는 경우 명령을 실행할 때 이를 사용해야 합니다.

      • securityGroupIds: 필수 값입니다. CodeBuild가 VPC의 리소스에 대한 액세스를 허용하기 위해 사용하는 보안 그룹 ID입니다. 이 ID를 얻으려면 다음 명령을 실행합니다.

        aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<vpc-id>" --region us-east-1

        us-east-1이 아닌 다른 리전을 사용하는 경우 명령을 실행할 때 이를 사용해야 합니다.

    • 필수 environment 객체의 경우, 이 프로젝트의 빌드 환경 설정에 대한 정보입니다. 이러한 설정은 다음과 같습니다.

      • environment-type: 필수 값입니다. 빌드 환경의 유형입니다. 유효 값은 LINUX_CONTAINERWINDOWS_CONTAINER입니다.

      • image: 필수 값입니다. 이 빌드 환경에서 사용하는 Docker 이미지 식별자입니다. 일반적으로 이 식별자는 image-name:tag로 표현됩니다. 예를 들어, CodeBuild가 도커 이미지를 관리하는 데 사용하는 Docker 리포지토리에서 이 값은 aws/codebuild/standard:2.0이 될 수 있습니다. Docker Hub에서는 maven:3.3.9-jdk-8입니다. Amazon ECR에서는, account-id.dkr.ecr.region-id.amazonaws.com/your-Amazon-ECR-repo-name:tag입니다. 자세한 내용은 CodeBuild가 제공하는 Docker 이미지 단원을 참조하십시오.

      • computeType: 필수 값입니다. 이 빌드 환경에서 사용하는 CPU 코어 및 메모리 수에 해당하는 카테고리입니다. 허용되는 값은 BUILD_GENERAL1_SMALL, BUILD_GENERAL1_MEDIUMBUILD_GENERAL1_LARGE 등입니다.

      • certificate: 선택적 값입니다. PEM 인코딩된 인증서를 포함하는 S3 버킷, 경로 접두사 및 객체 키의 ARN입니다. 객체 키는 단지 .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, environmentVariable-valueenvironmentVariable-typename, valuetype을 포함하는 객체로 표현됩니다.

        다른 사용자는 CodeBuild 콘솔 및 AWS CLI를 사용하여 환경 변수를 확인할 수 있습니다. 환경 변수의 가시성에 대한 문제가 없다면 environmentVariable-nameenvironmentVariable-value를 설정하고 environmentVariable-typePLAINTEXT로 설정합니다.

        AWS 액세스 키 ID, AWS 보안 액세스 키 또는 암호와 같은 중요한 값을 가진 환경 변수는 Amazon EC2 Systems Manager 파라미터 스토어 또는 AWS Secrets Manager에 파라미터로 저장하는 것이 좋습니다. environmentVariable-name에서 저장된 파라미터에 대해 CodeBuild 식별자를 참조로 설정합니다.

        environmentVariable-value에 대해 Amazon EC2 Systems Manager 파라미터 스토어를 사용하는 경우 파라미터 스토어에 저장되는 파라미터의 이름을 설정합니다. environmentVariable-typePARAMETER_STORE로 설정합니다. 예를 들어 /CodeBuild/dockerLoginPassword라는 이름의 파라미터를 사용하여 environmentVariable-nameLOGIN_PASSWORD로 설정합니다. environmentVariable-value/CodeBuild/dockerLoginPassword로 설정합니다. environmentVariable-typePARAMETER_STORE로 설정합니다.

        중요

        Amazon EC2 Systems Manager 파라미터 스토어를 사용하는 경우 /CodeBuild/로 시작되는 파라미터 이름(예: /CodeBuild/dockerLoginPassword)으로 파라미터를 저장하는 것이 좋습니다. CodeBuild 콘솔을 사용하여 Amazon EC2 Systems Manager에서 파라미터를 만들 수 있습니다. 파라미터 생성을 선택하고 대화 상자에 표시되는 지시에 따릅니다. 대화 상자의 KMS 키에 해당 계정의 AWS KMS 키에 대한 ARN을 지정할 수 있습니다. Amazon EC2 Systems Manager는 이 키를 사용하여 저장 시 파라미터의 값을 암호화하고 검색 시 암호를 해독합니다. CodeBuild 콘솔을 사용하여 파라미터를 만드는 경우 콘솔은 /CodeBuild/라는 이름의 파라미터가 저장될 때 이를 시작합니다. 자세한 정보는 Amazon EC2 Systems Manager 사용 설명서Systems Manager 파라미터 스토어Systems Manager 파라미터 스토어 콘솔 연습을 참조하십시오.

        빌드 프로젝트가 Amazon EC2 Systems Manager 파라미터 스토어에 저장된 파라미터를 참조하는 경우 해당 빌드 프로젝트의 서비스 역할은 ssm:GetParameters 작업을 허용해야 합니다. 앞에서 New service role(새 서비스 역할)을 선택한 경우에는 CodeBuild는 빌드 프로젝트의 기본 서비스 역할에 이 작업을 포함합니다. Existing service role(기존 서비스 역할)을 선택한 경우에는 이 작업을 서비스 역할에 별도로 포함해야 합니다.

        빌드 프로젝트가 /CodeBuild/로 시작되지 않는 파라미터 이름으로 Amazon EC2 Systems Manager 파라미터 스토어에 저장된 파라미터를 참조하는 경우 New service role(새 서비스 역할)을 선택하면 /CodeBuild/로 시작하지 않는 파라미터 이름에 액세스할 수 있도록 해당 서비스 역할을 업데이트해야 합니다. 이는 서비스 역할이 /CodeBuild/로 시작하는 파라미터 이름에만 액세스할 수 있기 때문입니다.

        New service role(새 서비스 역할)을 선택하면 Amazon EC2 Systems Manager 파라미터 스토어에 있는 /CodeBuild/ 네임스페이스의 모든 파라미터를 해독할 권한이 서비스 역할에 포함됩니다.

        사용자가 설정한 환경 변수는 기존 환경 변수를 대체합니다. 예를 들어 Docker 이미지에 값이 my_valueMY_VAR이라는 환경 변수가 이미 포함되어 있는데, 사용자가 MY_VAR 환경 변수의 값을 other_value로 설정하면, my_valueother_value로 바뀝니다. 마찬가지로, Docker 이미지에 값이 /usr/local/sbin:/usr/local/binPATH라는 환경 변수가 이미 포함되어 있는데, 사용자가 PATH 환경 변수의 값을 $PATH:/usr/share/ant/bin으로 설정하면, /usr/local/sbin:/usr/local/bin$PATH:/usr/share/ant/bin 리터럴 값으로 바뀝니다.

        CODEBUILD_로 시작하는 이름으로 환경 변수를 설정하지 마십시오. 이 접두사는 내부 전용으로 예약되어 있습니다.

        여러 위치에서 동일한 이름의 환경 변수가 정의되는 경우, 다음과 같이 값이 결정됩니다.

        • 시작 빌드 작업 호출의 값이 가장 높은 우선 순위를 갖습니다.

        • 빌드 프로젝트 정의의 값이 다음 우선 순위를 갖습니다.

        • 빌드 사양 선언의 값이 가장 낮은 우선 순위를 갖습니다.

        environmentVariable-value에 대해 Secrets Manager를 사용하는 경우 Secrets Manager에 저장된 대로 파라미터의 이름을 설정합니다. environmentVariable-typeSECRETS_MANAGER로 설정합니다. 예를 들어 /CodeBuild/dockerLoginPassword라는 이름의 암호를 사용하여 environmentVariable-nameLOGIN_PASSWORD로 설정합니다. environmentVariable-value/CodeBuild/dockerLoginPassword로 설정합니다. environmentVariable-typeSECRETS_MANAGER로 설정합니다.

        중요

        Secrets Manager를 사용하는 경우 이름이 /CodeBuild/로 시작하는 암호를 저장하는 것이 좋습니다(예: /CodeBuild/dockerLoginPassword). 자세한 내용은 AWS Secrets Manager 사용 설명서AWS Secrets Manager란 무엇입니까?를 참조하십시오.

        빌드 프로젝트가 Secrets Manager에 저장된 암호를 참조하는 경우 해당 빌드 프로젝트의 서비스 역할은 secretsmanager:GetSecretValue 작업을 허용해야 합니다. 앞에서 New service role(새 서비스 역할)을 선택한 경우에는 CodeBuild는 빌드 프로젝트의 기본 서비스 역할에 이 작업을 포함합니다. Existing service role(기존 서비스 역할)을 선택한 경우에는 이 작업을 서비스 역할에 별도로 포함해야 합니다.

        빌드 프로젝트가 /CodeBuild/로 시작되지 않는 암호 이름으로 Secrets Manager에 저장된 암호를 참조하는 경우 New service role(새 서비스 역할)을 선택하면 /CodeBuild/로 시작하지 않는 암호 이름에 액세스할 수 있도록 해당 서비스 역할을 업데이트해야 합니다. 이는 서비스 역할이 /CodeBuild/로 시작하는 암호 이름에만 액세스할 수 있기 때문입니다.

        New service role(새 서비스 역할)을 선택하면 Secrets Manager에 있는 /CodeBuild/ 네임스페이스의 모든 암호를 해독할 권한이 생성된 서비스 역할에 포함됩니다.

      • 선택적 registryCredential을 사용하여 프라이빗 Docker 레지스트리 액세스 권한을 제공하는 자격 증명의 정보를 지정합니다.

        • credential-arn-or-name: AWS Managed Services 를 사용하여 생성된 자격 증명의 이름 또는 ARN을 지정합니다. 현재 리전에 있는 자격 증명의 이름만 사용할 수 있습니다.

        • credential-provider: 유일한 유효 값은 SECRETS_MANAGER입니다.

        이를 설정할 경우 다음과 같이 해야 합니다.

        • imagePullCredentialsSERVICE_ROLE로 설정해야 합니다.

        • 이미지는 큐레이트할 수 없으며 Amazon ECR 이미지를 사용할 수 없습니다.

      • imagePullCredentialsType-value: 선택적 값입니다. CodeBuild가 빌드 내 이미지 가져오기에 사용하는 자격 증명의 유형입니다. 두 가지 값을 사용할 수 있습니다.

        • CODEBUILD는 CodeBuild가 자체 자격 증명을 사용하도록 지정합니다. 이렇게 하려면 CodeBuild 서비스 보안 주체를 신뢰하도록 Amazon ECR 리포지토리 정책을 수정해야 합니다.

        • SERVICE_ROLE은 CodeBuild가 빌드 프로젝트의 서비스 역할을 사용하도록 지정합니다.

        교차 계정 또는 프라이빗 레지스트리 이미지를 사용할 경우 SERVICE_ROLE 자격 증명을 사용해야 합니다. CodeBuild 큐레이트 이미지를 사용할 경우 CODEBUILD 자격 증명을 사용해야 합니다.

      • 이 빌드 프로젝트를 사용하여 Docker 이미지를 빌드하려는 경우 및 지정한 빌드 환경 이미지가 Docker 지원을 통해 CodeBuild에서 제공하지 않는 경우에만 privilegedModetrue 값으로 지정합니다. 그렇지 않으면 Docker 데몬과 상호 작용을 시도하는 모든 연결된 빌드가 실패합니다. 또한 빌드가 상호 작용할 수 있도록 Docker 데몬을 시작해야 합니다. 이를 수행하는 한 가지 방법은 다음 빌드 명령을 실행하여 빌드 사양의 install 단계에서 Docker 데몬을 초기화하는 것입니다. 지정한 빌드 환경 이미지가 Docker 지원을 통해 CodeBuild에서 제공하지 않은 경우 이 명령을 실행하지 마십시오.

        - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay& - timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"
    • badgeEnabled: 선택 가능한 값입니다. CodeBuild 프로젝트에 빌드 배지를 포함하려면 badgeEnabled 값을 true로 지정해야 합니다. 자세한 정보는 CodeBuild 빌드 배지 샘플 단원을 참조하십시오.

    • timeoutInMinutes: 선택적 값입니다. 빌드가 완료되지 않는 경우 CodeBuild가 해당 빌드를 중지하는 시간(분 단위, 5분에서 480분(8시간) 사이)입니다. 지정하지 않을 경우 기본값인 60을 사용합니다. 시간 제한으로 인해 CodeBuild가 빌드를 중지했는지 및 중지한 시간을 확인하려면 batch-get-builds 명령을 실행합니다. 빌드가 중지되었는지 확인하려면 출력에서 FAILEDbuildStatus 값을 살펴봅니다. 빌드가 시간 초과된 시간을 확인하려면 출력에서 TIMED_OUTphaseStatus와 연결된 endTime 값을 살펴봅니다.

    • encryptionKey: 선택적 값입니다. CodeBuild가 빌드 출력을 암호화하는 데 사용하는 AWS KMS CMK(고객 관리형 키)의 별칭 또는 ARN입니다. 별칭을 지정하는 경우 arn:aws:kms:region-ID:account-ID:key/key-ID 형식을 사용하고, 별칭이 있는 경우 alias/key-alias 형식을 사용합니다. 지정하지 않으면 Amazon S3의 AWS 관리형 CMK가 사용됩니다.

    • 선택적 tags 어레이의 경우, 이 빌드 프로젝트에 연결하려는 태그에 대한 정보입니다. 최대 50개의 태그를 지정할 수 있습니다. 이러한 태그는 CodeBuild 빌드 프로젝트 태그를 지원하는 AWS 서비스가 사용할 수 있습니다. 각 태그는 tag-keytag-valuekeyvalue 값을 포함하는 객체로 표현됩니다.

    이에 대한 예는 빌드 프로젝트를 생성하려면(AWS CLI) 단원을 참조하십시오.

  2. 방금 저장한 파일이 들어 있는 디렉터리로 전환한 후 create-project 명령을 다시 실행합니다.

    aws codebuild create-project --cli-input-json file://create-project.json
  3. 이 명령이 제대로 실행되면 다음과 비슷한 데이터가 출력에 표시됩니다.

    { "project": { "name": "project-name", "description": "description", "serviceRole": "serviceRole", "tags": [ { "key": "tags-key", "value": "tags-value" } ], "artifacts": { "namespaceType": "namespaceType", "packaging": "packaging", "path": "path", "type": "artifacts-type", "location": "artifacts-location", "name": "artifacts-name" }, "lastModified": lastModified, "timeoutInMinutes": timeoutInMinutes, "created": created, "environment": { "computeType": "computeType", "image": "image", "type": "environment-type", "environmentVariables": [ { "name": "environmentVariable-name", "value": "environmentVariable-value", "type": "environmentVariable-type" } ] }, "source": { "type": "source-type", "location": "source-location", "buildspec": "buildspec", "auth": { "type": "auth-type", "resource": "resource" } }, "encryptionKey": "encryptionKey", "arn": "arn" } }
    • project 객체에는 다음과 같은 새 빌드 프로젝트에 대한 정보가 들어 있습니다.

      • lastModified 값은 빌드 프로젝트에 대한 정보가 마지막으로 변경된 시간을 Unix 시간 형식으로 나타냅니다.

      • created 값은 빌드 프로젝트가 생성된 시간을 Unix 시간 형식으로 나타냅니다.

      • arn 값은 빌드 프로젝트의 ARN을 나타냅니다.

참고

빌드 프로젝트 이름을 제외한 모든 빌드 프로젝트 설정은 나중에 변경할 수 있습니다. 자세한 정보는 빌드 프로젝트 설정 변경(AWS CLI) 단원을 참조하십시오.

빌드 실행을 시작하려면 빌드 실행(AWS CLI) 단원을 참조하십시오.

소스 코드가 GitHub 리포지토리에 저장되고 코드 변경이 리포지토리로 푸시될 때마다 CodeBuild가 자동으로 소스 코드를 다시 빌드하게 하려면 빌드 실행 자동 시작(AWS CLI) 단원을 참조하십시오.

빌드 프로젝트 만들기(AWS SDK)

AWS CodeBuild를 AWS SDK와 함께 사용하는 방법에 대한 자세한 정보는 AWS SDK 및 도구 참조 단원을 참조하십시오.

빌드 프로젝트 만들기(AWS CloudFormation)

AWS CloudFormation과 함께 AWS CodeBuild를 사용하는 방법에 대한 자세한 정보는 AWS CloudFormation 사용 설명서CodeBuild용 AWS CloudFormation 템플릿 단원을 참조하십시오.