Study Note

Github + Jenkins 연동과 Jenkins로 Build 후 ssh로 배포하기 1 본문

Jenkins

Github + Jenkins 연동과 Jenkins로 Build 후 ssh로 배포하기 1

moreLearn 2020. 2. 22. 04:20

다음 그림과 같은 형식 CI/CD를 구현해 보겠습니다.

Jenkins 설치

OS가 ubuntu인 ec2에 jenkins를 설치하겠습니다.

jenkins는 java가 설치되어 있어야 하기 때문에 java를 설치하겠습니다.

 

다음과 같이 openjdk-8-jdk를 설치합니다.

1
2
3
sudo add-apt-repository ppa:webupd8team/java
sudo apt update
sudo apt-get install openjdk-8-jdk

 

java -version을 통해 java가 잘 설치되었는지 확인합니다.

 

저는 maven으로 build할 예정이기 때문에 sudo apt-get install maven를 통해서 maven을 설치합니다.

mvn -vsertion 또는 mvn -v를 통해 버전을 확인할 수 있습니다.

 

다음은 jenkins를 설치하겠습니다. 아래 명령어를 입력하여 jenkins를 설치합니다.

1
2
3
4
wget --- https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
sudo apt-get update
sudo apt-get install jenkins
 

 

설치가 된 후 systemctl status jenkins를 통해 jenkins가 설치가 되고 작동하고 있는 모습을 볼 수 있습니다.

 

이렇게 작동 중인 jenkins는 defult로 8080포트를 사용하고 있습니다.

EC2의 퍼블릭 ip를 통해 접근할 때 ip:8080형식으로 접속하면 다음과 같은 화면이 출력됩니다.

 

jenkins는 /var/lib/jenkins/secrets/initialAdminPassword에 Administrator password를 저장합니다.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword 명령어를 통해 password를 얻을 수 있습니다.

 

passwrod를 다음과 같이 입력하고 Continue로 넘어갑니다.

 

다음과 같은 화면이 나오는데 추천 플러그인 설치를 선택합니다.

 

설치가 완료될 때까지 기다립니다.

 

다음 접속부터 사용할 관리자 계정 정보를 등록합니다.

 

여기까지 왔으면 jenkins 설치가 완료되었으며 다음과 같은 jenkins 화면을 볼 수 있습니다.

 

저는 maven을 통해서 build할 예정이기 때문에 추가 설정을 해야 합니다.

다음과 같이 Global Tool Configuraion으로 갑니다.

 

저는 jdk와 maven을 설정했습니다. 각각 이름과 경로를 입력하고 저장합니다.

Jenkins + Github 연동

jenkins가 설치된 ec2에서 ssh-keygen을 통해서 key를 생성하겠습니다.

Enter를 눌러 넘어가면 다음과 같이 key가 만들어집니다. 이때 id_rsa, id_rsa.pub이 생성됩니다.

 

cat /home/ubuntu/.ssh/id_rsa를 통해 출력되는 key를 복사합니다.

 

그림 같은 순서대로 접속합니다.

 

Add Credentials를 통해 key를 생성합니다.

 

다음과 같이 입력하여 등록합니다. 입력되는 Key는 이전에 복사한 ssh key입니다.

 

이제 연동할 Github repository를 설정합니다. 저는 spring boot를 공부할 때 생성한 repository를 사용하겠습니다.

다음 그림과 같이 접속하여 deploy key를 생성합니다.

 

cat /home/ubuntu/.ssh/id_rsa.pub 명령어를 통해 이전에 생성한 id_ras.pub을 복사하여 key에 붙여 넣습니다.

 

그림과 같이 접속하여 Add webhook을 통해 webhook을 생성합니다.

 

payload URL에는 http://jenkins URL:8080/github-webhook/ 형식으로 입력합니다.

이렇게까지 하면 Github repository에서의 설정이 끝납니다.

 

이제 Jenkins에서 새로운 Item을 통해 item을 등록합니다.

 

Enter an item name에 원하는 item 이름을 입력하고, Freestyle project를 선택합니다.

 

소스 코드 관리에서 Git을 선택합니다.

Repository URL에  git@github.com:Github사용자명/프로젝트명.git 형식으로 입력하고

Credentials는 아까 생성한 key를 선택합니다.

 

GitHub hook trigger for GITScm polling을 선택해야 github에 push 이벤트가 오면 자동으로 실행합니다.

 

Build에서 Invoke top-level Maven targets를 선택합니다.

Maven Version에는 Global Tool Configuraion에서 설정한 maven을 선택합니다.

Goals에 clean package를 입력하여 저장합니다.

 

이제 git에서 push를 하면 jenkins에서 자동으로 Build가 됩니다.

Build Now를 통해 수동으로 Build를 할 수 있습니다.

글이 너무 길어져서 다음 글에 이어서 작성하겠습니다.

 

이 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.