Bamboo를 사용하면서 특정한 경우 (예를 들어 Merge 상황에서만) Trigger를 받고 싶은 경우가 있는데 이러한 선택된 경우만 Trigger를 받는게 기본설정으로는 제공되지 않는다.
기본설정은 다음과 같이 Repository선택만 가능하여 Trigger를 선택적으로 받을 수 없다.
하여 특정한 경우만 Trigger를 받고자 할때는 난감한 상황이 될수 있다.
이러한 경우 Bamboo의 Remote Trigger를 통해 해결할 수 있는데 이에 대해 알아보도록 하자.
Bamboo 설정
Bamboo에서는 앞서 이야기 했던 Trigger 메뉴에서 Remote trigger를 추가하여 선택적인 Trigger를 받을수 있는 준비를 한다.
Bamboo의 Build Plan으로 이동하여 Configure plan 메뉴로 이동하면 Triggers 항목이 존재하며 해당 항목에서 Add trigger 버튼을 클릭하여 Remote trigger를 추가한다.
설정정보는 다음과 같이 복잡한 설정은 없고 Repository 선택과 Trigger IP Addresses 항목을 추가하면 된다.
여기서 중요한것은 Trigger IP addresses 이다.
해당 Trigger는 IP로 인증을 수행하기 때문에 해당 IP를 사용해서 Trigger되는 경우만 인증이 수행되게 된다.
참고로 Trigger는 webhook을 사용할 예정이고 webhook으로 Bamboo REST API를 호출할 예정이다.
API는 다음과 같이 구성된다. 참고로 아래는 Bamboo에 Rest API를 테스트해볼수 있는 Rest API Browser(Addon)이다.
여기서 Project ID와 buildKey 가 중요한데 이는 관련 project에 들어가보거나 buildplan에 이동해보면 URL을 통해 확인이 가능하다.
관련 Project ID는
Buildkey는
와 같이 확인된다.
Bitbucket 설정
이제 Bitbucket의 설정을 추가해보자.
앞서 Bamboo에서 등록했던 Repository로 이동한다. 해당 Repository에 설정항목에서 Post Webhooks으로 이동한다.
우리는 Pull Request merged 에 대한 event만 받을 것이기 때문에 앞선 Bamboo 설정상에서 확인하였던 Rest API URL과 Pull request merged 항목을 체크한후 저장한다.
이후 아래와 같이 추가된 webhook을 확인할 수 있다.
테스트
이제 설정은 다 완료되었다. 실제로 테스트를 해보자.
JIRA를 통해 Branch를 생성하고 commit 및 pull request를 생성한다.
이후 pull request를 merge하게 되면 다음과 같이 Build가 앞서 생성하였던 TB-38-XX 브랜치로 진행되었음을 확인할 수 있다.
참고사이트
- https://confluence.atlassian.com/bamboo0607/triggering-builds-966045043.html
- https://confluence.atlassian.com/bamboo/trigger-a-bamboo-build-from-bitbucket-cloud-using-webhooks-873949130.html
- https://community.atlassian.com/t5/Answers-Developer-Questions/Trigger-Bamboo-Plan-via-REST-Call/qaq-p/497583
- https://community.atlassian.com/t5/Bitbucket-questions/Bamboo-Server-Trigger-Plan-After-Merge-Development-Branch-To/qaq-p/1096080