개요
비트버킷에서 레포지토리의 아래와 같은 이벤트를 수신할 수 있는 웹훅을 설정할 수 있다.
- 레포지토리
- 푸쉬
- 포크
- 업데이트
- 커밋에대한 커멘트 생성
- 빌드 상태
- 이슈
- 생성
- 업데이트
- 커멘트 생성
- PR
- 생성
- 업데이트
- 승인
- 승인 해제
- 변경요청 생성
- 변경요청 제거
- 머지
- 거부
- 커멘트 생성, 업데이트, 삭제
설정방법은 공식문서에서 찾아 볼 수 있다.
주로 웹훅은 CI/CD에서 자동화를 위해 사용되며 이를 위해 레포지토리별 웹훅이 아닌 워크스페이스 웹훅을 설정해야할때가 있다.
비트버킷 페이지에서는 해당 워크스페이스 웹훅을 변경하려고 해도 READ ONLY
상태라 변경할 수 없게 되어있다.
하지만 비트버킷 api docs에는 존재해서 해당 api를 직접 호출하는 방식으로 추가할 수 있다.
1
2
3
4
5
6
7
8
9
$ curl -u {YOUR_BITBUCKET_ID} -X POST -H 'Content-Type: application/json' https://api.bitbucket.org/2.0/workspaces/{YOUR_WORKSPACE_NAME}/hooks/ \
-d '{
"description": "jenkins-hook",
"url": "https://{JENKINS_URL}/bitbucket-hook/",
"active": true,
"events": [
"repo:push"
]
}'
비트버킷 웹훅은 현재 시크릿 기능을 지원하지 않음으로 https를 권장한다.
시크릿이 없을 경우 악의적인 사용자가 보내는 요청을 구분할 수 없기때문이다.
또한 비트버킷 웹훅 IP 대역을 확인해서 해당 IP에서만 오는 웹훅을 받도록 설정하는 것이 보안상 좋다.
해당 아이피 대역대는 비트버킷 홈페이지에서 확인 할 수 있다.
주소로 남기는 이유는 해당 아이피대역대가 변경 될 수 있는데 블로그 글에서 참조한 상수값으로 피해를 입을 수 있기때문이다.