만쥬의 개발일기
article thumbnail

 

Github to Jenkins Webhook 설정하기

깃허브에서 Webhook 설정

깃허브의 프로젝트 ➡️ settings➡️Webhooks ➡️Payload URL에

Payload URL을 '{Jenkins 서버IP:PORT}/github-webhook/'로 적은 후 저장한다.

 

Webhook 테스트

저장 후 Recent Deliveries 탭에서 Webhook을 보내고 정상적으로 되는지 확인한다.

 

 

젠킨스 Jenkins Job 설정

Github에서 Webhook을 보내고 Jenkins가 수신하는 것까지 완료된 것이고 Webhook을 받았을 때 자동으로 Jenkins Job이 실행되도록 하려면 Jenkins Job 설정에서 Github hook trigger for GITScm polling 체크박스를 활성화해주면 된다.

 

 

Jenkins to 배포 서버 SSH 설정

해당 프로젝트에서는 원격 서버에 배포 시 SSH로 원격 서버에 접속해서 배포를 진행했다.

SSH 접속에 필요한 Jenkins 플러그인 Publish over SSH를 설치한다.

1.Jenkins Dashboard > Jenkins 관리 > 플러그인 관리 > Available plugins로 이동

2.Publish over SSH 검색 후 체크박스 활성화하고 다운로드 및 설치 버튼을 누른다.

 

Jenkins 서버에서 SSH 키 설정

ssh Key 생성

Jenkins 서버에서 배포 대상 서버에 SSH로 접속하려면 인증을 위한 Key 설정을 해줘야한다.

Jenkins 서버에서 Jenkins 계정으로 로그인한 상태에서 다음 명령으로 비대칭키를 생성한다.

ssh-keygen -t rsa -m PEM

 

반드시 PEM format으로 키를 생성해야지 동작한다.

 

 

배포 서버에 PUB키 설정

다음 생성된 키 중 id_rsa.pub은 배포 대상 서버로 옮겨 주어야 한다.

 

먼저 배포 서버에 접속 후, jenkins 서버에서 생성한 pub키를 복사해온 뒤 다음 명령어로 autohrized_keys 파일에 등록해준다.

cat {.pub 파일} >> {authorized_keys 파일}

 

 

 

jenkins에 private 키 설정

 

Jenkins Dashboard ➡️ Jenkins 관리 ➡️ Configure System ➡️ Pushlish over SSH로 이동한 뒤,

path to key에 key 경로를 적거나 key에 내 private key를 복붙한다.

그 아래에 SSH Servers를 하나 추가하고, 서버의 이름(원하는 이름)과 Hostname (배포 서버의 ip 주소) , 그리고 접속할 username을 적어주고 Remote Directory는 처음 접속할 경로를 의미한다.

 

이후 Test Configuration으로 접속을 테스트해본다.

 

Application 자동 배포 설정

젠킨스 대시보드 ➡️ 내 프로젝트 ➡️ 구성 ➡️ build Steps로 이동한다.

이후 Add build step을 누르고, Send files or execute commands over SSH를 선택한다.

 

Source files : 빌드가 끝난 후 jenkins 서버에서 결과물로 나온 파일 경로

Remote directory : 배포 서버 내 파일을 보낼 경로

Exec Command : 배포 서버 내에서 Application을 실행시키는 명령어. (쉘 스크립트 등으로 만들어둔다.)

 

이제 자동 배포 설정은 끝났다.

다음 포스팅에서 설정 마무리와 결과물을 확인해보자.

 

 

reference

profile

만쥬의 개발일기

@KangManJoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!