중점적으로 적을 내용은 jenkins와 bitbucket의 연동이다. 설치법 및 구동법등은 다른 블로그 혹은 구글검색을 이용하여 참고하자!
나의 환경은 다음과 같다.
1. bitbucket.org를 통해 만든 git 저장소.
2. Jenkins 2.7.1
3. Jenkins 2.7.1이 설치 된 Ubuntu 16.04 LTS Server.
지금 이 글에선 프로젝트 Setting을 모두 마친 상태라고 가정하고 설명하려고 한다.
먼저, 아래그림과 같이 Jenkins 아이템을 Maven Project로 추가하였다.
Maven Project로 Item 추가.
메이븐 프로젝트를 추가하고 해당 프로젝트로 이동하면 다음과 같은 화면이 나올것이다.
이제 프로젝트 화면에서 Configure를 클릭하면 아래 그림과같이 프로젝트 설정을 하는 화면이 나올것이다.
우리가 주목해야 할 항목은 Source Code Management와 Build Trigger, Build 부분이다.
먼저 Source Code Managemet 부분에서 Git을 선택하고, Repository URL은 Bitbucket의 Repository URL을 복사하여 붙여 주면된다.
![]() |
빨간네모상자 부분이 Repository URL이 적힌 부분이다. |
Credential 부분은 Bitbucket Repository가 private 저장소일 경우 인증을 위한 부분으로, 해당 Repository의 접근이 가능한 유저정보를 Jenkins Credential에 추가하여 Bitbucket의 프로젝트에 접근할 수 있도록 한다.
Credential의 추가는 Source Code Management 의 Credential 옆의 [Add] 버튼을 눌러 추가가 가능하다.
다음은, Build Trigger 설정이다.
Bitbucket과 연동하기 위하여 우리는 Build Triggers 메뉴안의 [Trigger builds remotely]를 선택하여 할 것이다.
위의 그림을 보면 JENKINS_URL/job/[ProjectName]/build?token=TOKEN_NAME 라고 적혀있는 부분이 보일 것이다. 이 주소가 바로 Bitbucket의 Webhooks에 URL로 들어갈 부분이다.
만약 다음과 같은 환경에서 Jenkins를 구성하는 요소가 다음과 같다고 가정하자.
1. Jenkins URL : localhost
2. port : 8888
3. 해당 프로젝트에 접근이 가능한 jenkins user의 name : test_user
3. Jenkins user의 API Token : token1234
4. 해당 프로젝트의 이름 : test
5. 위 사진에서 까만색으로 칠해진 부분 : test_token
여기서, 3번과 4번의 정보를 가져와야 하는데 이 정보는, Jenkins 메인화면의 우측상단에 보면 Jenkins User의 이름이 보일것이다.
이것을 클릭 한 뒤 좌측 메뉴의 Configure를 클릭하게 되면 API Token이 보이게 될 것이다.
이 메뉴에서 [Show API Token...] 버튼을 클릭하게 되면 아래와 같은 정보가 나올것이다.
위의 UserID가 3번의 정보가 되고, API Token이 4번의 정보에 해당한다.
다시 돌아와서 만약 저 위의 구성요소로 설정되어있다면, Bitbucket Webhooks에 들어가는 URL은
http://[username]:[API Token]@[Jenkins URL]:[port]/job/[project name]/build?token=[Authentication Token]
이고, 위의 정보를 바탕으로 작성하면,
http://test_user:token1234@localhosts:8888/job/test/build?token=test_token
과 같다.
Build의 Root POM은 해당 프로젝트의 pom파일의 위치를 적어주면 된다.
예를들면 저장소에 test프로젝트 디렉토리 내부에 pom.xml이 있다고 한다면,
test/pom.xml 이라고 적어주면 된다. 그러면 jenkins가 프로젝트를 가져와 해당경로의 pom.xml을 이용하여 maven 빌드를 해주게 된다.
이제 위의 URL을 Bitbucket의 Webhooks에 연결하면 끝이다.
자, Bitbucket의 연결을 하려는 Repository의 Settings를 클릭해보자.
다음에 보면 Webhooks라는 메뉴가 보일것이다. 이 메뉴를 클릭하자.
그러면 아래와 같은 화면이 나올것이다. (API_Token이 나와있어 가렸다.)
그 후, [Add webhook]이라는 버튼을 클릭하면 다음과 같은 화면이 나올것이다.
여기서 Title은 기호에 맞게 설정하시고, 중요한 부분은 URL부분과 Trigger부분이다.
URL은 위에서 설명한 URL(Jenkins -> [Trigger builds remotely]에서 만든 URL)을 붙여 넣어준다.
Jenkins 구성요소에 따른 URL이 'http://test_user:token1234@localhosts:8888/job/test/build?token=test_token' 였으므로 그대로 넣어주면 된다.
그리고 아래 triggers의 경우 bitbucket으로 들어오는 모드 이슈에 대하여 Jenkins에 webhook을 보낸다면 상관없지만, 나는 Push와 Pull Request의 Merged일 때만 Jenkins에 알려줄꺼기 때문에 두개만 선택한후 Save를 한다.
자, 이제 모든 연결은 끝이 났다. 이 후 비트버킷에 Push혹은 Pull request에 대한 Merge가 발생할 경우 Build에서 입력한 pom의 위치를 이용하여 Maven 빌드를 수행할 것이다. 그리고 아래와 같은 성공 메시지를 볼 수 있을것이다.
여기서는 두 프로그램간의 연결만 다루었다, Jenkins 사용자 정보와 기타 플러그인은 검색을 통해 알아보자!