CodeBuild
- 클라우드의 완전 관리형 CI(Continuous Integration) 서비스: 소스코드 컴파일, 단위테스트, 빌드 파일 생성
- 빌드서버의 프로비저닝 및 운영/관리 불필요
- Maven, Gradle 등 많이 사용되는 프로그래밍 언어 및 도구에 따라 사전 패키지된 빌드 환경(빌드 프로젝트)을 제공
- 빌드 수행 볼륨에 따라 자동 확장/축소 가능 및 사용한 빌드 시간만큼만 비용을 지불
CodeBuild 동작방식
- Source Control
- GitHub, CodeCommit, S3 등에서 소스 불러오기 - Build Project
- 소스코드위치, 빌드환경, 빌드명령, 빌드 결과 저장위치 등 빌드 실행 방식 정의 - Build Environment
- Build Project 기반으로 빌드 환경 생성 및 buildspec 실행 - S3 버킷
- 빌드 결과 S3 업로드 - Notification
- SNS로 알림 전송, 빌드과정 Log CodeBuild/CloudWatch Logs 에 전송 - 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 메뉴에서 역할에서 자동생성 된 빌드프로젝트 역할 확인
'개발 > AWS' 카테고리의 다른 글
AWS API Gateway 살펴보기(HTTP API, REST API 생성) (0) | 2022.03.04 |
---|---|
AWS CodePipeline 구성(CodeCommit, CodeBuild, CodeDeploy 활용) (0) | 2022.02.28 |
AWS CodeCommit Migration 테스트(from Github) (0) | 2022.02.24 |
AWS CodeCommit Push 403 Unable to access(MAC) (0) | 2022.02.24 |
AWS CodeCommit 시작하기 (0) | 2022.02.24 |
댓글