Post

CI/CD 와 Jenkins

#naver-import

원문: https://blog.naver.com/qoxmfaktmxj/223701240296

CI = 지속적인 통합(Continuous Integration) => 빌드와 테스트를 자동화

CD = 지속적인 제공/배포(Continuous Delivery/Deployment) => 배포 자동화

CI 는 개발이 모드 끝난 후에 코드의 품질을 관리하는 예전 방식에서 벗어나

지속적인 통합을 통해서 코드 변경 사항이 정기적으로 빌드/테스트 되어서 공유 레파지토리에 통합되는 과정을 계속 진행하면서 품질을 유지하면서 개발을 진행하는 방법입니다.

CD는 CI의 연장선으로 CI 프로세스를 통과한 코드를 마지막에 배포하는 과정입니다. 코드변경사항이 CI를 모두 성공적으로 통과하면 수동 개입 없이 프로덕션에 자동으로 배포되기 때문에 신속하게 사용자에게 새로운 기능을 제공하게 됩니다.

Agile한 개발 문화를 많은 조직이 선택함에 있어 속도와 효율성의 측면에서 이 부분은 개발 환경에서 중요한 부분을 차지하게 됩니다. 패치가 자주 일어나야 하는데 항상 FTP 방식으로 패치를 하겠다…? 실수하면 …? 쉽지 않다.

CI/CD 를 지원하는 도구들은 많지만 Jenkins를 많이 쓰고 있는 것 같습니다.

Jenkins는 소프트웨어 개발 프로젝트의 빌드 파이프라인 구성, Build 자동화, 배포 및 테스트 자동화를 지원합니다.

모듈이 여러개인 레이어드 아키텍처 형식의 프로젝트는 그에 다른 빌드 파이프 라인이 필요 합니다.

도메인 => 서비스 => UI 같이 각 레이어의 참조 관계에 따라 순차적으로 빌드를 해야 할 때, 젠킨스에서 빌드 파이프라인을 구성할 수 있습니다.

Java에서 maven, gradle 로 주로 빌드 툴로 사용할텐데, 젠킨스와 연동해서 빌드 자동화를 통해서 효율성을 높일 수 있습니다.

젠킨스는 svn, git같은 형상관리시스템들과 연동하여 커밋된 코드 변경을 감지해서 자동화 테스트를 수행 합니다.

EX) gradle, git쓸때 젠킨스가 github한테 코드 머지되었다는 연락을 받고

코드를 git clone하고 그래들로 프로젝트를 빌드 하비다.

그리고 빌드한 파일을 app이 실행되어야 할 서버로 전달한다음에 app구동위한 명령어를 실행하는 형식입니다.

젠킨스 관련해서 테스트를 해보려면 아래 블로그를 참고해보면 좋을 것 같다.

3까지 있어요

https://onethejay.tistory.com/147

[[Jenkins] 빌드부터 배포까지 1 - 젠킨스 설치 젠킨스란 무엇인가? 젠킨스(Jenkins)는 여러 언어로 작업된 소스 코드들의 빌드, 테스트, 배포 자동화 환경을 구축할 수 있는 도구이다. CI(지속적인 통합 Continuous Integration)/CD(지속적인 배포 Continuous Deployment) 환경을 이야기할때 빠지지 않는 오픈소스이다. 개발자가 알면 무엇이 좋을까? 어느정도 규모가 있는 회사라면 개발팀과 인프라팀 또는 운영팀 등이 구성되어 있겠지만 그렇지 않은 회사도 많을 것이다. 웹 서비스 프로젝트를 로컬 PC에서 개발이 끝난 후 테스트 서버에 올리려고 한다…

onethejay.tistory.com](https://onethejay.tistory.com/147)

댓글