Jenkinsが不安定
- 最近どうも職場のSlaveを認識しないことが不定期に発生する。
- remoting.jarが見つからないとかいうエラーも以前からたまに出てたり。
- Jobが増えすぎて見づらくなっていたので新しくMaster/Slaveのセットを作って一部のJobを分けてみることにした。
環境を用意
- ESXiにVMを作るが、イントラ環境なのでURLを集約しておくと色々と便利。
- よって、nginxのリバースプロキシが入っているVMとは別のVMを3つ用意してJenkinsのMaster/Slaveとする。
- Jenkins構成
Jenkinsセットアップ
Master
- 基本的にroot(sudo -s)で作業してます。
- aptでJenkinsを入れる。
# cd /etc/apt/sources.list.d
# vi jenkins.list
deb http://pkg.jenkins-ci.org/debian binary/
# wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add -
OK
- インストール
- updateしてからinstallで。
- updateすると、Jenkinsのリポジトリ設定が読み込まれてます。
- 依存関係を解決してJava(OpenJDK)も入るので簡単ですね。
# aptitude update
Ign http://jp.archive.ubuntu.com trusty InRelease
Ign http://jp.archive.ubuntu.com trusty-updates InRelease
Hit http://jp.archive.ubuntu.com trusty Release.gpg
(snip)
Ign http://pkg.jenkins-ci.org binary/ Translation-ja_JP
Ign http://pkg.jenkins-ci.org binary/ Translation-ja
Ign http://pkg.jenkins-ci.org binary/ Translation-en
Ign http://security.ubuntu.com trusty-security/main Translation-ja_JP
Ign http://security.ubuntu.com trusty-security/main Translation-ja
Ign http://security.ubuntu.com trusty-security/multiverse Translation-ja_JP
Ign http://security.ubuntu.com trusty-security/multiverse Translation-ja
Ign http://security.ubuntu.com trusty-security/restricted Translation-ja_JP
Ign http://security.ubuntu.com trusty-security/restricted Translation-ja
Ign http://security.ubuntu.com trusty-security/universe Translation-ja_JP
Ign http://security.ubuntu.com trusty-security/universe Translation-ja
Fetched 198 B in 16秒 (12 B/s)
# aptitude install jenkins
(snip)
jenkins (1.562) を設定しています ...
* Starting Jenkins Continuous Integration Server jenkins
...done.
- 初期設定
- 元のMasterサーバでは以前OutOfMemoryが出たことがあるのでメモリを多めにとっている。今回もそれに従って増やしておくことにする。
# cd /etc/default
# vi jenkins
JAVA_ARGS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m"
PREFIX=/jenkins
JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --prefix=$PREFIX"
- 起動
- このまま起動すると組み込みのJettyが8080であげてくれる。
# service jenkins start
- 社内では色々と面倒なことがあるので、サーバを集約するために使っている別のWebサーバ(nginx)にリバースプロキシの設定をする。
- server xxx.xxx.xxx.xxx はJenkinsをインストールしたサーバのIPを指定。
# cd /etc/nginx/sites-available
#vi default
upstream jenkins_server {
server xxx.xxx.xxx.xxx:8080 fail_timeout=0;
}
server {
listen 80;
location /jenkins {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://jenkins_server;
break;
}
}
}
# service nginx reload
Slave
Job移行
- Job Import Plugin を使ってみました。
- 旧JenkinsのURLを入れれば大丈夫なはずなのですが、何故か無反応。ログを見てみたら読み込んだXMLがパースエラーになってた。_| ̄|○
- ところが移行したJobがことごとく動かない。動かないからってSlave直接弄って強引にJob動かしちゃダメだよー。
- しょうがない、Jobを綺麗にするいい機会ってことで・・・(´Д`)