web-dev-qa-db-ja.com

SystemdでJenkinsを使用して自動再起動を使用する方法

CentOS7でJenkinsを実行していますが、時々クラッシュするので、これが発生したときに自動的に再起動したいと思います。少しグーグルすると、SystemdではRestart = on-failureを使用できることがわかりましたが、問題は、Jenkinsがサービスファイルを使用していないことです。

Systemctl status jenkins.serviceを実行すると、次のようになります。

● jenkins.service - LSB: Jenkins Continuous Integration Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins)
   Active: active (running) since Mon 2016-02-29 17:30:08 UTC; 11min ago

それで、それはまだinit.dを使用しているように見えますか?これをどのように使用できるか考えてみてくださいRestart=on-failure この場合?

2
daniels

完全に恐ろしいクルージとして、systemdをjenkins initスクリプトに向けることができます。そのスクリプトには、jnkinsを起動して実行する方法を理解するための迷惑な「Javaの場所」やその他のコードがたくさんあるためです。

# cat /etc/systemd/system/jenkins.service
[Unit]
Description=Jenkins Server Daemon
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/etc/init.d/jenkins start
Restart=always
RestartSec=3
Type=forking

[Install]
WantedBy=multi-user.target
# systemctl enable jenkins.service

その後、サービスは再起動時に開始し、chkconfig --listに表示されず、kill -9 $thepidでも再起動しますが、jenkinsの人々がsystemdに直接サポートを含めるのが理想的ですが、長期的にはより良いオプションです。 RPM .. ..

3
thrig

Jenkins Wiki からのコードの変更であるsystemd-fileを提供できます。

[Unit]
Description=Jenkins Daemon

[Service]
SuccessExitStatus=143
ExecStart=/usr/bin/Java -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8081 --ajp13Port=-1
Environment="JENKINS_HOME=/data/jenkins"
User=jenkins

[Install]
WantedBy=multi-user.target

これは、aptを介してJenkinsがインストールされているUbuntu16.04の@thrigのものよりもはるかにうまく機能します。これにより、/ etc/init.d/jenkinsと/ etc/default/jenkinsが不要になり、journalctlで直接ログを取得できます。

1
Alwinius

JenkinsパッケージはまだSysVinitファイルのみで出荷されているため、systemd固有の動作は利用できません。 systemdユニットファイルがパッケージで出荷されるように要求するバグレポートを作成します。 https://issues.jenkins-ci.org/browse/JENKINS-41218

0
NickBroon