고딩왕 코범석

2. Github Repository의 코드를 Build해보자! 본문

Infra/CI & CD

2. Github Repository의 코드를 Build해보자!

고딩왕 코범석 2021. 6. 23. 13:38
반응형

안녕하세요! 이번 시간에는 Github에서 코드를 푸시했을 때, 젠킨스가 자동으로 빌드하는 과정을 포스팅하려고 합니다.

진행하기 전에

저는 우선 스프링 프로젝트를 깃 레포지토리에 등록한 상황이고, 이번 포스팅에서는 수동으로 build 하는 것 까지만 진행할 예정입니다. blue green 배포를 하기 위해서는 조금 더 공부가 필요해서 빠른 시간내에 포스팅 하도록 하겠습니다.

바로 시작해볼게요! 먼저, 앞에 포스팅에서 진행했던 젠킨스를 접속한 다음, Jenkins 관리 > 플러그인 관리를 들어가서 Publish Over SSH 플러그인을 다운받아 줍시다.

1번

다운로드 받은 후 재시작을 통해 성공적으로 플러그인이 다운받아졌는지 확인해봅시다. 방금과 똑같은 위치에서 설치된 플러그인 목록에서 Publish Over SSH를 검색해보시면

image

다음과 같이 플러그인이 설치된 것을 확인할 수 있습니다.

이번에는 Jenkins에서 Github에 접근하기 위해 ssh 키를 등록하는 과정을 살펴보겠습니다.
앞의 과정에서 Docker로 Jenkins를 컨테이너로 올릴 때, 볼륨 옵션으로 /home/jenkins에 마운트한 걸 기억하시나요? ec2의 /home/jenkins 경로에서 ssh 키를 발급받아 보겠습니다.

sudo mkdir /home/jenkins/.ssh

sudo chmod 700 /home/jenkins/.ssh

sudo ssh-keygen -t rsa

그리고 키를 발급받을 위치는 /home/jenkins/.ssh/id_rsa로 지정해줍시다.

image

그 다음, sudo 명령어를 통해 파일들을 확인해보겠습니다.

sudo cat /home/jenkins/.ssh/id_rsa

sudo cat /home/jenkins/.ssh/id_rsa.pub

두 명령어를 입력하면 암호화된 문자들을 볼 수 있을겁니다. sudo cat /home/jenkins/.ssh/id_rsa.pub를 실행했을 때 나온 값을 잘 복사해줍시다.

image

이제 깃허브에 들어가서 settings에 들어갑시다.

image

그 다음, SSH and GPG keys메뉴에 들어가서 New SSH Key를 클릭!

image

그리고 아까 복사했던 id_rsa.pub 값과 Title을 입력해주면 됩니다. Title은 jenkins-docker로 작성했어요. 다 작성했으면 Add SSH Key를 클릭해줍시다.

image

다음과 같이 ssh key값이 입력된 것을 확인할 수 있습니다.

이제, Jenkins에서 프로젝트를 등록해보겠습니다. 먼저 Github에서 새로운 레포지토리를 파주신 다음, url을 복사해놓겠습니다. HTTPS가 아닌 SSH URL을 복사해주세요!

image

그리고 Jenkins의 새로운 Item을 클릭하고 item name을 입력, Freestyle Project를 선택해주세요. 저는 item name을 jekins-project라고 지정했습니다.

image

소스코드 관리 항목에서 Git을 체크, Github의 저장소를 추가합니다.

image

다음과 같이 에러가 발생할텐데, Credentials의 Add 버튼, Jenkins를 눌러 접속 계정을 세팅해주어야 합니다. 그럼 이런 화면을 볼 수 있어요.

image

Kind를 SSH Username with private key, ID는 Jenkins의 기본값인 jenkins, Username은 아무거나(저는 jenkins-docker로 지어주었습니다.) private key란에 Enter Directly 라디오버튼을 누르고 private key를 추가합시다.

private key는 위에서 만든 id_rsa를 복사하여 붙여넣어 줍시다. 그리고 add 버튼을 눌러주고 credentials에 방금 만든 jenkins-docker를 선택하면

image

에러가 사라진 것을 확인할 수 있습니다.

이제 밑으로 내려가서 Build 항목에 Add build step > Invoke Gradle script를 눌러줍시다.

image

그리고 밑의 사진처럼 입력해주시고 저장해주세요!

image

Github에서 푸시할 때, 빌드가 자동으로 되도록 설정하기 전에 수동으로 빌드가 되는지 확인해보겠습니다. 왼쪽 메뉴바에서 build now를 눌러주세요.

image

기다리시면 밑에 빌드가 진행중일 것입니다. 조금 기다리면 결과를 알 수 있어요.

image

음... 빌드가 실패했다고 뜨네요.. #1 바로 옆에 화살표를 눌러 Console Output을 들어가봅시다.

image

자바 11버전이어야 하는데 버전이 맞지 않아 에러가 떴네요! 일단 EC2에 있는 젠킨스에 다시 접속한 다음, 자바 버전을 살펴볼게요.

docker exec -it jenkins-docker /bin/bash

image

역시... 버전이 맞지 않았네요.. 제가 1편에서 jenkins 이미지를 받을 때, jdk11 버전으로 받아야했어요.. 이 부분은 수정 되었으니 아마 여러분들은 이 에러가 발생할 일이 없을 겁니다...!

자, 그럼 다시 수동으로 빌드해볼까요?

image

정상적으로 빌드가 된 것을 확인할 수 있습니다! 빌드되었는지 확인해보려면 jenkins 컨테이너로 접속해서 해당 디렉토리로 가봅시다!

docker exec -it jenkins-docker /bin/bash

cd /var/jenkins_home/workspace/jenkins-project

ls

디렉토리에서 파일들을 살펴보면 제 깃 레포지토리에 있는 파일들이 그대로 있는 것을 볼 수 있습니다!

image

이번 포스팅은 여기서 마무리하겠습니다.다음 시간에는 Github 저장소에 푸시할 때, 자동으로 빌드하는 과정을 살펴보겠습니다! 언제나 피드백은 환영합니다!

반응형