프로젝트의 자동 빌드 및 배포를 목적으로 CI/CD (Continuous Integration/Deployment) 를 적용하기로 했다.
CI tool 중 가장 많이들 사용하는 jenkins 와 AWS 에 최적화 된 우리에게 적합한 CodeDeploy 를 테스트하고 비교해 보기로 했다.
[필수 요구 조건]
- 하나의 VCS 에서 모듈 별로 배포가 가능해야 한다.
- 운영/개발 서버별로 배포가 가능해야 한다.
- 배포시 특정 서버를 선택할 수도 있어야 한다.
현재는 로컬에서 빌드하고 S3에 업로드 하고 각 서버들에서 배치파일을 실행하여 배포가 되는 식이다.
이것을 VCS 에서 특정 모듈을 특정 서버로 자동 배포하는 방식으로 바꾸려는 것이다.
1. Jenkins 란
Jenkins 는 Java 로 제작된 CI 오픈소스 툴이다.
소프트웨어 빌드, 테스트 및 배포와 같은 모든 종류의 작업을 자동화하는 데 사용할 수 있다.
2. 설치 전 요구사항
- Java 8 (최소 7)
- 1GB+ 메모리 (최소256M)
- 50GB+ (최소1G)
3. 다운로드 / 설치
Jenkins 는 Docker 로도 설치할 수 있고, Tomcat 에 서블릿으로도 설치할 수 있고, 서버에 독립형(Standalone) 으로도 설치가 가능하다.
난 설정이 번거롭긴 하지만 깔끔하게 독립형으로 진행해 본다.
- Redhat / Centos
$ wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo $ rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key $ yum update $ yum install jenkins | cs |
- Debian / Ubuntu
$ wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - $ sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' $ apt-get update $ apt-get install jenkins | cs |
나머지 OS 는 사이트 document 참고 - https://jenkins.io/doc/book/getting-started/installing/
4. 환경 설정
/etc/sysconfig/jenkins 설정 파일에서 필요한 부분을 확인/수정한다.
(JENKINS_HOME, JENKINS_USER, HTTP_PORT 등)
HTTP_PORT 를 수정하여 브라우저 접속 포트를 변경할 수 있다.(기본 8080)
5. 데몬 실행
$ service jenkins start | cs |
6. Jenkins 사이트 설정
jenkins 데몬을 실행하고 브라우저로 해당 서버에 접속하면 (http://ip or domain:8080/) jenkins 가 잠겨 있는데,
서버의 특정 위치(예:/var/lib/jenkins/secrets/initialAdminPassword) 에 생성된 password 를 복붙하여 다음 화면으로 이동한다.
- Customize Jenkins
다음으로 플러그 인을 설치하는 화면인데 필요한 플러그인을 모른다면, 일단 기본(추천) 하는 플러그인만 설치한다.
이렇게나 많은 플러그인 들이 기본으로...
- Create First Admin User
다음은 jenkins 를 관리할 관리자 계정을 생성하면 관리자 화면으로 이동하게 되고 설치를 일단락한다.
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.