ゲーム業界エンジニアの独り言

クライアント、サーバ、インフラなどなど興味あることなんでも紹介

CentOS を Jenkins のスレイブマシーンに追加する方法

CentOS を Jenkins のスレイブマシーンに追加する方法

ノードの追加

Jenkinsの管理 -> ノードの管理 -> 新規ノード作成 -> ノード名を入力 -> ダムスレーブを選択 -> OK

以下のノード情報を入力してOK ノード名、説明、ラベルは都度変更

ノード名:test
説明:
同時ビルド数:1
リモートFSルート:/var/lib/jenkins
ラベル:test
用途:このマシーンを特定ジョブ専用にする
起動方法:JNLP経由でスレーブを起動
可用性:可能な限りオンラインのままにする

スレーブマシーン側の設定

スレーブマシーンにログイン後、

起動ユーザーを作成

# useradd jenkins

ワークディレクトリを作成

# mkdir -p /var/lib/jenkins
# chown -R jenkins:jenkins /var/lib/jenkins

設定ファイルを作成  JENKINS_URL は Jenkins のアクセスURL  JENKINS_NODENAME は 作成したノード名  JENKINS_SECRET は 作成したノードページに書いてある -secret の値

# vi /etc/sysconfig/jenkins-slave

JENKINS_WORKDIR="/var/lib/jenkins"
JENKINS_USER="jenkins"
JENKINS_URL="https://210.0.0.0:41001/jenkins"
JENKINS_NODENAME="test"
JENKINS_SECRET="9f1819708de5b9ddd1033847172e9157b152e509f404e4274f10ef8b63c30346"
JENKINS_OPTION="-noCertificateCheck"
 # chmod 600 /sysconfig/jenkins-slave

起動サービスの作成

# vi /etc/init.d/jenkins-slave

#!/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
 
[ -n "$JENKINS_URL" ] || exit 0
[ -n "$JENKINS_WORKDIR" ] || exit 0
[ -n "$JENKINS_USER" ] || exit 0
[ -n "$JENKINS_NODENAME" ] || exit 0
[ -n "$JENKINS_SECRET" ] || exit 0
[ -n "$JENKINS_OPTION" ] || exit 0
[ -x /usr/bin/java ] || exit 0
 
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 -secret $JENKINS_SECRET $JENKINS_OPTION >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
# chmod 755 /etc/init.d/jenkins-slave

起動サービスに登録

# chkconfig --add jenkins-slave
# chkconfig jenkins-slave on
# chkconfig --list jenkins-slave

起動

# service jenkins-slave start

slave.jar がダウンロードが失敗した場合は手動で配置 slave.jar は 作成したノードページからダウンロード可能

# mv slave.jar /var/lib/jenkins/

改訂新版Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

改訂新版Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)