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

CodeBuild용 CodeDeploy 샘플

이 샘플은 AWS CodeBuild에 Maven을 사용하여 my-app-1.0-SNAPSHOT.jar이라는 단일 JAR 파일을 빌드 출력으로 생성하도록 지시합니다. 그런 다음 CodeDeploy를 사용하여 Amazon Linux 인스턴스에 JAR 파일을 배포합니다. (또는 AWS CodePipeline를 사용하여 CodeDeploy가 JAR 파일을 Amazon Linux 인스턴스에 배포하도록 자동화할 수 있습니다.) 이 샘플은 Apache Maven 웹 사이트의 Maven in 5 Minutes 항목을 기반으로 합니다.

중요

이 샘플을 실행하면 AWS 계정에 요금이 발생할 수 있습니다. 여기에는 CodeBuild 및 AWS 리소스에 대한 요금 및 Amazon S3, AWS KMS, CloudWatch Logs, Amazon EC2과 관련된 작업이 포함됩니다. 자세한 정보는 CodeBuild 요금, Amazon S3 요금, AWS Key Management Service 요금, Amazon CloudWatch 요금, Amazon EC2 요금을 참조하십시오.

샘플 실행

이 샘플을 실행하려면:

  1. Maven을 다운로드하고 설치합니다. 자세한 내용은 Apache Maven 웹 사이트의 Downloading Apache MavenInstalling Apache Maven 단원을 참조하십시오.

  2. 로컬 컴퓨터나 인스턴스의 빈 디렉터리로 전환한 다음, 아래 Maven 명령을 실행합니다.

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    성공하면 다음 디렉터리 구조 및 파일이 생성됩니다.

    (root directory name) `-- my-app |-- pom.xml `-- src |-- main | `-- java | `-- com | `-- mycompany | `-- app | `-- App.java `-- test `-- java `-- com `-- mycompany `-- app `-- AppTest.java
  3. 다음 내용을 포함하는 파일을 하나 만듭니다. buildspec.yml 파일의 이름을 지정한 다음 (root directory name)/my-app 디렉터리에 추가합니다.

    version: 0.2 phases: install: runtime-versions: java: corretto8 build: commands: - echo Build started on `date` - mvn test post_build: commands: - echo Build completed on `date` - mvn package artifacts: files: - target/my-app-1.0-SNAPSHOT.jar - appspec.yml discard-paths: yes
  4. 다음 내용을 포함하는 파일을 하나 만듭니다. appspec.yml 파일의 이름을 지정한 다음 (root directory name)/my-app 디렉터리에 추가합니다.

    version: 0.0 os: linux files: - source: ./my-app-1.0-SNAPSHOT.jar destination: /tmp

    마치면 다음과 같이 디렉터리 구조 및 파일이 나타나야 합니다.

    (root directory name) `-- my-app |-- buildspec.yml |-- appspec.yml |-- pom.xml `-- src |-- main | `-- java | `-- com | `-- mycompany | `-- app | `-- App.java `-- test `-- java `-- com `-- mycompany `-- app ` -- AppTest.java
  5. (root directory name)/my-app 내에 디렉터리 구조 및 파일이 들어 있는 ZIP 파일을 생성한 다음, ZIP 파일을 AWS CodeBuild 및 CodeDeploy가 지원하는 소스 코드 리포지토리 유형(Amazon S3 입력 버킷 또는 GitHub 또는 Bitbucket 리포지토리 등)에 업로드합니다.

    중요

    CodePipeline를 사용하여 결과 빌드 출력 결과물을 배포하려는 경우 소스 코드를 Bitbucket 리포지토리에 업로드할 수 없습니다.

    (root directory name) 또는 (root directory name)/my-app을 ZIP 파일에 추가하지 말고, (root directory name)/my-app 안에 있는 디렉터리 및 파일만 추가하십시오. ZIP 파일에 다음 디렉터리 및 파일이 포함되어 있어야 합니다.

    CodeDeploySample.zip |--buildspec.yml |-- appspec.yml |-- pom.xml `-- src |-- main | `-- java | `-- com | `-- mycompany | `-- app | `-- App.java `-- test `-- java `-- com `-- mycompany `-- app ` -- AppTest.java
  6. 빌드 프로젝트 생성 섹션의 단계를 따라 빌드 프로젝트를 만듭니다.

    AWS CLI를 사용하여 빌드 프로젝트를 생성하는 경우, create-project 명령에 JSON 형식으로 입력하면 다음과 같이 표시될 수 있습니다. (자리 표시자는 사용자의 값으로 바꾸십시오.)

    { "name": "sample-codedeploy-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/CodeDeploySample.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket", "packaging": "ZIP", "name": "CodeDeployOutputArtifact.zip" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:2.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" }
  7. CodeDeploy를 사용하여 빌드 출력 결과물을 배포하려는 경우 빌드 실행 단원의 단계를 따릅니다. 그렇지 않으면 이 단계를 건너뜁니다. (CodePipeline를 사용하여 빌드 출력 결과물을 배포하는 경우 CodePipeline가 CodeBuild를 사용하여 빌드를 자동으로 실행하기 때문입니다.)

  8. 다음을 포함하여 CodeDeploy를 사용하기 위한 설정 단계를 완료합니다.

    • IAM 및 CodeDeploy 서비스와 AWS가 의존하는 작업에 대해 CodeDeploy 사용자 액세스 권한을 부여합니다. 자세한 정보는 CodeDeploy 사용 설명서IAM 사용자 프로비저닝 단원을 참조하십시오.

    • 서비스 역할을 생성하거나 지정하여 CodeDeploy가 빌드 출력 결과물을 배포할 인스턴스를 식별할 수 있도록 합니다. 자세한 정보는 CodeDeploy 사용 설명서CodeDeploy에 대한 서비스 역할 생성 단원을 참조하십시오.

    • IAM 인스턴스 프로파일을 생성하거나 지정하여 인스턴스가 빌드 출력 결과물을 포함하는 Amazon S3 입력 버킷이나 GitHub 리포지토리에 액세스할 수 있도록 합니다. 자세한 정보는 CodeDeploy 사용 설명서Amazon EC2 인스턴스용 IAM 인스턴스 프로파일 생성 단원을 참조하십시오.

  9. 빌드 출력 결과물이 배포될 CodeDeploy와 호환되는 Amazon Linux 인스턴스를 생성하거나 지정합니다. 자세한 정보는 CodeDeploy 사용 설명서에서 CodeDeploy용 인스턴스 작업을 참조하십시오.

  10. CodeDeploy 애플리케이션 및 배포 그룹을 생성하거나 지정합니다. 자세한 정보는 CodeDeploy 사용 설명서CodeDeploy로 애플리케이션 생성 단원을 참조하십시오.

  11. 인스턴스에 빌드 출력 결과물을 배포합니다.

    CodeDeploy를 사용하여 배포하려면 CodeDeploy 사용 설명서CodeDeploy로 개정 배포 단원을 참조하십시오.

    CodePipeline로 배포하려면 AWS CodePipeline을 CodeBuild와 함께 사용 단원을 참조하십시오.

  12. 배포가 완료된 후 빌드 출력 결과물을 찾으려면 인스턴스에 로그인하고 /tmp 디렉터리에서 my-app-1.0-SNAPSHOT.jar이라는 파일을 찾습니다.

관련 리소스

이 페이지에서: