본문 바로가기

카테고리 없음

Bitbucket Bamboo CI/CD 구축

반응형

CI/CD


 

CI (Continuos Integration)

개발, 리뷰 부터 빌드, 테스트까지의 과정이 통합적으로 이루어지는 것

 

CD (Continous Deployment)

CI를 통해 수행된 결과물을 서버에 배포하는 것

 

CI/CD의 목적

어플리케이션 개발 단계를 자동화하여 보다 짧은 주기로 고객에게 제공하기 위함이다

 

  • 빠른코드의 병합
  • 정기적 혹은 빈번한 빌드 테스트
  • 휴먼에러 방지
  • 용이한 배포

 

* artifact : 소프트웨어 개발 프로세스에 의해 생산되는 무언가를 의미

 

Bitbucket과 Bamboo를 활용한 CI/CD

bamboo 에서 build project 와 deploy project 를 별도로 관리하는 이유는 다음과 같다

 

  • 권한 분리
  • build는 git push 마다 release version 이 쌓이게 되지만 여러개의 commit을 모아 deploy하여 배포 위주의 데이터만 볼 수 있다

0. 소스 동기화

담당하고 있는 시스템이 기존에 FTP 수기 배포 되고 있던 시스템이어서, 실 사용중인 운영 소스 기준으로 소스 동기화를 진행했다.

이 과정이 구축과정에서 가장 오랜 시간이 소요되었다.

JDBC DB 정보나, 외부 서버 IP 등이 하드코딩 되어있었고 JVM argument 설정 후 서버 분기 처리하여

로컬 - 개발 - 운영 소스를 동기화했다.

크게 프로세스는 다음과 같다

 

  • java decompiler 를 사용해 class → java 로 디컴파일
  • winmerge tool을 통해 해당 프로젝트 폴더 소스들을 비교 및 엑셀 레포트 생성
  • diff 분석 후 소스 동기화

build 파일 작성

먼저 프로젝트 root 아래에 build 파일을 생성한다.

build tool은 ant build를 사용하였다.

build 파일은 다음 순서로 작성되었다.

 

  • 컴파일
  • war 생성
  • pjt_root/artifact 폴더에 war 저장

bamboo build 파일 연동

PR 승인 시 빌드 트리거가 작동하여

이 때 실행되는 빌드파일을 작성하고 bamboo plan에 등록한다

 

개발 서버를 예로

feature branch 에서 develop branch로 PR 승인 시

자동으로 위의 build 파일을 실행하여 bamboo 서버에 war 파일이 생성된다.

 

deploy shell 작성

deploy 파일은 다음 순서로 작성되었다.

 

  • 기존 프로젝트 소스 삭제
  • pjt_root/artifact 폴더 아래의 war 압축해제
  • symbolic link를 통해 config, properties 파일 연결

bamboo 서버 deploy shell 연동

빌드 정상 완료 후 배포 트리거가 작동하여 4에서 작성한 deploy shell을 실행한다.

 

 


reference

https://www.youtube.com/watch?v=-EjD74xjiGM

반응형