본문 바로가기
GITHUB

github push할 때 Jenkins 자동 빌드 설정

by 햄과함께 2018. 11. 10.
반응형

기록용.


새로운 ITem 클릭



이름 적고 Freestyle project 로 생성.


GitHub project 클릭 > git url 복붙.


소스 코드 관리 > Git > Repository URL 작성.

브랜치는 master 브랜치로 설정했다.


빌드 > GitHub hook trigger for GITScm polling 클릭.

깃허브에서 훅이 날라오면 자동 빌드되게 설정했다.


테스트하려는 프로젝트가 gradle을 사용했기 때문에 Add build step > Invoke Gradle script 추가했다.

Invoke Gradle 선택. Tasks는 간단하게 기본으로 "clean build" 적어줬다.


설정을 저장해준 다음 왼쪽편에 Build Now를 누르면 바로 빌드할 수 있다.


그런데 fail이 떠서 콘솔 화면을 확인해봤더니 해당 프로젝트 빌드를 위해서는 gradle 버전이 4.0 보다 높아야한다고 한다. 

그런데 현재 젠킨스 서버에서는 1.4를 사용 중이라고..

gradle 업그레이드가 필요해보인다.


서버 접속해서 gradle 버전 확인 -> 1.4


sudo add-apt-repository ppa:cwchien/gradle
sudo apt-get update
sudo apt upgrade gradle
cs

위 명령어로 gradle 버전 업그레이드

참고 : https://askubuntu.com/questions/932083/how-do-i-upgrade-gradle


다시 버전 확인 > 4.10.2


다시 Build Now를 눌러보면 성공적으로 빌드가 완성되었음을 확인할 수 있다.



이제 github 프로젝트 master 브랜치에서 아무거나 수정해서 push를 해봤다.

원래 목적대로라면 master 브랜치에서 push 이벤트가 발생했으므로 젠킨스 자동 빌드가 되어야 했는데 감감무소식이다.


생각해보니 github에서 webhook 설정을 안 함.

github에서 push 시에 젠킨스 서버로 webhook을 날려줘야 해당 이벤트를 받아 젠킨스 서버가 프로젝트를 빌드하는 구조여야 한다.



일단 토큰이 필요하다. 인증하는 절차인 듯하다. (젠킨스 - 깃허브 간 통신이 믿을만한지. 인증되었는지 이런거?)


github 오른쪽 위에 유저 아이콘 > Settings > Developer Settings > Personal access tokens > Generate new token 

Token description 작성.

repo, admin:repo_hook 선택.


token이 완성되면 문자열이 생성된다. 해당 문자열 복사.



이제 젠킨스로 돌아와서


Jenkins 관리 > 시스템 설정

아래로 내려가다보면 GitHub가 있다. Add GitHub Server 클릭

Name 작성.

API URL은 도움말 읽어보니 Enterprise 깃헙이 아니라면 default로 적힌 값 그대로 두라고 한다.


Credentials > ADD > Add Jenkins 클릭

Kind - Secret text 

Secret에 아까 복사한 token을 붙여넣는다.

ID에 깃헙 id 적기 > ADD 클릭.

Test connection으로 확인한 번 해보고 저장.


젠킨스 프로젝트에서 왼쪽에 구성을 누른다.

소스코드 관리에서 Credentials등록.

Add 클릭.


Kind - Username with password

Username, Password 적어준다.


이로써 젠킨스 - 깃허브 연동은 완성되었다고 보면된다.


이번에는 깃허브 프로젝트 레파지토리에 가서 해당 레파지토리의 웹훅을 설정한다.


깃허브 레파지토리 > Settings > Webhooks > Add webhook

payload URL : [젠킨스 서버 domain or IP]:8080/github-webhook/ 

8080 포트는 젠킨스 서버 default 포트 번호이고 만약 젠킨스 서버의 포트 번호를 수정했다면 그것에 맞게 바꿔준다.

content type : application/json

Just the push event 선택

Active 선택



등록완료



테스트를 해보자.


왼쪽이 젠킨스 화면이고 오른쪽이 깃허브 화면이다.

깃허브에서 마스터 브랜치에서 커밋을 하나 한다.


그러면 젠킨스에서 Build History에 새로운 빌드가 시작된 것을 확인할 수 있다.




+ 잡담


젠킨스에서 콘솔 출력(Console output)으로 들어가면

workspace 경로를 알 수 있다.


서버에서 해당 폴더 위치로 이동해서 보면 build 폴더가 있다.


build/libs로 이동하면 jar 파일이 있다.

이걸 이제 Nginx - tomcat 설정에 맞게 위치 변경하면 젠킨스 빌드 설정은 끝날 듯하다. (해봐야 알겠지만)

반응형

태그

, ,

댓글0