How to use automatic Restart with Jenkins on Systemd
Solution 1
As a total horrible kluge you could point systemd
at the jenkins init script, as that script has a whole bunch of annoying "where's Java" and other code to figure out how to get jenkins up and running.
# 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
and then the service starts at reboot, is not listed by chkconfig --list
, and restarts even if you kill -9 $thepid
though ideally long-term a better option would be for the jenkins folk to include direct support for systemd in their RPM...
Solution 2
I can offer systemd-file which is a modification of the code from the Jenkins Wiki:
[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
That works much better than the one from @thrig on Ubuntu 16.04 with Jenkins installed via apt. This way you don't need /etc/init.d/jenkins and /etc/default/jenkins anymore and also get the logs directly in journalctl.
Related videos on Youtube
Comments
-
daniels over 1 year
I have Jenkins running on a CentOS7 and it kind of crashes from time to time and I'd like to restart it automatically when this happens. Googleing a bit I've found that on Systemd you can use Restart=on-failure but the problem is that from what I see Jenkins does not use a service file.
If I do systemctl status jenkins.service I get:
● 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
So looks like it's still using init.d? Any idea how I can use this
Restart=on-failure
in this case? -
thrig about 8 yearsDid you run
chkconfig --list
before and after? When I did,systemd
had magically removed the init entry on a test Centos 7 virt. -
daniels about 8 yearsJust tested now and it works. After creating the .service file
chkconfig --list
does not display it anymore and it's also automatically restarted. Thanks.