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

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

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

입력 소스 1개 이상과 출력 결과물 세트 1개 이상을 사용해 AWS CodeBuild 빌드 프로젝트를 만들 수 있습니다. 이번 샘플은 아래와 같은 빌드 프로젝트를 설정하는 방법에 대한 내용입니다.

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

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

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

  1. 소스를 1개 이상의 S3 버킷, CodeCommit, GitHub Enterprise Server 또는 Bitbucket 리포지토리에 업로드합니다.

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

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

  4. AWS CodeBuild 직접 실행 지침에 따라 빌드 프로젝트를 생성하고, 빌드를 실행하고, 빌드에 대한 정보를 가져옵니다.

  5. AWS CLI를 사용하여 빌드 프로젝트를 생성하는 경우, create-project 명령에 JSON 형식으로 입력하면 다음과 같은 모습이 될 수 있습니다.

    { "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": [ { "type": "S3", "location": "output-bucket", "artifactIdentifier": "artifact1" }, { "type": "S3", "location": "other-output-bucket", "artifactIdentifier": "artifact2" } ], "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:4.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보조 아티팩트의 필수 속성입니다.CreateProjectUpdateProject. 보조 아티팩트를 참조할 때 사용해야 합니다.

앞서 얘기한 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 속성을 사용하십시오.

AWS CLI에서 start-build 명령에 JSON 형식으로 입력하면 다음과 같은 모습이 될 수 있습니다.

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

소스 샘플이 없는 프로젝트

다음을 선택하여 CodeBuild 프로젝트를 구성할 수 있습니다.NO_SOURCE소스를 구성할 때 소스 유형입니다. 소스 유형이 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:4.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 CodePipelineCodeBuild 및 다중 입력 소스/출력 아티팩트 샘플의 통합 .