Jenkins 서비스 구축 후기

2021. 3. 8. 12:49버전관리 및 빌드/Jenkins

젠킨스 파이프라인 익히느라 한 달은 족히 걸렸다.

 

스크립트 방식이냐, 선언 방식이냐에 따라 문법이 약간씩 달랐고 가장 당황스러웠던 점은 IDE 지원이었다.
(declarative ~ 선언방식. 뭐? 맹 그게 그거드만! 선언 방식 안에 스크립트 방식 코드를 넣을 수 있다.)

나중에 발견한 IntelliJ용 gdsl 설정하는 방법대로 따라해봤는데 만족스럽지 않았다.

코딩을 하는데 있어서 IDE 에서 기본적으로 지원해주는 게 "컴파일 및 문법검사"인데 자바에서 갈라져 나온 groovy 문법이라지만 젠킨스 에디터에서 제 때에 오류로 표시하지 않는 이상, [저장] -> [실행] -> [편집] -> [저장) -> [실행] -> ... 의 악순환이었다. 그것마저도 스크립트 DSL 이라... 휴~

 

결국 Jenkins 웹페이지 에디터에서 직접 작성하면서 깨우쳤다.

 

---------------------------------------------------------------

1) 젠킨스는 플러그인에 의해 기능을 확장할 수 있는 구조다.
2) github 를 지원하는 플러그인이 많다. 즉, github 외 특히 직접 구축한 git 서버를 쓰거나 아마존 웹서비스(이하, AWS) 에서 git 만 쓰는 경우에는 손이 많이 가는 편이다.

예컨데, 젠킨스 플러그인 기능 중에 poll SCM 이라는 게 있다. SCM 이 소스코드 관리, 즉 git / svn / cvs / ... 등등 형상 관리 툴인데, poll SCM 이 바로 SCM 리비전에 변화가 생겼을 때 끌어와서 빌드 단계로 넘기는 역할을 한다.

내가 젠킨스를 처음 구성할 당시에는 젠킨스 구축과정을 너무 쉽게 생각해서 얕봤는데, 하필이면 이 poll 기능이 너무 안돌아서 결국 파이프라인을 길게 작성하게 되었다.

3) 젠킨스란, 허드슨 프로젝트가 오픈소스화된 것. 그래서 플러그인 소스를 따라가다 보면 패키지명에 hudson 이 붙어 있다.

이 젠킨스라는 녀석은 CI / CD, (소스의) 지속적인 통합과 배포를 자동화해주는 툴 또는 서비스로 알려져 있는데, 막상 뚜껑을 열어보면 "소스 트리 준비 / 빌드 / 배포 / 후처리" 과정을 단계로 나눠서 껍데기만 지원해줄 뿐이며, 내부적으로 Maven, git, JDK 툴 설치위치를 지정해서 호출하도록 되어 있다.

4) 파이프라인에 관해서,
순수하게 젠킨스 플러그인에서 지원하는대로 마우스로 체크(선택), 체크, 값 입력만으로 가장 깔끔하게 CI/CD 를 구축할 수 있지만, 원하는 플러그인을 못찾았거나 뭔가 신통치 않을 때 위 3번에서 언급한 네 가지 단계를 직접 코드로 처리하고 싶을 때 사용하는 방법이다. (알아야 할 게 많다보니 일정을 넘겨가면서 젠킨스에 쌓인 게 많다)

5) Project? Job? Item?
의미 / 과정 상의 차이는 있겠지만, 젠킨스 클래식 UI 에서는 같은 표현이다. 대시보드에서 "New item" 을 눌러서 생성할 프로젝트 타입을 정할 수 있다. 구식 버전에서는 이 메뉴가 "New Project" 로 되어 있다. 그렇다면 Job 은 무엇이냐, 이렇게 만든 project 를 실행하면 그게 Job 이다. 고놈이 고놈이다. 단지 시기적인 차이일 뿐!
---------------------------------------------------------------

솔직히 파이프라인을 길게 작성하면서 간절해지는 게 있다면 내가 원하는 바를 더욱 간결하게 작성하고 싶은 것이다. 알아야 될 것은 많은데, 여기에만 몰두할 수도 없고 시간은 항상 부족하다.