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
'♾️DevOps > ♾️CI & CD' 카테고리의 다른 글
[CI/CD] - 무중단 배포 with CI/CD 2: github action을 활용한 CI 편 (0) | 2024.02.26 |
---|---|
[CI/CD] - 무중단 배포 with CI/CD 1: nginx + spring 로드 밸런싱 편 (0) | 2024.02.26 |
[Trouble Shooting] - 젠킨스 빌드 시 error: external filter 'git-lfs filter-process' failed 에러 해결하기 (1) | 2023.12.30 |
[CI/CD] - 도커와 젠킨스를 사용한 CI/CD -3 (도커의 설치부터 자동배포까지) (0) | 2023.10.22 |
[CI/CD] - 도커와 젠킨스를 사용한 CI/CD -2 (도커의 설치부터 자동배포까지) (0) | 2023.10.22 |