[CI&CD] Jenkins-01

Dev_Honey·2022년 12월 27일
0

CI&CD

목록 보기
1/2
post-thumbnail

1. CI & CD

CI & CD 란??

한마디로 표현하면, 지속적인 통합과 지속적인 배포입니다.
CI지속적 통합(Continuous Integration)을 일컫는 단어입니다.
일반적으로 CI의 메카니즘은 Build->Test->Merge의 flow 입니다.
여러 개발자들이 동시다발적으로 개발을 하고 Merge를 하는 데 분기들의 충돌이 일어나는 일들이 빈번합니다. 이러한 일들의 반복적인 수작업 대신 지속적으로 Build -> test 그리고 이상이 없으면 merge되는 pipeline을 확보하게 되면, 자동으로 source 코드를 merge시키는 장점뿐만아니라, test를 통한 충돌 또한 피할 수 있어 개발속도, 협업의 장점을 지니게 됩니다.
CD지속적인 서비스 제공(Continuous Delivery) 혹은 지속적인 배포(Continuous Deployment)을 일컫는 단어입니다.
지속적인 서비스의 제공은 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 레포지토리에 자동으로 업로드되는 것을 뜻합니다.
지속적인 배포는 개발자의 변경 사항을 레포지토리에서 고객이 사용 가능한 production 환경까지 자동으로 release하는 것을 의미합니다.

  • 위의 그림을 보면 CI단계에서는 code의 변화를 읽고, auto build가 됩니다. 그리고 내부적으로 bug test를 거친 후 이상이 없으면 해당 분기는 merge되게 됩니다.
  • 그리고 merge된 소스 코드는 release가 되고, 고객이 사용하는 production에 배포가 일어나 Client들은 release된 상품들을 사용할 수 있게 됩니다.
    즉, 요즘 개발 환경에 있어서 트렌드가 된 CI&CD pipeline은 필요보다는 필수적이 되었다고 보는 것이 맞습니다.

2. CI / CD 구축

Jenkins는 지속적 통합(Continuous integration) 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때, source code의 충돌을 방지하기 위해서 사용한다.

1. Jenkins

젠킨스는 허드슨 프로젝트로 개발되었다. 코스케 가와구치는 썬(Sun Microsystems)의 자바 개발자였다. 가와구치는 코드를 레포지토리에 커밋하기 전에 해당 코드의 동작 여부를 알 수 있는 방법을 찾고 싶었고 그렇게 자바에서 자동화 서버로 개발한 것이 허드슨이다.
2011년 썬은 오라클에 인수되었고, 허드슨의 커뮤니티에서 분쟁이 있어 이 CI시스템은 Jenkins라는 이름으로 허드슨과 갈라지게 되었다.

오늘날의 젠킨스는 약 1,400가지의 플러그인을 가지는 오픈소스 자동화 서버이다. 이 플러그인들은 플랫폼,UI,관리,소스코드 관리,빌드 관리의 영역을 포괄하고 있다.

젠킨스의 동작방식은 Java 8 WR Archive & Install package, Homebrew package, Docker image, Source code 형태로 사용가능 하다.
소스코드는 대부분이 Java언어이고, 기타 언어로는 Groovy,Ruby,ANTLR(Another Tool For Langauge Recognition)가 있다.
WAR를 단독으로 또는 Tomcat 같은 자바 애플리케이션 서버에서 Serverlet으로 실행 가능하다.

  • Build는 source code를 서버에 올릴 수 있는 상태로 만드는 것입니다. 그리고 이 build된 source code를 서버에 올려서 product에 적용시켜 Client가 사용할 수 있게 하는 것이 배포(deploy)입니다.
    Jenkins를 사용하면 배포 전 Build를 자동화 할 수 있습니다.
    실제로 개발자가 코드작업을 하고 배포를 하기위해 빌드를 하는 과정에서 많은 시간이 소요됩니다. 예를들면 안드로이드 같은경우는 10여분이 소요되기도 하죠. 그래서 이러한 build를 자동화를 해놓으면, 이 시간을 아낄 수 있고 개발에서도 branch의 충돌을 막을 수 있습니다.

Jenkins의 대표적인 기능은 Dashboard기능, Deploy script 실행기능, 많은 Plugin이 있습니다.

Jenkins 세팅이 초보자가 하기에는 조금 난해한 부분과 많은 오류가 있어 규모적으로 적은 곳에서는 잘 사용하지는 않지만, 세팅하고 사용하는 방법을 잘 익혀둔다면 pipeline의 한 부분에서 중요한 역할을 할 것입니다.


출처 및 참조

https://www.redhat.com/ko/topics/devops/what-is-ci-cd CI&CD

profile
자습서 같은 공부 블로그 만들기!

0개의 댓글