我在Jenkins有这样的表达:println User.current().toString()在Jenkins脚本控制台中,它会返回当前登录的真实的用户值。当我在管道脚本中使用此函数时,它会返回值SYSTEM。知道为什么吗?为什么我不能在这里也获得登录的真实用户?
println User.current().toString()
nqwrtyyt1#
要回答您的最后一个问题:我想到了两种简单的方法来获取管道中真正登录(以及触发构建)的用户(名称)**:
*A)使用插件-Build user vars(我可以推荐它,因为它被广泛使用,从来没有让我失望过):
这是他们官方文档中的一个代码片段。当然,它也可以在声明性管道中的某个阶段使用...这个插件设置了几个变量,你可以使用BUILD_USER(包含全名),BUILD_USER_ID(包含用户ID)和更多(参见插件页面上的文档)。
BUILD_USER
BUILD_USER_ID
node { wrap([$class: 'BuildUser']) { def user = env.BUILD_USER_ID } }
和/或声明性流水线中的阶段的示例:
stage('User ID') { steps { echo "User ID: ${env.BUILD_USER_ID}" } }
*B)使用Jenkins岩心法
def build = currentBuild.rawBuild def cause = build.getCause(hudson.model.Cause.UserIdCause.class) def name = cause.getUserName() echo "User: " + name
从标题中也可以回答你的问题:使用你的确切方法是有问题的,并且不适用于管道脚本(更多细节请参见这里的旧讨论How to get Jenkins logged user,甚至是官方社区票证https://issues.jenkins.io/browse/JENKINS-14605)。
1条答案
按热度按时间nqwrtyyt1#
要回答您的最后一个问题:我想到了两种简单的方法来获取管道中真正登录(以及触发构建)的用户(名称)**:
*A)使用插件-Build user vars(我可以推荐它,因为它被广泛使用,从来没有让我失望过):
这是他们官方文档中的一个代码片段。当然,它也可以在声明性管道中的某个阶段使用...这个插件设置了几个变量,你可以使用
BUILD_USER
(包含全名),BUILD_USER_ID
(包含用户ID)和更多(参见插件页面上的文档)。和/或声明性流水线中的阶段的示例:
*B)使用Jenkins岩心法
从标题中也可以回答你的问题:使用你的确切方法是有问题的,并且不适用于管道脚本(更多细节请参见这里的旧讨论How to get Jenkins logged user,甚至是官方社区票证https://issues.jenkins.io/browse/JENKINS-14605)。