Ec2 Jenkins에 Github private repository SSH로 연동하기
사전 필수 준비
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 등 다양한 방법이 있으니 알아보시면 좋을 거 같습니다.
'DevOps' 카테고리의 다른 글
MSA 환경에서 분산 추적시스템 적용하기 (0) | 2022.03.13 |
---|---|
다양한 도커 이미지 생성 방법 및 최적화 방법. (Spring boot) (0) | 2021.10.01 |