ども。 snicker_jpです!
突然、Jenkinsが真っ白になって、社内から通報があったので再起動して対応したんですが・・・
(ちなみに、文字は表示されます!)
どうやら、私の環境だけではないようで・・・
上記サイトを参考に、対応してみました!
まずは、状況の整理をします。
前提条件
現象が起きた環境の前提条件を記載しておきます!- CentOS release 6.5
- jenkins-1.537-1.1.noarch
- JenkinsはRPMからインストール
Jenkinsのissuesにもあがっているようです。
まとめると、
「tmpwatchのcronで/tmp以下のファイルが消えてしまうため!」
/tmpの下にJettyがファイルをWebUIのファイルを置いてしまうので、このようなことが起きると。
対応方法
対応策はいくつかあるので、わかっている範囲であげておきます!- tmpwatchのcron設定を変更する
- Javaのオプションに「java.io.tmpdir」を指定してあげる
私の環境では、後者を選択しました。
実際の対策
対策の手順です。- Jenkinsを停止する
- /etc/sysconfig/jenkinsを、編集する
- Jenkinsを起動する
「/etc/sysconfig/jenkins」を、編集する
可能であれば、「Jenkinsを停止する」をしましょう。次に
initスクリプトを編集しようかと思ったのですが、おそらくバージョンアップなどで上書きされてしまうし、あんまりよろしくないので、上書きされない「/etc/sysconfig/jenkins」を選びました。
差分を提示します。
--- /home/snicker_jp/jenkins-sysconfig 2014-01-08 15:03:37.179333667 +0900 +++ /etc/sysconfig/jenkins 2014-01-08 15:24:11.126332277 +0900 @@ -34,7 +34,9 @@ # # Options to pass to java when running Jenkins. # -JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true" +#JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true" +tmpdir="/var/cache/jenkins/war" +JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Djava.io.tmpdir=${tmpdir}" ## Type: integer(0:65535) ## Default: 8080
- tmpdirを「/var/cache/jenkins/war」に指定
- JENKINS_JAVA_OPTIONSに「-Djava.io.tmpdir=${tmpdir}」を追加
確認
「/var/cache/jenkins/war」以下に、Jettyのファイルが出来ていれば、成功です!akuma3564825645114509647jar ColorFormatter.class css dc-license.txt executable favicon.ico help images jetty-0.0.0.0-8080-jenkins.war-_jenkins-any- jna jna3367531845598125382jar JNLPMain.class LogFileOutputStream$1.class LogFileOutputStream$2.class LogFileOutputStream.class Main.class MainDialog$1$1.class MainDialog$1.class MainDialog.class Main$FileAndDescription.class META-INF robots.txt scripts WEB-INF winstone6878079771321602306.jar winstone.jar
まとめ
- ブログに気が付かなければ、この対策もしなかったのでありがとうございます!
- LTS(Long-Term Support Release)だけ、使うべきなんですかね!?(LTSは非Jetty)
- OSSは奥が深い!