[젠킨스 구축] 2. github 연동 - f-lab-edu/jshop GitHub Wiki
이제 설치한 젠킨스를 github 와 연동해야 한다.
github에서 특정 작업이 이루어지면, 젠킨스에서 알림을 받아 정의된 파이프라인 (테스트, 빌드) 등을 자동을 수행하기 위함이다.
이번 글에서는 다음과 같은 과정을 수행한다.
- jenkins 컨테이너의 ssh-key 생성
- 생성된 ssh-key 공개키 github 등록
- 생성된 ssh-key 개인키 젠킨스 등록
- jenkins에서 깃헙 레포와 연동된 item(pipeline) 생성
- 깃헙 레포의 젠킨스 웹훅 등록
ssh-key 생성
나는 보통 github에 ssh-key를 사용해서 통신한다.
공개키를 깃헙에 저장해두고 편하게 사용하기 위함이다.
젠킨스도 동일하게 사용하기 위해서 ssh 키를 생성한다. 이 ssh 키는 이후 몇번 더 사용된다.
젠킨스 컨테이너에서 쉘을 실행해 키를 생성한다.
docker exec -it {jenkins_container} bash
-it
모드로 쉘을 실행시켜 jenkins 컨테이너 내부에서 명령을 실행한다.
ssh-keygen
생성된 키는 ~/.ssh
디렉토리에 위치한다. id_rsa
가 개인키, id_rsa.pub
이 공개키다.
공개키 깃헙 등록
공개키를 깃헙에 등록한다.
github -> settings -> SSH and GPG keys
에서 ssh 키를 등록한다.
키로 사용할 이름과 공개키를 등록한다.
개인키 젠킨스 등록
이제 젠킨스에서도 사용할 개인키를 직접 등록해 줘야 한다.
젠킨스관리 -> Credentials
에서 global scope을 선택한다.
Add Credentials 로 새로운 키를 등록한다.
키의 종류는 SSH Username with private key로 등록한다.
적당한 ID, Username 으로 새로운 Credentials를 만든다. 아래 Private Key에 Enter directly를 선택해 생성한 개인키를 복사해 넣는다.
github 레포 등록
젠킨스에서 새로운 Item을 선택해 github 레포를 등록한다.
난 파이프라인을 구성할것이기 떄문에 파이프라인을 선택한다.
Build Triggers를 GITScm Polling으로 선택한다.
Pipeline에서 Pipeline script from SCM을 선택하고 SCM을 Git으로 선택하면 입력창이 나오게 된다.
여기서 연동하려는 레포의 ssh 주소를 복사해 붙여넣는다.
ssh 주소 (
git@
) 을 넣으면 다음과 같은 오류가 나올 수 있다.
이때는 젠킨스 컨테이너로 이동해 다음 명령을 수행해
github.com
이라는 도메인을 알 수 있도록 해준다.ssh-keyscan github.com >> ~/.ssh/known_hosts
이제 빌드를 할 기준 브랜치를 설정하고, 젠킨스 파일의 경로를 잡아주면 된다.
일단 위와같이 test 브랜치, 루트경로의 Jenkinsfile
로 기준으로 설명한다.
웹훅 등록
이제 github에서 이벤트가 일어날때 이를 전달할 웹훅을 등록한다.
레포지토리에서 Settings -> Webhooks
에서 웹훅을 등록할 수 있다.
이때 등록할 URL은 {젠킨스 서버의 IP, 도메인}/github-webhook/
으로 등록해야 한다.
이때 꼭 마지막에 /
를 넣어줘야 한다. (혹시 처음에 안넣고 수정해서 넣더라도 계속 오류가 난다. 처음 잘못 넣었다면 삭제후 다시 등록)
컨텐츠 타입은 json으로 설정하고 웹훅을 등록한다.
정상적으로 웹훅이 등록되면 다음과 같은 초록색 체크표시가 나오게 된다.
여기까지 됐다면 github-jenkins 의 연동 준비는 끝났다.