Spring Boot + Travis CI

Spring Boot + Travis CI 연동

JIM KIM
jimmyberg.kim
11 min readOct 19, 2020

--

참고. swchoi.log 블로그 [Travis CI 배포 자동화]

Travis CI

CI & CD

CI(Continuous Integration) — 지속적인 통합?

VCS 시스템을 통해 새로운/변경된 Resource 에 대해 자동으로 테스트 또는 빌드 수행 후 안정적인 배포 파일을 생성하는 과정

CD(Continuous Deployment) — 지속적인 배포?

빌드 결과를 자동으로 운영 서버에 무중단 배포하는 과정

why? Travis CI?

  • Github 와의 상호 연동(혹은 의존성)
  • Slack, Mail .. 다양한 메신저 연동 가능

Travis CI 연동 과정

1. Travis CI 설정

  • 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 역할
  • CodeDeploy 선택
  • 정책
  • AWSCodeDeployRole 선택
  • 태그 추가
  • 키 : Name, 값 : codedeploy-role

CodeDeploy 생성

  • 애플리케이션 생성
  • 애플리케이션 구성
  • 애플리케이션 이름 : rest-api
  • 컴퓨팅 플랫폼 : EC2/온프레미스
  • 배포그룹 생성
  • 배포그룹 이름 : rest-api-group
  • 서비스 역할 : codedeploy-role
  • 배포 유형 : 현재 위치 선택(배포할 서비스가 2대 이상이라면 블루/그린 선택)
  • 환경 구성 : Amazon EC2 인스턴스
  • 태그 추가
  • 키 : Name, 값 : Amazon Linux Web Server
  • 배포 설정
  • CodeDeployDefault.AllAtOnce 선택
  • 로드 밸런서 해제

연동 설정 파일 추가 및 수정

  • EC2 에 zip 파일 저장 디렉토리 생성
  • appspec.yml 추가
  • .travis.yml 수정
  • EC2 에 저장된 zip 디렉토리 확인

5. 배포 자동화 구성

프로젝트에 deploy.sh 추가

.travis.yml 수정

appspec.yml 수정

배포 Log 확인 방법

CodeDeploy 관련 Log

프로젝트 관련 Log

--

--