참고. swchoi.log 블로그 [Travis CI 배포 자동화]
CI & CD
CI(Continuous Integration) - 지속적인 통합?
VCS 시스템을 통해 새로운/변경된 Resource 에 대해 자동으로 테스트 또는 빌드 수행 후 안정적인 배포 파일을 생성하는 과정
CD(Continuous Deployment) - 지속적인 배포?
빌드 결과를 자동으로 운영 서버에 무중단 배포하는 과정
why? Travis CI?
- Github 와의 상호 연동(혹은 의존성)
- Slack, Mail .. 다양한 메신저 연동 가능
Travis CI 연동 과정
1. Travis CI 설정
https://travis-ci.org/
- Travis CI Web Service 에서 Github 계정 로그인
- Travis Settins 에서 연동할 Github repository 활성화
2. 프로젝트 Travis CI 설정
travis.yml
추가
! build.gradle 동일한 위치에 추가 !
3. Travis CI + AWS S3 연동
AWS S3?
- AWS에서 제공하는 파일 서버로서, 정적 파일 관리 또는 배포 파일 관리 기능 제공 서비스
AWS 와 Travis CI 연동 프로세스
IAM 사용자 만들기
- 사용자 세부 정보 설정
- 사용자 이름 >
jimmyberg-travis-deploy
- AWS 액세스 유형 선택 > 프로그래밍 방식 액세스
- 권한 설정
- 기존 정책 직접 연결
AmazonS3FullAccess
AmazonCodeDeployFullAccess
- 태그 추가
- 키 :
Name
, 값 : jimmyberg-travis-deploy
Travis CI에 S3 액세스 키 등록
- 연동한 repository 의 settings 에서 키 등록
AWS_ACCESS_KEY
: 액세스 키
AWS_SECRET_KEY
: 비밀 액세스 키
- .travis.yml 에서
$AWS_ACCESS_KEY
, $AWS_SECRET_KEY
으로 사용
S3 버킷 생성
- 버킷 이름 >
jimmyberg-rest-api
.travis.yml
수정
4. Travis CI + S3 + CodeDeploy
EC2 에 IAM 역할 추가
ec2-codedeploy-role
역할 만들기
- EC2 > 인스턴스 설정 > IAM 역할 연결/바꾸기
ec2-codedeploy-role
역할 선택
- EC2 인스턴스 재부팅
EC2 에 CodeDeploy agent 설치
CodeDeploy 권한 생성
- IAM 역할
- 정책
- 태그 추가
- 키 :
Name
, 값 : codedeploy-role
CodeDeploy 생성
- 애플리케이션 생성
- 애플리케이션 구성
- 애플리케이션 이름 :
rest-api
- 컴퓨팅 플랫폼 :
EC2/온프레미스
- 배포그룹 생성
- 배포그룹 이름 :
rest-api-group
- 서비스 역할 :
codedeploy-role
- 배포 유형 :
현재 위치
선택(배포할 서비스가 2대 이상이라면 블루/그린
선택)
- 환경 구성 :
Amazon EC2 인스턴스
- 태그 추가
- 키 :
Name
, 값 : Amazon Linux Web Server
- 배포 설정
CodeDeployDefault.AllAtOnce
선택
- 로드 밸런서 해제
연동 설정 파일 추가 및 수정
5. 배포 자동화 구성
프로젝트에 deploy.sh
추가
.travis.yml
수정
appspec.yml
수정
배포 Log 확인 방법
CodeDeploy 관련 Log
프로젝트 관련 Log
관련 Github Repository