snow · 2026.5.15 11:11 · 조회 1
Jenkins 에이전트(Node) 구성
에이전트란?
Jenkins 에이전트(Agent/Node)는 실제 빌드 작업을 실행하는 서버입니다. Master 서버는 작업을 조율하고 에이전트가 실제 빌드를 수행합니다.
분산 빌드를 통해 부하를 분산하고 다양한 환경(OS, JDK 버전 등)에서 빌드할 수 있습니다.
에이전트 유형
| 유형 | 연결 방식 | 특징 |
|---|---|---|
| SSH | Master → Agent SSH | 전통적인 방식, 안정적 |
| JNLP/WebSocket | Agent → Master | 방화벽 환경에 적합 |
| Docker | 컨테이너 기반 | 격리된 환경, 재현성 높음 |
| Kubernetes | Pod 기반 | 동적 확장, 클라우드 환경 |
SSH 에이전트 추가
1. 에이전트 서버 준비
1# 에이전트 서버에 Java 설치2sudo apt install -y openjdk-17-jdk3 4# Jenkins 사용자 생성5sudo useradd -m -d /var/jenkins jenkins6 7# SSH 키 등록 (Master의 공개키를 에이전트에 추가)8sudo -u jenkins mkdir -p ~/.ssh9sudo -u jenkins tee ~/.ssh/authorized_keys <<< "$(cat ~/.ssh/id_rsa.pub)"2. Jenkins에 에이전트 등록
- Jenkins 관리 → Nodes → New Node
- Node name 입력, Permanent Agent 선택
- 설정 항목:
| 항목 | 설명 |
|---|---|
| # of executors | 동시 실행 가능한 빌드 수 |
| Remote root directory | 작업 디렉토리 (예: /var/jenkins) |
| Labels | 에이전트 식별 레이블 (예: linux, node18) |
| Launch method | Launch agents via SSH 선택 |
| Host | 에이전트 서버 IP |
| Credentials | SSH 키 Credentials |
Docker 에이전트
Docker Pipeline 플러그인 설치 후 사용합니다.
1pipeline {2 agent {3 docker {4 image 'node:18-alpine'5 args '-v /tmp:/tmp'6 }7 }8 stages {9 stage('Build') {10 steps {11 sh 'node --version'12 sh 'npm install && npm run build'13 }14 }15 }16}각 스테이지별로 다른 이미지 사용:
1pipeline {2 agent none3 stages {4 stage('Build') {5 agent { docker 'node:18-alpine' }6 steps { sh 'npm run build' }7 }8 stage('Test') {9 agent { docker 'node:18-alpine' }10 steps { sh 'npm test' }11 }12 stage('Deploy') {13 agent { label 'deploy-server' }14 steps { sh './deploy.sh' }15 }16 }17}에이전트 레이블 활용
1// 특정 레이블의 에이전트에서만 실행2agent { label 'linux && node18' }3 4// 여러 레이블 중 하나5agent { label 'linux || mac' }에이전트 모니터링
Jenkins 관리 → Nodes 페이지에서:
- 각 에이전트의 실행 중인 빌드 수 확인
- 에이전트 로그 확인
- 에이전트 연결/해제 제어
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.