조직내 여러 프로젝트에서 젠킨스 파이프라인을 만들어서 사용하다보면 사실 공통 패턴이란게 생긴다. 이 공통패턴의 중복을 줄이기 위해 (Do not Repeat Yourself!) 젠킨스에서 제공하는 기능이다. 젠킨스 파일의 일부를 외부 저장소에 정의해두고, 기존 파이프라인안에 로드해서 사용할 수 있도록 한다. 이 기능이 Shared Libray임.

쉽게 말하면 별도 Git 저장소에 젠킨스 파이프라인 일부를 저장해두면, 젠킨스가 빌드 시점에 해당 깃 브랜치로 체크아웃해서 파이프라인에 추가해준다.

문법

문법은 간단함. @Library('name') _ 이 다다.

@Library('cafe-pipeline-libraries') _

이런식으로 사용함.

@Library(['my-shared-library', 'otherlib@abc1234']) _

여러개 불러올 수도 있다.

참고로 _ 가 붙는 이유는, 그루비 애너테이션들은 반드시 어떤 대상에 붙어야 하기 때문임 애너테이션이 붙을 역할을 해주는 더미 심볼로 _ 를 사용함.

저 라이브러리가 위치한 git 주소는 어떻게 찾아가는가? 이건 젠킨스에서 Manage Jenkins > System > Global Pipeline Libraries에서 깃주소 넣어둬야 함.

Shared Library 저장소 디렉터리 구조

Shared Library 저장소의 디렉터리 구조는 다음과 같음.

(root)
+- src                     # Groovy 소스 파일
|   +- org/foo/Bar.groovy  # org.foo.Bar 클래스
+- vars
|   +- foo.groovy          # 전역 변수 'foo'
|   +- foo.txt             # 'foo'에 대한 문서
+- resources               # 리소스 파일 (external library 전용)
    +- org/foo/bar.json

커스텀 스텝 (call())