깃허브와 젠킨스를 연동하여 깃허브 브랜치에 push가 되면 젠킨스 빌드가 실행되도록 하는게 것이 목표
테스트에 사용할 코드 준비
- git hub에 테스트에 사용할 repository를 생성하고 로컬에 클론해서 로컬에도 생성해 둔다
- project.sh 파일을 만들고 파일 내용 echo "깃허브 웹훅과 젠킨스 좝 연동하여 빌드하기" 작성하여 두자
ngrok 설정
로컬 호스트 주소를 외부에서 접속할 수 있도록 해주는 프로그램
ec2나 서버에 있는 젠킨스를 사용하는 것이라면 ngrok 필요없으므로 넘어가도 됨
나는 로컬에 젠킨스를 도커로 설치하였기에 필요함
- ngrok 사이트에 가입
- https://ngrok.com/download 에서 다운로드
- 터미널에서 ngrok 명령어 입력 후 설치 확인
- ngrok에 로그인 후 your authtoken 확인
- ngrok authtoken 위에서확인한토큰 입력 후 토큰 추가
- ngrok http 사용할포트 작성하고 엔터치면 나오는 것들 중에 Forwarding 주소 확인 후 브라우저에 입력하고 접속되는지 확인
ngrok http 8080
Jenkins Job 등록
- 젠킨스 대시보드에서 왼쪽 상단에 있는 새로운 Item 선택
- 아이템 이름 작성하고 Freestyle project 선택하고 OK 버튼 클릭
소스 코드 관리 부분 작성
- Git 선택
- Repository URL에 저장소 경로를 입력
- Credentials에서 Add 클릭
- Jenkins Credentials Provider 작성
- Kind는 Username with password
- username과 password에 github 계정 정보 입력
- Add 후 Credentials에서 방금 생성한 것으로 선택
- 실제 프로젝트에서 사용할 때는 여기 참고하기 https://jojoldu.tistory.com/442
- Branches to build에서 빌드가 되길 원하는? 브랜치 작성
- 기본으로 */master가 하나 있고
- 다른 브랜치도 추가할거면 Add Branch 클릭 후 추가
빌드 유발(build trigger)
빌드 유발은 위에서 작성한 소스 코드 관리에 등록한 소스 저장소의 master branch에 코드가 push 될 때 빌드되게 Github hook trigger for GITScm polling 을 선택
Build
깃허브에 있는 project.sh 파일을 실행하도록 파일명 작성
chmod 774 ./project.sh
./project.sh
github에 jenkins 연결하기
-
github에 접속하고 Settings > Webhooks > Add webhook 으로 새로운 Webhook을 추가
-
Payload URL 작성
-
나는 로컬에 있으니까 ngrok을 통해서 생성한 주소 입력
- ❗️ 주의 - ngrok을 멈추고 다시 실행하는 경우 forwarding 주소가 바뀌기때문에 webhook에서 변경된 주소로 수정해줘야 함.
-
webhook을 트리거할 이벤트는 첫번째 꺼 선택. push가 들어오면 젠킨스에 쏘기
젠킨스 테스트
- 대시보드에서 새로 생성한 job 확인하고 클릭
- 왼쪽 메뉴 중 build now 클릭해서 빌드 실행
- 테스트 레파지토리에 push하고 빌드 실행 됐는지 확인
- #3 은 build now로 실행한 결과
- #4 는 pust해서 빌드된 결과
참고
https://blog.outsider.ne.kr/1159
https://jojoldu.tistory.com/139
https://choseongho93.tistory.com/297