본문 바로가기

4.개발 및 운영 환경

[jenkins] JNLP 사용하기

작성자: ospace114@empal.com, http://ospace.tistory.com/

기본설정

Master에서 Manage Jenkins > Manage Nodes and Clouds 설정에서 노드 하나 생성하고 생성된 노드를 선택하면 JNLP 실행할 스크립트 출력됨.

JNLP 설정은 Global Secuirty > Agents 항목에서 TCP port for inbound agents에서 포트 설정 가능.

java -jar agent.jar -jnlpUrl http://{yourserver}:port/computer/{agent-name}/slave-agent.jnlp

Headless형태로 바로 jar을 받아서 실행됨.

관련 플러그인

  • Node and Label parameter: 하니의 Job에서 다수 agent으로 빌드 가능.

Agent 노드에서 먼저 working 디렉토리를 생성({agent-working-dir}로 사용될 위치)

mkdir /home/{my-home}/jenkins
java -jar agent.jar -jnlpUrl [http://{server-ip}:{server-port}/computer/{agent-name}/slave-agent.jnlp](http://%7bserver-ip%7d:%7bserver-port%7d/computer/%7bagent-name%7d/slave-agent.jnlp) -{secret} \-workDir "{agent-working-dir}"

이미 앞에서 Node에 대한 JNLP 실행 스크립트에 있는 내용.

Agent 노드에서 Jenkins 생성된 노드 조회에서 "agent.jar"링크에 있는 jar파일 다운받아서 설치하고

스크립트 실행.

자동실행(ubuntu)

agent.sh 파일 생성하고 실행 권한 지정

#!/bin/bash
nohup java -jar agent.jar -jnlpUrl [http://{server-ip}:{server-port}/computer/{agent-name}/slave-agent.jnlp](http://%7bserver-ip%7d:%7bserver-port%7d/computer/%7bagent-name%7d/slave-agent.jnlp) -{secret} \-workDir "{agent-working-dir}"&

/etc/init.d에 jenkins-agent 파일을 생성

#!/bin/bash
su - jenkinsuser -c '/home/jenkinsuser/jenkins/agent.sh'
sudo chmod +x jenkins-agent

서비드 등록

sudo update-rc.d jenkins-agent defaults

서비스 해제

sudo update-rc.d -f jenkins-agent remove

-f 옵션은 force

서비스 실행

sudo service jenkins-agent start
sudo systemctl status jenkins-agent
sudo systemctl enable jenkins-agent

서비스 활성화 여부

systemctl is-active jenkins-agent
systemctl list-units --type=service
systemctl stop service-name
systemctl stop service-name
systemctl daemon-reload
반응형