我正在尝试让 Jenkins 以特定的 Linux 用户身份运行作业。
我已将安全设置为使用 Unix 身份验证并安装了 "Authorize Project" plugin .
我在我的 ~/bin
目录中编写了一个简单的脚本,该脚本向我发送一封电子邮件,其中包含消息“Hello $USER”。
在 Jenkins 中,我设置了一个作业并使用授权项目插件来选择以特定用户身份运行
和我的用户名。
当我尝试创建构建时,作业失败。如果我查看输出控制台,消息会显示该作业已由我的用户启动,该作业已由我运行。但随后作业失败,因为该脚本实际上是由用户 jenkins 运行的,该用户没有所有必需的权限(也没有设置环境变量)。
我做错了什么吗?我该如何解决这个问题?
最佳答案
“授权项目”插件不会更改正在运行命令的操作系统级别用户。它仅使用 Jenkins 身份验证(无论是什么)设置运行作业和任何下游作业的 Jenkins 用户。
例如:作业A可以由用户Alpha和Beta运行,作业A运行作业B,作业B只能由Alpha运行。
通常情况下,Alpha 或 Beta 可以运行作业 A,作业 B 也可以正常运行,因为作业 B 默认会以系统用户身份运行。
但在某些情况下,您可能希望强制 Beta 无法运行作业 B,无论它们如何启动该进程。因此,作业 A 可以设置为“以触发构建的用户身份运行”。当 Beta 运行作业 A 时,作业 A 将无法运行作业 B,因为强制用户是 Beta,而 Beta 无法运行作业 B。
或者相反:Beta 不允许直接运行作业 B。但是,如果他们运行某些特定进程(运行作业 A),那么他们可以间接运行作业 B。将作业A设置为“以指定用户身份运行”并指定可以运行作业B的用户(例如Alpha)将允许Beta通过作业A运行作业B。
关于authentication - Jenkins 以特定用户身份运行无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34063936/