👨🍳 jenkins | February 09, 2021
automation server
즉 자동화 기능을 제공해주는 서버 프로그램이다.
Why Jenkins?
- CI/CD와 관련된 수많은 플러그인들을 제공해주기에 CI/CD 서버로 각광 받는다.
- 오픈소스고 공짜다.
- 플랫폼 독립적
젠킨스는 소프트웨어 개발 시 지속적 통합(Continuous Integrations, CI)와 지속적 배포(Continuous Delivery, CD)를 위한 대표적인 도구입니다.
다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해줍니다. 젠킨스와 같은 CI툴이 등장하기 전에는 일정시간마다 빌드를 실행하는 방식이 일반적이었습니다. 특히 개발자들의 작성한 소스들의 커밋이 모두 끝난 심야 시간대에 이러한 빌드가 타이머에 의해 집중적으로 진행되었는데, 이를 nightly-build
라 합니다.
하지만, 젠킨스는 정기적인 빌드에서 한발 나아가 서브버전, Git과 같은 버전관리시스템과 연동하여 소스의 커밋을 감지하면 자동적으로 자동화 테스트가 포함된 빌드가 작동되도록 설정할 수 있습니다.
젠킨스는 개발자가 소스코드를 추가, 수정한 뒤 형상관리 도구에 저장하면 자동으로 읽어 빌드 및 테스트를 실행합니다.
New_Item
또는 새로운 Item
만들기를 눌러보면 이런 화면을 볼 수 있습니다.
Freestyle project는 Jenkins의 주요 기능이며, 프로젝트를 내가 자동화하고자 하는 행위의 한단위로 보면 됩니다. 이런 프로젝트들을 여러개로 이어 붙여서 거대한 자동화의 흐름을 만들어냅니다.
설명에 프로젝트에 대한 설명이나 소개를 메모하면 됩니다.
소스 코드 관리는 내가 자동화할 프로젝트의 소스코드를 가져오는 곳이며, GitHub에서 프로젝트를 가져오기 위해 URL 설정, 자격 증명을 추가해야합니다. (ID/PW 설정 등이 필요합니다.)
빌드 트리거, 말 그대로 빌드를 누가 촉발 시켜줄 것인가 결정하는 것입니다. 주기적으로 repository에 push가 일어나면 촉발되는 등 여러가지 선택지가 있습니다.
오른쪽에 있는
?
버튼을 눌러보면 설명서를 볼 수 있습니다.
이 프로젝트가 어떤 tool를 활용해서, 어떤 행동을 하는지 선택하면 됩니다. 각자 프로젝트의 기능에 맞게 설정하면 됩니다.
현재 프로젝트의 정의된 내용대로 build 작업이 끝나면 그 다음 행동은 어떤 것을 할지 정하는 것입니다.
보통 여러 프로젝트끼리 체인처럼 엮고, 선후 관계를 정하는 것을 많이합니다.
그 외에도 다양한 선택지가 있습니다.
멀티캠퍼스에서 실습을 통해 Jenkins가 CI/CD 기능을 해주는 TOOL 정도로만 알고 있었는데, 이번에 이전에 했던 프로젝트를 docker로 배포, Jenkins 설정을 하려고 하다보니 많은 것을 알게 된 것 같습니다. 다음에는 실제로 프로젝트 환경에 맞게 CI/CD 배포를 해봐야겠습니다.
https://ict-nroo.tistory.com/31
https://jongmin92.github.io/2018/08/09/Tool/jenkins/
https://gist.github.com/MinSikMoon/86f6b34ead68cf79cfb5fe6275a2647c