모든 젠킨스 파이프라인은 코드를 실행하기 위해 하나 이상의 시스템이 필요하는데 시스템이란 용어는 우리가 다루는 다양한 용어에 대항 총칭이다. 하지만 시스템이나 머신에 설치된 젠킨스에 여러 개의 인스턴스가 존재할 수 있다는 것만 기억하자.

마스터

젠킨스 마스터는 젠킨스 인스턴스 제어에 중심디 되는 역할을 한다. 마스터에는 젠킨스의 모든 설정과 옵션, 잡에 대한 완전한 권이 있다. 다른 시스템에 정의되지 않았다면 잡을 실행하는 기본 장소가 된다.

하지만 마스터는 무거운 작업을 수행하는데는 적합하지 않다. 무거운 작업이 필요한 잡은 마스터가 아닌 다른 시스템에 수행해야 한다.

그 이유는 마스터에서 수행되는 잡에는 모든 데이터, 환경설정, 작업에 대한 마스터와 같은 버근 권한이 있어 보안에 심각한 위협이 된다. 또 다른 이유는 마스터가 끊김 없이 작업을 관리해야 하므로 과부하로 인해 중단되는 일이 발생하면 안되기 떄문이다.

노드

노드는 젠킨스2에서 사용하는 일반적 용어로 잡을 실행할 수 있는 시스템을 의미한다. 여기에는 마스터 혹은 에이전트가 포함되며, 때로는 이 둘을 지칭하는 용어로 사용되기도 한다. 도커와 같은 컨테이너를 의미할 때도 있다.

마스터 노드는 젠킨스를 설치하면 무조건 생기지만 위에 기술한 이유로 여기에서 잡을 실행하는 것은 적합하지 않다.

에이전트

에이전트는 구 젠킨스의 슬레이브와 같은데 전통적으로 젠킨스에서 이는 마스터가 아닌 시스템을 의미한다. 개념을 간단히 살펴보면 에이전트는 마스터에 의해 관리되고 필요에 의해 할당되어 각 잡의 수행을 담당한다. 예를 들어, 에이전트를 OS에 따라 다르게 빌드를 수행 할 수 있게 할당하거나, 테스트를 위해 여러 개의 에이전트를 병렬로 실행시킬 수 있다.

시스템 부하와 보안 위험을 줄이기 위해 접근 권한이 제한된 경량화된 젠킨스 클라이언트를 설치해 잡을 처리한다. 에이전트와 노드의 관계를 보면 에이전트는 노드에서 실행된다. 스크립트 방식의 파이프라인에서 노드는 에이전트가 있는 시스템을 지칭한다. 서술적 파이프라인에서는 특정 에이전트를 명시해 노드를 할당하게 된다.

노드는 스크립트 방식의 파이프라인과 연관이 있고 기술적으로 이는 스텝이 되는데, 파이프라인에서 수행돼야할 행동을 유발시키는 역할을 한다. 이는 엑시큐터를 노드에 할당하고 정의된 영억 안에 있는 코드를 실행한다.

//script pipeline
node('worker_node1) {
	stage('Source') {
		git <git 주소>
	}
} 

반면에 에이전트는 서술적 파이프라인 명령으로 none 에이전트를 사용하는 특별한 경우를 제외하고 노드를 할당하는 역할을 한다


//서술적 파이프라인
pipeline {
	agent {label 'worker_node1'}
	stages {
		stage('Souce') {
			steps {
				git '<git 주소>'
			}
		}
		}
	}
}

두 파이프라인 스타일에 따른 문법적 차이를 제외하고는 사실 큰 차이는 없어서 동일한 것으로 생각해도 된다. 단지 스크립트 방식의 파이프라인에는 노드를, 서술적 파이프라인에서는 에이전트를 사용하면 된다.

엑시큐터

기본적으로 엑시큐터는 노드나 에이전트에서 잡을 실행시키는 장소다. 노드는 엑시큐터를 여러 개를 갖고 있을 수도 있고, 하나도 갖고 있지 않을 수도 있다. 엑시큐터의 개수에 따라 해당 노드에서 동시에 실행될 수 있는 잡의 개수가 정의된다.마스터가 잡을 특정 노드에 할당했을 때 해당 잡이 즉시 수행되려면 사용 가능한 엑시큐터가 있어야 하고, 아니면 엑시큐터가 사용 가능해질 때까지 기다리게 된다.

액시큐터의 숫자와 다른 변수는 노드를 만들 때 설정가능하다.

노드 생성

전통적 젠킨스에서 잡은 마스터 혹은 슬레이브에서 실행됐다. 2에서는 이들 모두 노드로 지칭한다. 관리페이지에서 노드 관리 링크를 클릭해보자.

스크린샷 2022-07-20 오후 5.15.45.png

스크린샷 2022-07-20 오후 5.24.28.png

페이지 하단 체크박스에 환경변수와 도구위치를 설정하는 옵션이 있고 이를 체크하면 해당 노드에서 사용할 특별 변수와 도구를 정의할 수 있게 된다. 이는 마스터와 다른 설정을 사용할 필요가 있을 경우에 사용된다.