Jenkins остановка / запуск системного сервиса - PullRequest
0 голосов
/ 06 февраля 2020

Привет всем в моем конвейере Jenkins. Мне нужно остановить системную службу, скопировать последний файл и перезапустить службу снова. Я застрял на этапе остановки системы обслуживания.

Операционная система - CentOS, а Jenkins работает под пользователем 'jenkins'.

После принятого ответа в этом сообщении (https://serverfault.com/questions/772778/allowing-a-non-root-user-to-restart-a-service) Я создал новую группу, добавил jenkins в эту группу, а затем обновил список sudo с помощью visudo. Теперь пользователь jenkins может остановить / запустить эту службу в командной строке Putty следующим образом: sudo systemctl stop <my-service>

Когда я обновил файл конвейера, как показано ниже

                sh "echo stop Linux service"
                sh "sudo systemctl stop <my-service>"

Я получил следующую ошибку:

+ echo stop Linux service
stop Linux service
[Pipeline] sh
+ sudo systemctl stop <my-service>

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

sudo: no tty present and no askpass program specified

Если я удаляю sudo в конвейере, я получаю эту ошибку:

+ echo stop Linux service
stop Linux service
[Pipeline] sh
+ systemctl stop <my-service>
Failed to stop <my-service>: Interactive authentication required.
See system logs and 'systemctl status <my-service>' for details.

Как мне достичь своей цели, пожалуйста?

1 Ответ

0 голосов
/ 06 февраля 2020

Добавление пользователя в группу sudoers позволяет ему только вызывать sudo. Им все еще нужно пройти аутентификацию, используя свой пароль. Так как вы не запускаете эту команду через TTY, вам не нужно спрашивать пароль, поэтому sudo говорит: «Н-а-а-а».

Очевидное решение - убедиться, что ваш агент Jenkins является пользователем не нужен пароль для вызова sudo вообще. Вы можете сделать это, добавив NOPASSWD к этому пользователю в /etc/sudoers.

Выполнить visudo и установить для строки что-то вроде:

jenkins ALL=(ALL) NOPASSWD: ALL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...