사전 필수 준비

EC2 생성 및 EC2서버에 jenkins, git 설치

EC2에서  SSH Key 생성

 

SSH KEY를 관리하는 방법은 다양한데요. (SSH란?)

jenkins, home 혹은 github 디렉토리를 따로 만들어서 관리할 수 있습니다.

 

팀내, 개인이 편하신대로 진행해주시면 되겠습니다. 저는 jekins디렉토리에서 관리하겠습니다.

 

SSH 폴더 생성

sudo -u jenkins mkdir /var/lib/jenkins/.ssh

# sudo -u user command: user의 권한을 빌려서 실행합니다.

jenkins 유저의 권한을 빌리는 이유는 ec2-user는 권한이 없기 때문입니다.

저는 편의상 권한을 빌려서 실행했는데, 그냥 jenkins 계정으로 변경 후 실행하셔도 됩니다. 

 

SSH Key 생성

sudo -u jenkins ssh-keygen -t rsa -f /var/lib/jenkins/.ssh/id_rsa_deploy-test

# -t rsa: rsa 암호화 방식을 이용한다.
# -f: 생성할 파일 경로 및 이름 
저는 id_rsa_{project_name}으로 했는데 원하시는 이름으로 생성하시면 됩니다.

 

명령어를 입력하면 다음과 같은 메세지가 출력되는데,  이는 SSH로 연결할 때 패스워드를 추가로 입력할 것이냐는 뜻입니다.

패스할 거니 그냥 엔터를 입력하면 됩니다.

 

 

정상적으로 비밀키와 공개키가 생성된 것을 확인할 수 있습니다. ~.pub이 공캐키이며 확장자 없는것이 비밀키입니다.

 

비밀키는 절대 무슨일이 있어도 노출되서는 안 됩니다.


Github Repositoy 연동

 

연동할 rpeository  Setting -> Deploy keys -> Add deploy key

 

그럼 다음과 같은 화면이 나옵니다.

Key는 아까 만들어놓은 ~.pub에 있는 내용을 빠짐없이 복사해서 붙여넣기 해주시면 됩니다.

 

 

 

cat /var/lib/jenkins/.ssh/id_rsa_deploy-test.pub

// 공개키 확인

 

 

입력을 끝낸 뒤 Add Key 버튼을 누르면 정상적으로 등록이 완료된 것입니다.

 

Web hook 설정

 

(지금 하는 건 Jenkins를 설치만 한 상태면 안 됩니다. 실행 시키고 최초 접속을 해주세요)

 

Payload URL에 다음과 같이 입력합니다.

http://{jenkins public IP DNS or public IP address}:port/github-webhook/

저는 리버스 프록시를 따로 설정하지 않았으니 젠킨스의 기본 포트인 8080을 적었습니다.

 

 

위 사진과  ✅가 생기면 정상적으로 설정이 완료된 것입니다.

 


Jenkins 설정

 

Jenkins에 SSH Key 등록

Jenkins 접속 후 -> Jenkins관리 -> Manage Credentials

 

 

(global) -> Add Credentials 클릭

 

다음과 같이 입력해줍니다. 

Key는 아까 만든 비밀키전체 그대로 복사해서 붙여넣기 해주세요.

 

 

 

 

Jenkins Project 생성

 좌측 사이드바에 새로운 item을 클릭

 

소스 코드 관리

 

Credentials: 방금 만든 자격을 선택해줍니다.

Repository URL: 깃헙 리퍼지토리에 들어가서 밑에 사진 처럼 링크를 복사해주세요

master: master 브랜치에 이벤트를 연결합니다.

 

 

트리거도 설정해줍시다. (위에 설정한 master 브랜치에 push가 되면 자동으로 빌드합니다)

 

 

Build

 

Build ->  Add build step -> Execute Shell

 

 

Build 실행

 

이제 생성이 완료되었습니다.

해당 프로젝트를 클릭 한 뒤 Build Now를 클릭해서 실행해봅시다.

 

 

 

좌측 사이드바에 빌드 로그를 확인할 수 있습니다.

 

 

로그를 내리다 보면 정상적으로 빌드가 성공한 것을 확인할 수 있습니다.

 

실패했을 경우 로그를 확인해보시고 원인을 찾아보시고 안 되면 댓글 남겨주시면 같이 해결해드리겠습니다.

 

 

 

그럼 마지막으로 jar 파일을 직접 확인해보도록 하겠습니다.

 

gradle 기준입니다.

cd /var/lib/jenkins/workspace/{project-name}/build/libs

 

jar파일이 정상적으로 생성되었음을 확인할 수 있습니다.

 

 

이제 파일을 수정 한 후 설정해놓은 트리거 브랜치에 push를 진행해보시고 자동으로 빌드를 하는지 확인해보시길 바랍니다.

위 단계를 정상적으로 수행하셨으면 자동으로 빌드를 수행할 것입니다.

 

(aws에서 ec2를 중지 후 다시 실행하면 public ip (public DNS또한) 변경되니 다시 설정해주셔야 합니다. 만일 변경되는걸 원치 않으실 경우 탄력적 ip 등 다양한 방법이 있으니 알아보시면 좋을 거 같습니다.