Como usar a reinicialização automática com o Jenkins no Systemd

2

Eu tenho o Jenkins rodando em um CentOS7 e ele cai de vez em quando e eu gostaria de reiniciá-lo automaticamente quando isso acontece. Googleing um pouco eu descobri que no Systemd você pode usar Restart = on-failure, mas o problema é que pelo que vejo o Jenkins não usa um arquivo de serviço.

Se eu fizer o systemctl status jenkins.service, obtenho:

● 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

Parece que ainda está usando o init.d? Alguma idéia de como eu posso usar este Restart=on-failure neste caso?

    
por daniels 29.02.2016 / 18:51

3 respostas

2

Como um todo horrível, você poderia apontar systemd no script init do jenkins, já que o script tem um monte de "onde está Java" e outro código para descobrir como colocar os jenkins em funcionamento.

# 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

e, em seguida, o serviço inicia na reinicialização, não é listado por chkconfig --list e reinicia mesmo se kill -9 $thepid embora idealmente a longo prazo, uma opção melhor seria que o pessoal da jenkins incluísse suporte direto para systemd em seu RPM ...

    
por 29.02.2016 / 20:45
1

Eu posso oferecer systemd-file, que é uma modificação do código do Wiki de Jenkins :

[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

Isso funciona muito melhor que o do @thrig no Ubuntu 16.04 com o Jenkins instalado via apt. Desta forma você não precisa mais do /etc/init.d/jenkins e / etc / default / jenkins e também obtém os logs diretamente no journalctl.

    
por 04.09.2017 / 13:48
0

Os pacotes do Jenkins ainda são fornecidos com apenas um arquivo init do SysV, portanto, comportamentos específicos do systemd não estão disponíveis. Eu levanto um relatório de bug para solicitar que um arquivo de unidade do systemd seja enviado nos pacotes. link

    
por 19.01.2017 / 16:20