다중 입력 소스 및 출력 아티팩트 샘플 - AWS CodeBuild

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

다중 입력 소스 및 출력 아티팩트 샘플

둘 이상의 입력 소스와 둘 이상의 출력 아티팩트 세트를 사용하여 AWS CodeBuild 빌드 프로젝트를 생성할 수 있습니다. 이번 샘플은 아래와 같은 빌드 프로젝트를 설정하는 방법에 대한 내용입니다.

  • 유형에 따라 여러 가지 소스와 리포지토리를 사용합니다.

  • 단일 빌드에서 다수의 S3 버킷에 빌드 아티팩트를 게시합니다.

이번 샘플에서는 빌드 프로젝트를 생성하여 빌드를 실행하는 데 사용합니다. 또한 빌드 프로젝트의 buildspec 파일을 사용해 소스 1개 이상을 포함시키고, 아티팩트 세트 1개 이상을 생성하는 방법에 대해서 설명합니다.

  1. 소스를 하나 이상의 S3 버킷,, CodeCommit GitHub, GitHub 엔터프라이즈 서버 또는 Bitbucket 리포지토리에 업로드합니다.

  2. 기본 소스로 사용할 소스를 선택합니다. 이 소스는 buildspec 파일을 CodeBuild 찾아 실행하는 소스입니다.

  3. 빌드 프로젝트를 생성합니다. 자세한 정보는 AWS CodeBuild에서 빌드 프로젝트 생성을 참조하세요.

  4. 빌드 프로젝트를 만들고, 빌드를 실행하고, 빌드에 대한 정보를 얻으세요.

  5. 를 사용하여 빌드 프로젝트를 만드는 경우 JSON 형식의 create-project 명령 입력은 다음과 비슷할 수 있습니다. AWS CLI

    { "name": "sample-project", "source": { "type": "S3", "location": "<bucket/sample.zip>" }, "secondarySources": [ { "type": "CODECOMMIT", "location": "https://git-codecommit.us-west-2.amazonaws.com/v1/repos/repo", "sourceIdentifier": "source1" }, { "type": "GITHUB", "location": "https://github.com/awslabs/aws-codebuild-jenkins-plugin", "sourceIdentifier": "source2" } ], "secondaryArtifacts": [ss { "type": "S3", "location": "<output-bucket>", "artifactIdentifier": "artifact1" }, { "type": "S3", "location": "<other-output-bucket>", "artifactIdentifier": "artifact2" } ], "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }

기본 소스는 source 속성에서 정의됩니다. 그 밖에 다른 소스는 보조 소스라고 불리며, secondarySources에 표시됩니다. 보조 소스는 모두 자체 디렉터리에 설치됩니다. 이 디렉터리는 내장 환경 변수인 CODEBUILD_SRC_DIR_sourceIdentifer에 저장됩니다. 자세한 정보는 빌드 환경의 환경 변수을 참조하세요.

secondaryArtifacts 속성에는 아티팩트 정의 목록이 포함됩니다. 이러한 아티팩트는 secondary-artifacts 블록 내에 중첩되는 buildspec 파일의 artifacts 블록을 사용합니다.

buildspec 파일의 보조 아티팩트는 아티팩트와 동일한 구조를 가지고 있지만 아티팩트 식별자로 구분됩니다.

참고

CodeBuild API에서 보조 아티팩트의 artifactIdentifier on은 및 의 필수 속성입니다. CreateProject UpdateProject 보조 아티팩트를 참조할 때 사용해야 합니다.

앞서 얘기한 JSON 형식의 입력을 사용하면 프로젝트의 buildspec 파일은 다음과 같은 모습이 될 수 있습니다.

version: 0.2 phases: install: runtime-versions: java: openjdk11 build: commands: - cd $CODEBUILD_SRC_DIR_source1 - touch file1 - cd $CODEBUILD_SRC_DIR_source2 - touch file2 artifacts: files: - '**.*' secondary-artifacts: artifact1: base-directory: $CODEBUILD_SRC_DIR_source1 files: - file1 artifact2: base-directory: $CODEBUILD_SRC_DIR_source2 files: - file2

기본 속성의 버전은 API를 사용해 sourceVersionStartBuild 속성에서 재정의할 수 있습니다. 보조 소스 버전을 1개 이상 재정의할 때는 secondarySourceVersionOverride 속성을 사용하십시오.

JSON 형식의 start-build 명령 입력은 다음과 같을 수 있습니다. AWS CLI

{ "projectName": "sample-project", "secondarySourcesVersionOverride": [ { "sourceIdentifier": "source1", "sourceVersion": "codecommit-branch" }, { "sourceIdentifier": "source2", "sourceVersion": "github-branch" }, ] }

소스 샘플이 없는 프로젝트

소스를 구성할 때 NO_SOURCE 소스 유형을 선택하여 CodeBuild 프로젝트를 구성할 수 있습니다. 소스 유형이 NO_SOURCE일 경우, 프로젝트에 소스가 없으므로 buildspec 파일을 지정할 수 없습니다. 대신에 create-project CLI 명령에 대한 JSON 형식 입력의 buildspec 속성 내 YAML 형식 buildspec 문자열 지정이 필요합니다. 값이 다음과 같을 것입니다.

{ "name": "project-name", "source": { "type": "NO_SOURCE", "buildspec": "version: 0.2\n\nphases:\n build:\n commands:\n - command" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL", }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }

자세한 정보는 빌드 프로젝트 생성(AWS CLI)을 참조하세요.

여러 소스 입력을 사용하여 여러 출력 아티팩트를 만드는 파이프라인을 만드는 방법을 알아보려면 CodeBuild 을 참조하십시오AWS CodePipeline 여러 입력 소스 CodeBuild 및 출력 아티팩트와의 통합 샘플 .