Как перезапустить службу apache2 через сборку jenkins - PullRequest
0 голосов
/ 29 мая 2020

При настройке развертывания через jenkins для моего проекта django я застрял там, где мне пришлось перезапустить службу apache2, чтобы отразить новые изменения на стороне клиента. Я не уверен, как предоставить пароль пользователя после выполнения команды systemctl reload apache2.service.

Я пробовал указанные ниже параметры, но не повезло.

1) systemctl reload apache2.service

Результат:

Failed to reload apache2.service: Interactive authentication required.
See system logs and 'systemctl status apache2.service' for details.
Build step 'Execute shell' marked build as failure

2) sudo systemctl reload apache2.service

Результат:

sudo: no tty present and no askpass program specified
Build step 'Execute shell' marked build as failure 

3) Также не уверен, поможет ли sshpass в этом случае

Прикрепленный снимок экрана, сделанный из работы Дженкинса.

Here is the screenshot taken from jenkins

1 Ответ

1 голос
/ 29 мая 2020

Как отмечалось в предыдущем комментарии, у вас здесь проблема с разрешениями.

Я предполагаю, что ваш экземпляр Jenkins работает под пользователем «jenkins», который не может выполнять команды администратора (root). Таким образом, вам нужно войти в систему через S SH и убедиться, что пользователь «jenkins» может выполнить эту команду с помощью sudo.

Вы можете найти справку по редактированию файла sudoers здесь: Как редактировать файл Sudoers в Ubuntu и CentOS . Я бы порекомендовал вам разрешить только определенные команды.

Если вы решите, что пользователю «jenkins» необходимо ввести пароль, используйте следующую команду:

echo password | sudo -S systemctl reload apache2.service

Конечно, вы должны сохранить этот пароль безопасным способом и замаскируйте его в сборке. Плагин Jenkins Credentials может помочь вам в этом.

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