본문 바로가기
ops/jenkins

jenkins 에이전트에서 여러 stage를 병렬 처리하기 - 1

by seohan1010 2025. 11. 21.

 

 

jenkins ci pipeline에는 적지 않은 stage가 존재하고 있다. 


 

 

agent 노드를 생성하여 api test(mock)과 checkstyle(코드 표준)
테스트를 동시에 진행하려고 한다. 


https://cloudinfrastructure.tistory.com/456

 

jenkins agent 사용하기

Manage -> Nodes로 이동 New Node 클릭 에이전트의 이름을 작성해 주고 나서 필요한 설정들을 해준다. JNLP 방식을 사용할 것이기 때문에 Launch method를 위와 같이 생성해 주었다. curl -sO http://:8080/jnlpJars/ag

cloudinfrastructure.tistory.com

 


젠킨스 노드 생성하는 법 

 

 

 

에이전트로 사용할 이미지를 생성하고 

 

agent1을 위와 같이 실행 
(agent2는 실행시 입력하는 환경변수의 값만 
다르게 하여 실행)

 

마스터 jenksin에서 agent1과 agent2에 모두 
정상적으로 연결이 되었다. 


 

 

 

에이전트로 사용하는 컨테이너의 이미지는 jdk21을 사용하고 있다. 

 

내 프로젝트는 gradle-7.6.4, java11을 사용하고 있기 때문에 
이미지를 build할때 gradle-7.6.4와 jdk11을 모두 
이미지로 COPY하여서 포함시켰다. 

그리고 파이프라인에서는 위와 같이 shell에서 설정 및  
JAVA_HOME의 경로를 새로 설정




JAVA_HOME의 경로는 정상적으로 
업데이트가 되었는데 gradle 명령어 실행시에는 에러가 발생한다. 
(GRADLE_HOME/bin/gradle 파일에서 명시적으로
JAVA_HOME의 위치를 설정했을때도
정상 실행이 되지 않았다.)


가능한 선택지 
1. java의 버전을 업그레이드 
2. gradle의 버전을 업그레이드 

첫번째 옵션을 선택했을때 프로젝트 소스코드의 
수정이 필요하기 때문에 패스 
두번째 옵션은 gradle버전이 jdk21에서 실행이 가능하고 
빌드할때는 jdk11을 사용할수 있으면 가능


 

gradle8.x가 위와같이 jdk11과 21을 모두 지원한다고 하여 
gradle을 8버전대로 업그레이드 진행

 

 

 

 

로컬에 있는 원본 프로젝트에서 gradle-8.6으로 테스트를 
진행했을때 정상적으로 테스트가 완료

 

 

 

 

agent에 등록된 tool의 경로도 수정 






그래도 문제가 계속 발생하여 다시 확인해 보니 
agnet의 tool에 설정해 놓았던 
 JAVA_HOME의 경로의 문제라고 한다. 




agent1의 JAVA_HOME의 경로를 이미지에서 사용하는 
jdk가 있는 경로로 수정 






gradle   명령어가 정상적으로 실행이 된다. 

 

 

 

https://www.jenkins.io/blog/2017/09/25/declarative-1/

 

Parallel stages with Declarative Pipeline 1.2

Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software

www.jenkins.io