본문 바로가기
개발툴

Jenkins + Atlassian Stash(Git) 연동

by 탁구치는 개발자 2014. 1. 15.

사내에서 Git을 사용하게 되어 개발 장비에 Jenkins와 Git 연동을 준비하였는데 진행 과정에서 다소 삽질이 많았던 터라 정리한다.


plugin 설치


Jenkins 관리 > 플러그인 관리 페이지 이동 후 Jenkins GIT plugin을 설치한다.

해당 플러그인을 설치하게 되면 dependency plugin 들이 자동으로 설치가 되는데 그 대상이 되는 것은 Jenkins GIT client plugin, SCM API Plugin 이다.




시스템 설정


Jenkins 관리 > 시스템 설정 관리 페이지 이동 후 JDK, Maven 등을 셋팅한다.

이후, Git 정보란을 유심히 살펴봐야 하는데 Path to Git executable 항목의 git은 실행 파일명을 의미하는 것이다. 즉 서버에 git이 install되어 있어야 하는 것이다.

나는 이 부분에서 삽질을 하게 되었다. SVN을 이용하여 연동했을 때에는 jenkins가 구동되는 서버에 SVN을 설치하지 않았다. 그렇기 때문에 Git 연동시에도 Git을 install하지 않아도 되는 줄 알았던 것이다.





새로운 Job 생성


새로운 Job 생성을 하게 되면 해당 Job의 Configure를 셋팅하는 화면이 나온다.

소스 코드 관리 항목에서 Git을 선택하고 Repository URL을 입력한다.

ssh://도메인:7999/project/testProject.git

만약 git repository가 인증을 통해서만 접근이 가능하다면 Credentials 항목에 사용자 정보를 추가해 줘야 한다.

Credentials의 Add 버튼을 클릭한 후 다음과 같이 셋팅한다.


이곳에서도 삽질을 하게 되었는데 Enter directly 라디오 버튼을 클릭 후 textarea 박스에 id_rsa.pub 내용을 붙여넣으면 인증이 안된다.

왜 그런 것인지는 잘 모르겠지만 From the Jenkins master ~/.ssh로 설정하면 정상적으로 인증이 된다. 참고로 ssh 인증을 위해서는 아래 "ssh 인증키 생성"을 꼭 진행해야 한다.




ssh 인증키 생성


ssh 인증을 위한 사용자 등록 시 꼭 Jenkins 서버를 구동한 계정으로 진행해야 한다.

즉, 리눅스에 admin 이라는 계정이 Jenkins 서버를 구동했다면 해당 계정을 사용하여 ssh 인증 셋팅을 진행해야 한다는 것이다.

1. 리눅스에서 admin 계정으로 로그인 후 다음 명령어 실행

$ ssh-keygen -t rsa -C "admin"


2. admin 홈 디렉토리의 .ssh 폴더 하위에 id_rsa.pub 내용을 copy


3. 우리 회사에서는 Atlassian Stash를 사용하고 있으므로 Account 페이지로 이동 후 위에서 copy한 SSH Key를 등록한다.

이와 같이 셋팅을 완료하면 jenkins를 구동하고 있는 리눅스 계정 admin이 git 서버와 ssh 연동을 한다.


Jenkins + Git 연동의 삽질 경험담은 여기서 마친다.