jenkins

jenkins - 배포 자동화 하기 - jenkins 설치(1)

nerd mix 2019. 11. 12. 09:30

jenkins를 사용하여 배포를 자동화 하는 방법을 알아보도록 하겠습니다.

웹서버나 API서버등을 개발하여 서버에 배포를 할 때 한번에 작업만으로

서비스를 완성하는 경우는 없습니다.

제가 몸 담고 있는 회사의 경우도 스타트업이고 아직 수정사항이 빈번하다보니

매번 소스코드를 수정하고 배포를 하는 일이 여간 귀찮은 일이 아닙니다.

저는 API 서버 개발, 블록체인 개발도 하지만 클라우드 서버를 관리하다 보니

다른 개발자가 개발한 소스코드를 배포를 하는 일도 같이 합니다.

본인의 소스코드를 배포하는 일도 많은데 남의 일도 해주다보니 본인의 일도 밀리는

일이 많아서 배포를 자동화하는 방법을 알아보게 되었습니다.

jenkins를 사용하는 개발자들의 시작은 모두 이렇다고 생각됩니다.

자 그럼 본격적으로 jenkins를 사용하여 bitbucket에 연동하는 법과 webhook를 사용하여

자동으로 소스코드가 push 되면 서버에 배포하는 방법을 알아봅시다.

** 일단 저는 nodejs, docker, aws ec2를 사용하여 환경을 구성하였습니다.

** 소스코드를 개발, ec2 기본 설정을 했다는 전제로 시작하겠습니다.

순서는 다음과 같습니다.

1. ec2에 접속하여 jenkins를 설치한다.

2. 웹으로 jenkins에 접속한다.

3. bitbucket에서 webhook 설정을 한다.

4. jenkins에서 bitbucket 정보를 넣어준다.

5. jenkins에서 소스코드를 받은 후에 실행할 스크립트를 넣어준다.

이번 글에서는 1번과 2번에 대한 방법을 알아보겠습니다.

ec2에 접속하여 java를 설치합니다.

$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt-get update 
$ sudo apt-get install openjdk-8-jdk openjdk-8-jre

jenkins를 설치합니다.

$ wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
$ sudo apt-get update
$ sudo apt-get install jenkins
$ sudo systemctl start jenkins

jenkins가 실행이 되었는지 확인을 해봅니다.

$ systemctl status jenkins.service
● jenkins.service - LSB: Start Jenkins at boot time
   Loaded: loaded (/etc/init.d/jenkins; generated)
   Active: active (exited) since Wed 2019-11-06 10:33:29 UTC; 1 day 2h ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 0 (limit: 4703)
   CGroup: /system.slice/jenkins.service

Nov 06 10:33:25 ip-172-31-44-231 systemd[1]: Starting LSB: Start Jenkins at boot
Nov 06 10:33:27 ip-172-31-44-231 jenkins[878]: Correct java version found
Nov 06 10:33:27 ip-172-31-44-231 jenkins[878]:  * Starting Jenkins Automation Se
Nov 06 10:33:27 ip-172-31-44-231 su[1317]: Successful su for jenkins by root
Nov 06 10:33:27 ip-172-31-44-231 su[1317]: + ??? root:jenkins
Nov 06 10:33:27 ip-172-31-44-231 su[1317]: pam_unix(su:session): session opened
Nov 06 10:33:27 ip-172-31-44-231 su[1317]: pam_unix(su:session): session closed
Nov 06 10:33:29 ip-172-31-44-231 jenkins[878]:    ...done.
Nov 06 10:33:29 ip-172-31-44-231 systemd[1]: Started LSB: Start Jenkins at boot

위와같이 로그가 나온다면 성공한 것입니다.

하지만 제가 했을 때에는 처음부터 위와같이 나오지 않고 다시 시작하면 실행이 된다는 에러가 발생했습니다.

사실 위에 로그를 보더라도 boot를 하면서 실행이 되었다고 나온 것을 보면 알 수 있습니다.

때문에 저는 ec2인스턴스를 다시 시작했습니다. (다소 무식한 방법?)

jenkins가 실행이 되었다면 web으로 jenkins를 실행해봅니다.

실행을 하면 다음과 같은 화면이 뜨게 됩니다.

그러면 화면에 빨간글씨로 표시된 경로를 vi 편집기로 열어 키를 복사하여 Administrator password에 붙여넣기를 해주고 continue.

그 다음으로는 plugin을 설치에 대한 화면이 뜨게됩니다.

일단 잘 모르는 상태이니 추천을 해주는 방식으로 진행합니다. (왼쪽)

그러면 이렇게 진행상태를 보여주게 됩니다.

plugin 설치가 끝나면 계정을 생성하게 됩니다.

계정을 생성하면

다음과 같은 화면이 나오고 이제 젠킨스를 사용할 수 있게 되었습니다.

save and finish를 클릭하게 되면

로그인을 하여 사용할 수 있습니다.