본문 바로가기
개발/AWS

AWS CodeBuild로 빌드하기(SpringBoot, Maven)

by 궁즉변 변즉통 통즉구 2022. 2. 26.
반응형

CodeBuild

  • 클라우드의 완전 관리형 CI(Continuous Integration) 서비스: 소스코드 컴파일, 단위테스트, 빌드 파일 생성
  • 빌드서버의 프로비저닝 및 운영/관리 불필요
  • Maven, Gradle 등 많이 사용되는 프로그래밍 언어 및 도구에 따라 사전 패키지된 빌드 환경(빌드 프로젝트)을 제공
  • 빌드 수행 볼륨에 따라 자동 확장/축소 가능 및 사용한 빌드 시간만큼만 비용을 지불

 

CodeBuild 동작방식

출처: 아마존 웹 서비스로 시작하는 데브옵스

  1. Source Control
    - GitHub, CodeCommit, S3 등에서 소스 불러오기
  2. Build Project
    - 소스코드위치, 빌드환경, 빌드명령, 빌드 결과 저장위치 등 빌드 실행 방식 정의
  3. Build Environment
    - Build Project 기반으로 빌드 환경 생성 및 buildspec 실행
  4. S3 버킷
    - 빌드 결과 S3 업로드
  5. Notification
    -
    SNS로 알림 전송, 빌드과정 Log CodeBuild/CloudWatch Logs 에 전송
  6. Destroy Build Environment 
    - Build Environment 삭제 및 Clean Up

 

CodeBuild로 빌드하기

- 기존에 테스트하던 CodeCommit 기반으로 진행(https://happy-jjang-a.tistory.com/89)

- 빌드 결과는 S3에 저장으로 진행

1. CodeBuild 생성

- CodeBuild 메뉴에서 '빌드 프로젝트 생성' 클릭

 

- 프로젝트 이름 입력

 

- 소스공급자는 CodeCodmmit 선택 후 빌드 리파지토리 선택, 참조유형/브랜치 등 선택

 

- [빌드환경 설정]에서는 운영체제는 Amazon Linux 2, 런타임 Standard, 이미지/이미지버전은 그냥 최신 선택, 나머지 설정은 아래와 같이 진행

 

- [빌드스팩]에서는 파일사용을 선택하고, 파일명을 지정. 소스의 Root에 "buildspec.yml"을 생성

 

- [아티팩트]에서는 '유형'에 S3를 선택하고 업로드할 버킷을 선택한다. '이름'은 아티팩트가 zip인 경우는 zip파일명 or 그 외 '경로' 하위의 디렉토리명이 된다. '경로'는 버킷내의 디렉토리 명을 입력한다([버킷/경로/이름/xxxx.jar])

 

- 계속해서 [아티팩트] 하단에 추가구성은 Maven Dependency 등을 저장해놓고 쓸 캐시 정보를 설정한다. 캐시 유형은 동일한게 S3, 동일한 버킷명으로 하고, 캐시 경로 접두사만 "cache"로 입력

 

- [로그] 설정에서 빌드 로그를 CloudWatch, S3에 남길 것인가를 설정. 일단 2개모두 선택하고 각 아래와 같이 설정 후 생성 

 

- 위와 같이 설정하고 생성을 하면 아래와 같이 확인 가능

 

 

2. buildspec.yml 파일 생성

buildspec.yml파일은 아래와 같이 소스의 Root에 작성

version: 0.2  # 0.2 권장

phases:   # 빌드 단계
  install:
    runtime-versions:
      java: corretto8
  pre_build:
    commands:
        - echo Pre-Build completed on `date`
  build:
    commands:
      - echo Build started on `date`
      - mvn test
  post_build:
    commands:
      - echo Build completed on `date`
      - mvn package
artifacts:
  files:
    - target/spring-boot-jsp-0.0.1-SNAPSHOT.war  # 업로드 할 파일들
  discard-paths: yes # 파일명 기준으로만 업로드
cache:
  paths:
    - '/root/.m2/**/*'   # S3 cache에 등록할 파일들

 

- 작성된 파일은 CodeCommit에 Push 

 

3. CodeBuild 빌드

- CodeBuild 메뉴에서 '빌드 시작' 클릭

 

- 빌드 상태로그 확인

 

- 빌드 성공 로그가 보이면 S3메뉴로 이동하여 빌드 파일 확인

 

- 다시 한번 CodeBuild에서 빌드시작을 해보면 처음보다 빠르게 빌드되고, S3에 업로드된 빌드파일도 바뀌고 파일 다운받아서 정상 실행 확인

 

 

- CloudWatch에 접속해서 보면 아래와 같이 로그 설정한대로 확인 가능

 

- IAM 메뉴에서 역할에서 자동생성 된 빌드프로젝트 역할 확인

 

반응형

댓글