Fundo :
Eu criei um aplicativo chamado myappwith Spring-boot. Ele consiste em um jar auto-executável e é compatível com os serviços systemd. Agora, estou tentando integrá-lo ao jenkins.
O que eu quero:
Quero que Jenkins seja capaz de:
- pare o serviço.
- substitua o frasco.
- reinicie o serviço.
Problema:
Até agora, apenas os sudoers podem iniciar / parar serviços. Eu não quero que Jenkins seja um sudoer (parece confuso).
Estrutura atual:
Eu tenho um usuário myappque tem uma /home/myapppasta. O jar gerado é chamado myappe colocado em /home/myapp. O usuário myappé o proprietário do jar gerado:
myapp@myserver:~/backend$ ll
total 53900
drwxrwxr-x 2 myapp myapp 4096 Apr 25 17:09 ./
drwxr-xr-x 6 myapp myapp 4096 Apr 25 17:08 ../
-rw-rw-r-- 1 myapp myapp 511 Apr 20 16:13 application.properties
-rwxr--r-- 1 myapp myapp 55175294 Apr 20 19:06 backend-1.0-SNAPSHOT.jar*
lrwxrwxrwx 1 myapp myapp 24 Apr 20 19:20 myapp -> backend-1.0-SNAPSHOT.jar*
-rw-r--r-- 1 myapp myapp 179 Apr 20 19:26 myapp.service
Coloquei uma chave ssh para que o jenkins possa registrar como myapp@myserver.
Como myappé o proprietário do jar, acho que pode haver uma opção que permita ao usuário myappligar systemctl start/stop myapp. Na verdade, eu posso ligar, systemctl status myappmas não start/stop(a senha root é solicitada).
Alguma sugestão?
myappligar sudo systemctlapenas para seu próprio serviço?
sudobagunçado; geralmente é assim que você deve implementar algo assim. Crie um grupo, atribua seu usuário jenkins a ele e usevisudofornecer um conjunto de comandos limitado para esse grupo para gerenciar o serviço