Atlassian Bamboo란?

Atlassian Bamboo라는 제품이 어떤 것인지에 대해 간략히 알아보자.

Bamboo

  • 공식문서: https://confluence.atlassian.com/bamboo/install-a-bamboo-data-center-trial-1155494322.html
  • Bamboo Server (deprecated 24년2월) → Bamboo Data Center로 대체되었다. (이름이 바뀌었다고 self-hosting 버전이 Jira나 Confluence처럼 Cloud 버전으로 바뀐 것은 아니고, 여전히 설치형이지만 고가용성(multi-node 지원)을 지원하고 보안상 업그레이드가 되었다고 보면 된다.)
  • Bamboo는 Jenkins과 같은 도구라고 보면 된다.
  • 개인적인 생각 : IDE에 비유를 들자면, Jenkins가 만약 VS code라면, Bamboo는 IntelliJ라 볼 수 있다. Jenkins는 무료이고 설치할 플러그인이 많고 설치할 수 있는 플러그인 커뮤니티도 많다. IntelliJ는 유료다 → 설치를 안 해도 Jira, Bitbucket과 연동되며 플러그인이 다 포함되어 나온다.
  • 참고로 Bitbucket Pipelines라고 하는 것은 Github Actions나 Gitlab CI/CD와 비슷하다고 보면 된다.
  • Bitbhucket Pipelines는 Github처럼 SaaS 형태이나, Bamboo는 다운로드 받아서 설치하는 형태지만 라이센스 번호로 관리하는 유료형태 → remote build agents를 병렬로 얼마나 사용하느냐에 따라 가격 책정 (→ remote build agent의 개수에 따라 병렬로 동시에 빌드할 수 있는 개수가 늘어난다.)
  • Remote build agent 가격
    • 1개 : 1년에 1,200달러
    • 5개 : 1년에 3,200달러

Intro

  • Bamboo는 CI (Continuous Integration) / CD (Continuous Delivery) software로 빌드, 테스트, 배포를 자동화

 

Bamboo server가 따로 있지만, 빌드는 Build Agent를 다른 서버에 설치해서 사용.
빌드 자체는 Bamboo 서버에서 하지 않고 Build Agent라는 곳에서 한다.

Installation

Requirements

  • JDK (Java Development Kit) - Bamboo를 설치할 서버에 미리 설치
  • Database - Bamboo에 딸려나오는 built-in DB(H2 database)는 개인용이라 팀 계정을 위해서는 외부 DB가 필요 - PostgreSQL, MySQL, Oracle, Microsoft SQL 등을 지원.
  • 외부 DB를 연결하기 위해서는 JDBC driver 가 필요하다
  • 그리고 Bamboo installation package가 필요하다 → https://www.atlassian.com/software/bamboo 에서 다운로드
Bamboo는 JRE 혹은 Java Runtime 설치로 동작하지 않고 JDK를 설치해야한다.

Installing JDK on Mac

Bamboo는 보통 AWS EC2 instance에 설치하지만 Windows나 Mac, Linux에 설치 가능하기 때문에 EC2나 Azure VM에 Windows를 설치하고 Bamboo를 설치해도 된다.

(참고: OpenJDK는 OpenLogic 웹사이트에 가면 다운로드 가능하지만, 이 사이트에 애플 Silicon인 arm64(aarch64)용이 없다. 그래서 내 맥북에는 그냥 Amazon Corretto를 설치했다.)

단, 설치하려고 하는 Bamboo의 버전이 어떤 버전을 지원하는지 확인이 필요하다. → https://confluence.atlassian.com/bamkb/how-to-upgrade-the-java-version-used-by-bamboo-1252329397.html

 

기본 포트 8085

처음 설치하면 default port는 8085이다. local에 설치하면 localhost:8085로 접속할 수 있다.
Bamboo에서 remote agent와 통신은 default port가 54663

설치 후에 startup.sh를 실행하면 Tomcat 서버가 실행되는 형식 → license key를 넣고 실행 (30일 무료 사용 가능)

설치 후에 Bamboo/conf/server.xml에서 기본 포트 번호를 수정하면 8085에서 다른 포트로 수정 가능

Build Agents

  • Bamboo server 코드를 컴파일하거나 빌드하지 않는다. 이것은 Atlassian Bamboo Agents 가 한다.
  • Bamboo server를 우선 설치하고 브라우저에서 라이센스 키 입력하고 로그인하면 build agent 설치 메뉴가 나온다.
  • Build Agent는 3가지가 있다.

Local Build Agent

같은 서버에 설치 필요없음(software에 포함). 그러나 팀 단위가 아닌 개인 사용 용도.

Remote Build Agent

production을 포함 모든 목적에 사용. 그러나 다른 서버에 설치. (즉, Jenkins는 그냥 하나의 인스턴스 설치하는데 Bamboo는 보통 EC2 instance 2개에 설치)

Elastic Build Agent

AWS에만 있음 → 항상 동작하는게 아닌 build 요청이 있을 때 AWS에서 build agent을 그때그때 만드는 것 (pre-made AMI로 EC2 생성 후 소멸 → 그런데 EC2 생성하는데 시간 오래 걸림 -> 사용하는 사람이 있을까)

  • 항상 Agent가 Bamboo server로 연결하니 Bamboo server의 port(8085, 54663)만 오픈하면 된다.
  • Agent를 설치하는 instance에도 JDK를 설치해야 함

Projects

 

Stage와 Task는 순차적으로 실행되고, Jobs는 병렬로 동시에 실행된다

Bamboo의 Plan은 Jenkins의 Item과 같고
Bamboo의 Stage는 Jenkins의 stage와 같다. (get code, build code 등)
우리가 Jenkins pipeline code에 Dockerfile 코드를 만약 10줄으르 쓴다면 Jenkins console output에는 이것이 한 줄마다 Step으로 나오게 된다.

Step 3/25 : ARG FILE_EXT=jar
 ---> Using cache
 ---> 5964db9d1e8b
Step 4/25 : ARG JAVA_OPTS_MEM=${JAVA_OPTS_MEM}
 ---> Using cache
 ---> 75bdc270a860

이 Step은 Bamboo의 Task에 해당된다.

 

이상 간단히 Bamboo에 대해서 알아보았다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유