SpringBoot 프로젝트에 Jenkins를 이용하여 배포, 테스트 자동화 등을 적용하기 위해 Ubuntu 16.04에서 Jenkins를 설치하는 과정을 기록했다.
Jenkins 설치
apt-get을 이용하여 Jenkins를 설치 하기 위해 저장소 key를 다운받고 (정상적으로 저장소 key를 다운받으면 OK를 반환한다.) 패키지 주소를 sources.list에 더해준다.
$ wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
OK
$ echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
새로 받은 저장소를 적용하기 위해 apt-get을 업데이트한 후에 Jenkins를 설치한다.
$ sudo apt-get update
$ sudo apt-get install jenkins
Jenkins 시작하기
systemctl을 이용하여 Jenkins를 시작할 수 있다. 하지만 결과를 출력해주지 않기 때문에 status를 이용하여 시작이 잘 되었는지 확인해보는 것이 좋다. 잘 동작했다면 아래와 같은 메세지를 출력할 것이다.
$ sudo systemctl start jenkins
$ sudo systemctl status jenkins
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; bad; vendor preset: enabled)
Active:active (exited) since Thu 2017-04-20 16:51:13 UTC; 2min 7s ago
Docs: man:systemd-sysv-generator(8)
...
Firewall 허용하기
Jenkins가 잘 동작하면 웹 브라우저를 통해 접근할 수 있도록 방화벽 설정이 필요하다. Jenkins는 기본적으로 8080포트에서 실행되도록 설정 돼 있다. ufw으로 8080 포트를 허가해줘서 접근할 수 있도록 하고 결과를 확인해본다.
$ sudo ufw allow 8080
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
8080 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
8080 (v6) ALLOW Anywhere (v6)
Jenkins Port 변경
만약 다른 곳에서 8080포트를 사용하고 있으면 중복되어서 Jenkins가 동작하지 않을 것이다. 아래와 같이 jenkins 설정 파일에서 포트를 8081으로 바꿔줄 수 있다.
/etc/default/jenkins
HTTP_PORT=8081
방화벽 또한 8081포트를 허용해주고 Jenkins를 재시작하면 된다.
$ sudo ufw allow 8081
$ sudo systemctl restart jenkins
Jenkins 설정
이제 웹 브라우저를 통해 Jenkins에 접속할 수 있다.
http://ip_address_or_domain_name:8080
포트를 변경했다면,
http://ip_address_or_domain_name:8081
으로 입력한다.
처음 접속했다면 아래와 같은 화면이 보일텐데 Jenkins를 설치할 때 생성된 /var/lib/jenkins/secrets/initialAdminPassword 파일의 내용을 빈칸에 입력해야한다.

cat 명령으로 파일의 내용을 출력한 후 복사해서 붙여넣자.
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
완료되면 두 가지 선택사항이 나오는데 Select plugins to install을 클릭하면 설치하고 싶은 plugins를 선택할 수 있다. 권장하는 설치 항목들을 설치하고 싶다면 Install suggested plugins를 선택하자.

설치가 완료되면 admin 계정을 생성하고,

Start using Jenkins 을 클릭하면 완료된다.
