2015-12-03 3 views
1

Я пытаюсь заставить Jenkins запускать задания как конкретные пользователи Linux.Jenkins Run as Specific User not working

Я установил безопасность для использования аутентификации Unix и установил "Authorize Project" plugin.

Я написал простой скрипт в моем каталоге ~/bin, который отправляет мне электронное письмо с сообщением «Hello $ USER».

В Jenkins я создал задание и использовал плагин Authorize Project, чтобы выбрать run as specific user и мое имя пользователя.

Когда я пытаюсь создать сборку, работа завершается неудачно. Если я посмотрю на выходную консоль, сообщения сообщают, что задание было начато моим пользователем, что работа была выполнена мной. Но тогда работа завершилась неудачно, потому что скрипт фактически запускается пользователем jenkins, который не имеет всех необходимых разрешений (а не переменных среды).

Я что-то не так? Как я могу это исправить?

+0

Это только задание, которое вы хотите запустить как другого пользователя или вы хотите, чтобы другой существующий пользователь (из вашего Linux) для вашей всей среды jenkins? – lvthillo

+0

Единственная работа .. Я думаю, мне удалось создать подчиненный, подключающийся как мой пользователь. Я не знаю, является ли это самым чистым решением, но оно работает – lucacerone

ответ

1

Плагин «Авторизовать проект» не меняет пользователя уровня ОС, который запускает команды. Он устанавливает только пользователя Jenkins, выполняющего задание, и любые последующие задания, используя аутентификацию Jenkins (каким бы оно ни было).

Например: Работа А может выполняться пользователем Alpha и Beta, Job A запускает Job B, а Job B может управляться только Alpha.

Как правило, Alpha или Beta могут запускать Job A, который не запускает Job B без проблем, поскольку Job B будет запускаться как системный пользователь по умолчанию.

Но в некоторых ситуациях, возможно, вы хотите обеспечить, чтобы бета-версия не могла выполнять Job B, независимо от того, как они запускают процесс. Таким образом, для задания А может быть установлено «Запустить как пользователь, который вызвал сборку». Когда Beta запускает Job A, Job A не сможет запустить Job B, так как исполняемый пользователь Beta и Beta не могут запускать Job B.

Или наоборот: бетам не разрешено запускать Job B непосредственно. Но если они запускают какой-то конкретный процесс (запустите Job A), они могут запустить Job B косвенно. Установка задания А в «Запуск от имени пользователя» и указание пользователя (например, Alpha), который может запускать Job B, позволит Beta выполнить задание B по заданию A.