티스토리 뷰

안녕하세요 강정호입니다. 오늘은 제가 인하우스키친 프로젝트를 배포 자동화 구축한 방법에 대해서 소개해 드리고자 합니다.


CI란 무엇인가?


배포 자동화를 하기 전에는 직접 ./deploy.sh에 Git pull 명령어, Jar 파일 이름, Gradle 빌드 명령어 실행 코드, 배포 명령어를 직접 입력한 후에 deploy.sh를 실행하여 프로젝트를 배포하였는데요, 직접 일일이 Master 브랜치에 푸쉬하고 Deploy를 해주어야 해서 번거로웠어요.


CI(지속적 통합)는 코드 버전 관리를 하는 VCS(깃헙, SVN)에 PUSH가 되면 자동으로 Test, Build가 수행되고 Build 결과를 운영 서버에 배포까지 자동으로 진행되는 과정을 뜻해요.


마틴 파울러가 제시하는 CI의 조건은 다음과 같아요

1) 모든 소스 코드가 살아있고(현재 실행되고) 어느 누구든 현재의 소스를 접근할 수 있는 단일 지점을 유지할 것


2) 빌드 프로세스를 자동화시켜서 어느 누구든 소스로부터 시스템을 빌드하는 단일 명령어를 사용할 수 있게 할 것.


3) 테스팅을 자동화시켜서 단일 명령어를 통해서 언제든지 시스템에 대한 건전한 테스트 수트를 실행할 수 있게 할 것.


4) 누구나 현재 실행 파일을 얻으면 지금까지 최고의 실행파일을 얻었다는 확신을 하게 만들 것.


특히 중요한 것은 테스팅 자동화에요.

지속적으로 통합하기 위해선 무엇보다도 이 프로젝트가 완전한 상태임을 보장하기 위해 테스트 코드가 구현되어 있어야만 합니다.



1-1. Travis CI 연동하기


Travis CI는 Github에서 제공하는 무료 CI 서비스입니다.

Jenkins와 같은 CI 툴도 있지만, Jenkins는 설치형이기 때문에 이를 위한 EC2 인스턴스가 하나 더 필요합니다. 

이제 시작하는 서비스에서 배포를 위한 EC2 인스턴스는 부담스럽기 때문에 오픈소스 웹 서비스인 Travis CI를 사용하겠습니다.


1-1-1. Travis 웹 서비스 설정


Github 계정으로 Travis CI에 로그인을 하신 뒤, 본인의 프로필 사진 아이콘을 누르시면 자신의 레포지토리가 있는 MyAccount 페이지로 넘어가게 됩니다.

그 후에 해당 레포지토리의 Integration 옵션을 활성화 시키면 해당 레포지토리의 히스토리 페이지로 이동하게됩니다.


여기까지가 Travis CI 웹사이트에서의 설정입니다. 나머지 설정은 프로젝트의 yml 파일로 진행해야 합니다.


1-1-2. 프로젝트 설정





댓글