ファイアウォールの設定の関係で、jnlpで起動する必要がありました。
で、slaveはCentOSでXを入れてないので、slave側で下記コマンドを打って起動することに。
java -jar slave.jar -jnlpUrl $JENKINS_URL/computer/$JENKINS_NODENAME/slave-agent.jnlp参考: https://wiki.jenkins-ci.org/display/JENKINS/Distributed+builds#Distributedbuilds-Launchslaveagentheadlessly
これでOKなのだけどリブートとかした際に、再度コマンドを打つ必要がある。
/etc/rc.local に直接コマンドを打ってみたりしたけど、うまくいかなかったので、
下記サイトを参考に、というかほぼまんまの起動スクリプトを作ってサービスに登録しました。
http://wiki.whamcloud.com/display/PUB/Jenkins+Build+Slave+Setup
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# | |
# jenkins-slave: Launch a Jenkins BuildSlave instance on this node | |
# | |
# chkconfig: - 99 01 | |
# description: Enable this node to fulfill build jobs | |
# | |
# Source function library. | |
. /etc/rc.d/init.d/functions | |
[ -f /etc/sysconfig/jenkins-slave ] && . /etc/sysconfig/jenkins-slave | |
JENKINS_URL="http://example.com/" | |
JENKINS_WORKDIR="/var/lib/jenkins" | |
JENKINS_USER="jenkins" | |
JENKINS_NODENAME="YOUR OWN NODENAME (e.g. exampleslave)" | |
[ -n "$JENKINS_URL" ] || exit 0 | |
[ -n "$JENKINS_WORKDIR" ] || exit 0 | |
[ -n "$JENKINS_USER" ] || exit 0 | |
[ -n "$JENKINS_NODENAME" ] || exit 0 | |
prog=Jenkins-BuildSlave | |
download_jar() | |
{ | |
curl -s -o slave.jar $JENKINS_URL/jnlpJars/slave.jar || exit 0 | |
} | |
start() | |
{ | |
cd $JENKINS_WORKDIR | |
[ -f slave.jar ] || download_jar | |
echo -n $"Starting $prog: " | |
su - $JENKINS_USER sh -c "\ | |
java -jar slave.jar \ | |
-jnlpUrl $JENKINS_URL/computer/$JENKINS_NODENAME/slave-agent.jnlp \ | |
>slave.log 2>&1 &" | |
if [ $? = 0 ]; then echo '[OK]'; else echo '[NG]'; fi | |
} | |
stop() | |
{ | |
echo -n $"Shutting down $prog: " | |
PID=`ps -ef | grep '[j]ava -jar slave.jar' | awk '{print $2}'` | |
[ -n "$PID" ] && kill $PID | |
if [ $? = 0 ]; then echo '[OK]'; else echo '[NG]'; fi | |
} | |
# See how we were called. | |
case "$1" in | |
start) | |
start | |
;; | |
stop) | |
stop | |
;; | |
restart|reload) | |
stop | |
start | |
;; | |
status) | |
status java | |
;; | |
*) | |
echo $"Usage: $0 {start|stop|restart|reload}" | |
exit 1 | |
esac | |
exit 0 |
daemonの扱いがよく分からなかったので、若干力技です。。
参考元のサイトとの違いは、ほぼ無い(汗)のだけど、とりあえずstopの時に'java'でgrepして
killされるのはちょっとあれだったので、愚直にjenkins-slaveのpidを取ってきました。
これでとりあえずやりたいことは出来ました。
ただ、まだリブートした時とか、master側でちゃんと認識してもらえない時がある。。
まぁひとまずはOKなので、ちょっとずつ修正していこう。
おしまい。
Jenkins本は後で読み返すと、「あ、これ今回のケースで使えるな」ってことが結構あります。
0 件のコメント:
コメントを投稿