Skip to end of metadata
Go to start of metadata

이 문서는 Atlassian Bamboo CI(Continuous Integration) 컨셉을 공유하기 위해 작성되었다. 


Bamboo는 소프트웨어 어플리케이션의 지속적인 배포 파이프라인을 만들어 릴리즈 관리 자동화를 위해 사용되는 지속적인 통합(CI : Continuous Integration) 서버이다. 

CI는 코드가 저장소에 커밋될때 마다 빌드, 단위테스트, 통합테스트를 수행하는 소프트웨어 개발 방법론이다. 이를 통해 새로운 코드가 기존 코드와 잘 통합되는지를 확인할 수 있다. 통합 빌드는 새로운 변경 사항의 품질에 대한 초기 "fail fast" 피드백을 제공한다. 

릴리즈 관리에서는 빌드 및 기능 테스트, 릴리즈 태그 지정, 버전 할당, 프로덕션 환경에 새 버전 배포 및 활성화를 포함하는 소프트웨어 어플리케이션을 릴리즈 하기 위해 일반적으로 수행되는 단계를 기술한다.



Bamboo는 어떤 문제를 해결하는가?

만약 혼자서 개발을 한다면, Bamboo는 다음 혜택을 준다. 

  • 자동화된, 그러므로 신뢰할 수 있는 빌드 및 테스트 프로세스를 제공하므로 더 많은 코드를 자유롭게 사용할 수 있다. 
  • 다른 요구사항 혹은 타켓을 위해 빌드를 관리하는 방법
  • App Store 혹은 Google Play와 같은 서버에 자동 배포

만약에 팀에서 일하는 경우 위의 장점을 포함하여 Bamboo는 다음 혜택을 준다. 

  • 빌드 및 테스트 프로세스는 특정 로컬 환경에 종속되지 않는다. 
  • 개발자가 커밋하는 즉시 빌드와 통합 테스트는 자동으로 트리거 된다. 

크고 복잡한 소프트웨어에서 작업하는 경우 위의 장점은 포함하여 Bamboo는 다음 혜택을 준다. 

  • 병렬처리를 통해 빌드 성능을 최적화할 수 있다. 
  • 탄력적으로 자원을 활용할 수 있다. 
  • 계속 배포할 수 있다. 
  • 릴리즈 관리를 구현할 수 있다.


Bamboo는 어떻게 이것을 하는가?

  • Bamboo는 모든 작업을 스케줄하고 조정하는 중앙 관리 서버이다.
  • Bamboo는 많은 종류의 작업을 위해 인터페이스와 플러그인이 있다. 
  • Bamboo는 다양한 소스 저장소로부터 소스를 가져온다.
  • 그 다음 Bamboo는 빌드를 시작한다. MSBuild, Maven을 호출하여 수행한다.
  • 솔루션 혹은 프로젝트가 빌드되면 아티펙트를 가질 수 있다. (빌드 결과물 예로 실행가능한 앱, Config 파일 등)
  • 이 빌드 아티펙트를 통해 추가적인 작업을 수행한다. 
    • ZIP 파일로 압축하여 어딘가로 복사한다. 
    • 인스톨 빌드를 실행하고 MSI를 생성한다. 
    • 모든 것이 올바르게 설치되도록 테스트 서버에 설치한다.
  • Bamboo는 구성 및 빌드 상태 보고를 위한 웹 프론트 엔드를 제공한다. 


Bamboo는 무엇이 필요한가?

Bamboo는 어플리케이션을 빌드하고 테스트하는 작업을 예약하고 조절한다. 그러므로 Bamboo를 사용하려면 다음과 같은 설정이 필요하다. 

  • 프로젝트의 완전한 소스 코드를 포함하는 코드 저장소
  • 빌드 스크립트
  • 테스트 슈트

일반적으로 코드를 변경한 사람은 결과 빌드 오류를 즉시 수정해야한다고 가정한다. 


Bamboo 워크플로우는 어떻게 구성되는가?

Bamboo는 Jobs과 Tasks로 구성된 계획으로 워크플로우를 구성하고 정렬한다.

Project

  • 0, 1개 혹은 그 이상의 Plan을 가진다. 
  • 프로젝트에서 모든 Plan에 대한 리포팅을 제공한다. (예로 Wallboard)
  • 다른 어플리케이션을 위한 링크를 제공한다. 
  • 모든 Plan에 대한 권한을 설정할 수 있다. 

Plan

  • 기본적으로 Plan은 단일 Stage를 가진다. 그러나 여러 Stage에 Job을 그룹화한다. 
  • 동일한 저장소를 사용하여 실행되는 하나 혹은 그이상의 스테이지를 처리한다. 
  • 기본 저장소를 지정한다. 
  • 빌드가 트리거되는 방법과 프로젝트에서 다른 Plan과의 종속적인 트리거를 지정한다. 
  • 빌드 결과에 대한 알림을 지정한다. 
  • Plan과 Job을 구성하고 볼 수 있는 권한을 지정한다. 
  • Plan 변수의 정의를 제공한다.

Stage

  • 기본적으로 단일 Job을 가진다. 그러나 여러 Job으로 그룹화할 수 있다. 
  • 멀티 에이전트로 Job들을 병렬로 처리한다. 
  • Plan에서 다음 Stage 전에 모든 Job은 성공적으로 완료되어야 한다. 
  • 후속 Stage에서 사용할 수 있는 아티펙트를 생성할 수 있다. 

Job

  • 동일 에이전트에서 순차적으로 실행되는 하나 이상의 Task를 처리한다. 
  • Task 들이 수행되는 순서를 제어한다. 
  • Job에서 개별 Task의 요구사항을 수집하고 이러한 요구사항은 에이전트 수용력과 맞아야 한다.
  • 빌드에서 생성될 아티팩트를 정의한다. 
  • 이전 단계에서 만들어진 아티팩트만 사용할 수 있다.
  • 빌드 결과 혹은 빌드 아티팩트가 태그될 어떤 레이블을 지정한다. 

Task

  • 소스 코드 체크아웃, Maven 골 실행, 스크립트 실행, 테스트 결과 파싱과 같은 작은 개별 작업 단위이다. 
  • Task는 Bamboo의 워킹 디렉토리 내의 Job 내에서 순차적으로 수행된다. 



  • No labels