나의 잡다한 노트 및 메모
Jenkins의 Global Trusted Pipeline Library란? 본문
1. Global Trusted Pipeline Library란?
- Jenkins Pipeline에서 자주 사용하는 코드나 함수를 별도로 모듈화하여, 여러 파이프라인 스크립트에서 공통으로 사용할 수 있도록 만든 라이브러리를 의미합니다.
- Global Library로 등록하면, Jenkins 인스턴스 전역(모든 Job)에서 신뢰할 수 있는(Trusted) 형태로 사용할 수 있게 됩니다.
- 이 라이브러리는 sandbox 모드 제약 없이 실행될 수 있으므로, 파이프라인에서 자유롭게 코드를 재사용할 수 있습니다.
shared-lib라는 이름과 vars 디렉터리
- Library 이름(shared-lib):
- Jenkins 전역 설정(Global Pipeline Libraries)에서 설정한 “Name”입니다.
- Jenkinsfile(파이프라인 스크립트)에서 @Library('shared-lib') 라고 선언하면, Jenkins는 이 이름을 통해 어떤 Git 저장소/브랜치에서 라이브러리를 가져올지 알게 됩니다.
- vars 디렉터리:
- 공유 라이브러리 구조 중 하나로, Jenkins는 vars 폴더 내의 각 .groovy 파일을 “전역 함수”(또는 “step”)처럼 사용할 수 있게 만듭니다.
- 예: vars/helloWorld.groovy 파일이 있으면, 파이프라인에서 helloWorld(...) 라는 함수를 바로 호출할 수 있습니다.
즉, shared-lib라는 라이브러리 이름과, 라이브러리 내부 구조(그 중에서도 vars 디렉터리)는 서로 다른 개념이지만, 파이프라인 실행 시 둘이 연결되어 “라이브러리 이름으로 불러온 코드” 안에 있는 “vars 디렉터리의 Groovy 파일”을 사용할 수 있게 되는 것입니다.
def call 메서드의 의미
- Groovy에서의 call 메서드
- Groovy 스크립트(클래스) 안에 def call(...) { ... } 메서드를 정의해두면, 해당 스크립트를 함수처럼 호출할 수 있게 됩니다.
Jenkins Shared Library에서 vars 디렉터리의 스크립트 파일
- Jenkins는 vars 안에 있는 파일(helloWorld.groovy)을 하나의 Groovy 스크립트로 간주하고, 스크립트 이름(helloWorld)을 그대로 전역 함수(스텝)처럼 노출합니다.
- 만약 그 스크립트 안에 def call(...) { ... }이 정의되어 있으면, helloWorld(...) 라고 호출했을 때 내부의 call 메서드가 실행됩니다.
'DevOps > Jenkins' 카테고리의 다른 글
Jenkins parallel 구문 (0) | 2025.03.25 |
---|---|
Jenkins Workspace 란? (0) | 2025.03.17 |
젠킨스 Parameter (0) | 2025.03.13 |
Jenkins의 Organization Folers (0) | 2024.12.16 |
Declarative pipeline과 Scripted pipeline의 비교 (0) | 2024.12.13 |