bamboo capability를 사용하여 특정 agent 만 job 을 실행할수 있도록 설정하기
bamboo capability 란?
뱀부의 agent 설정을 보면 capabilities 항목이 있으며 이는 해당 agent 의 다음과 같은 특성을 의미합니다
- an executable (e.g. Maven)
- a JDK
- a Version Control System client application (e.g. Git)
- a custom capability. This is a key-value property which defines a particular characteristic of an agent (e.g. 'operating.system=WindowsXP' or 'fast.builds=true').
CI 서버의 특성상 여러 대의 agent 를 구동하는데 실제 운영에 반영등의 작업을 하려면 방화벽 설정, 보안 설정등 여러 가지 작업을 수행해야 합니다.
capability 를 지정하면 agent 가 수행할 수 있는 능력을 설정할 수 있으므로 아래에서 설명할 requirement 와 연계하여 특정 작업은 특정 agent에서만 실행되도록 할 수 있으며 agent 가 새로 추가되어서 build 나 deploy 가 실패하는 문제를 방지할 수 있습니다.
requirements
Requirement 는 job 또는 task 에 지정하며 job 이나 task 를 실행하기 위해 필요한 부분을 설정합니다. 특정 agent 만 수행 가능한 capability 가 있다면 Required capability 항목에 지정하면 됩니다.
아래의 설정에서는 이 job 을 실행할 수 있는 agent 가 2 개입니다.
capability 등록
agent 설정으로 들어가서 Add capability 를 클릭하면 새로운 capability 를 등록할 수 있습니다.
만약 아래의 리스트에 없다면 Custom 을 선택하고 key/value 형식으로 설정할 수 있습니다.
빌드는 여러 agent 에서 하지만 운영 환경에 배포는 특정 agent 에서만 해야 한다면 custom capability 에 해당 key 를 등록합니다.
예로 app1 이라는 서비스가 있을 경우 특정 agent 만 운영에 배포하기를 원한다면 다음과 같이 설정합니다.
- 특정 agent 의 custom capability 등록
- 해당 Job 설정의 Required capability 항목에서 새로 추가한 key 를 설정하고 Add 클릭
- 빌드를 실행해 정상 동작하는지 확인
Ref
- https://confluence.atlassian.com/bamboo/about-capabilities-and-requirements-289277171.html
- https://confluence.atlassian.com/bamboo/configuring-capabilities-289277148.html