[AWS] CI/CD 환경구축(2) - CodeBuild

2020. 11. 12. 10:43AWS/AWS_Service

반응형

안녕하세요, 달콤한달팽이입니다.🐌🙂


오늘은 AWS를 사용하여 CI/CD 환경을 구축하는 방법 그 두 번째 시간을 가져보겠습니다.


CodeBuild란?

Code Commit이란, AWS에서 제공하는 빌드 서비스로, 소스 코드를 컴파일하고 단위 테스트를 도와줍니다.

 

때문에 소스코드와 buildspec.yaml이라는 참조 파일을 토대로 빌드의 결과물(.war,.jar etc..)을 S3에 저장하고, 원한다면 테스트 기능도 수행하는 역할을 수행합니다.


1) 테스트 코드 작성 및 빌드 사양(buildspec) 선언

CodeBuild를 수행하기 위해선 빌드를 진행할 테스트 코드를 우선적으로 작성해야합니다.

 

직접 운영하는 서비스 코드로 진행하면 더욱 좋겠지만,

그럴 환경이 되지 않는 분들은 AWS 공식홈페이지 링크에서 제공하는 테스트 코드를 사용해보시길 바랍니다!

 

테스트 코드를 아래와 같은 디렉터리 구조로 구성하고, 이를 CodeCommit에 올려두었습니다.

 

buildspec.yaml은 소스 코드 빌드시, 사양을 작성하는 문서를 의미합니다.

즉, 빌드를 수행할 때 어떤 명령어를 사용할지, 어떤 아티펙트(결과물)을 출력할지를 지정하는 역할을 수행합니다.

  version: 사용중인 빌드 사양 표준 버전

  phases: CodeBuild 명령어 실행 빌드 단계

  artifacts: 출력 아티펙트 파일

version: 0.2

phases:
  install:
    runtime-versions:
      java: corretto11
  pre_build:
    commands:
      - echo Nothing to do in the pre_build phase...
  build:
    commands:
      - echo Build started on `date`
      - mvn install
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - target/messageUtil-1.0.jar

 

S3상의 파일은 아래와 같은 구조로 업로드했습니다.

 

2) S3 생성

앞서 언급했듯, CodeBuild를 통해 소스 코드에 대한 아티펙트(결과물)를 생성할 수 있으며

이를 저장하기 위한 공간이 필요합니다.

 

아티펙트(결과물)을 저장할 버킷을 생성하도록 합시다.

3) 빌드 프로젝트 생성

이제 CodeBuild에서 빌드를 위한 프로젝트를 생성하도록 합시다!

 

빌드 프로젝트의 이름을 설정한 이후, 소스를 공급받을 위치를 선택하게 됩니다.

이번 실습에선 이전에 만들어둔 CodeCommit을 선택해주도록 하겠습니다!

이후 해당 소스가 어떠한 가상환경에서 빌드될지 선택해줍니다.

 

운영 체제는 AmazonLinux2와 Ubuntu가 존재하므로,

이번 실습에서는 AmazonLinux2에서 제공하는 최신 이미지를 사용하도록 하겠습니다.

 

그리고 빌드 수행시 필요한 IAM Role이 없을 경우 새 서비스 역할을 선택하여 새로 생성해주도록 합시다!

(저는 이전 빌드에 사용했던 Role이 있으므로 기존것을 그대로 사용해 보겠습니다.)

 

마지막으로 빌드 아티펙트(결과물)이 저장될 위치를 지정해주도록 합니다.

S3에 생성해둔 버킷에 결과물이 저장되도록 설정해 주었습니다.

 

이후 빌드 시작을 통해 빌드를 임의로 수행해주도록 합니다.

빌드별로 고유의 ID가 생기며, 각 빌드의 성공/실패 여부를 빌드 로그 탭을 통해서 확인할 수 있습니다.

(테스트 코드를 그대로 사용할 경우, 버전 이슈로 인해 실패할 수 있습니다!)

 

또한, 각 빌드에서 수행된 명령어와 같은 상세 로그는 빌드 ID의 빌드 로그 탭에서 확인이 가능합니다.

 

별다른 설정을 하지 않았을 때 CloudWatch Logs에서도 빌드 로그가 남게 되며,

앞서 확인한 빌드 로그와 동일한 내용이 기록되어 있습니다.

 

3) 빌드 아티펙트 확인

이제 CodeBuild의 아티펙트(결과물)을 확인해보도록 합니다.

CodeBuild 프로젝트 생성시 S3에 아티펙트를 보관하도록, buildspec.yaml에서 경로를 target으로 지정해두었죠?

 

때문에 해당 경로에서 지정한 이름의 결과물을 확인할 수 있습니다.

 

지금까지 CI/CD 환경 구성, 그 중 두 번째 단계인 CodeBuild를 통한 소스코드 빌드 방법을 알아보았습니다.

다음 시간에는 CodeDeploy를 사용해 Build된 아티펙트를 실제 서버에 배포하는 방법을 알아보도록 하겠습니다.

 

감사합니다!


관련 글

반응형

'AWS > AWS_Service' 카테고리의 다른 글

[AWS] CI/CD 환경구축(4) - CodePipeline  (0) 2020.12.29
[AWS] CI/CD 환경구축(3) - CodeDeploy  (0) 2020.11.17
[AWS] CI/CD 환경구축(1) - CodeCommit  (0) 2020.11.09
[AWS] CLI를 통해 S3 사용하기  (0) 2020.05.19
[AWS] EIP 사용하기  (0) 2020.04.07