我要求将登录的用户ID信息导入Jenkins插件。
我创建了HelloWorldclass,它扩展了hudson.tasks.Builder类来创建插件。从这个类,我试图让登录用户使用perform方法。
我尝试了各种选项但无法获得登录用户,每个选项都将SYSTEM作为用户ID返回。
User.current(): - 在Jenkins控制台上返回SYSTEM,但是在jenkins脚本控制台上给出了完美的结果,但是相同的代码没有我记录用户信息。
然而,当我在四处寻找时,我可以看到用户ID始终显示在用户界面的右上角,因为它是我想要的信息而嘲弄我,但似乎不可用。
任何人都可以帮忙解决这个问题。
答案 0 :(得分:1)
User.current()
会为您提供一个User
对象,代表当前用户,如果在Jenkins的脚本控制台中打印,则会调用toString()
。反过来最有可能调用getFullName()
(或getDisplayName()
- 没有在代码中检查它并且它既不明显来自API,它缺乏正确的描述,也没有管理用户UI,因为只有一个字段:全名)。
User.current().getId()
会获取用户的ID。
请参阅{{3}}。
答案 1 :(得分:1)
我认为这是詹金斯问题。如果你的类扩展了hudson.tasks.Builder,它就不会通过调用User.Current()方法给你记录的使用信息,而是它会给你SYSTEM用户。但是如果你从应该扩展Jenkins类的其他类中调用相同的方法,那么它可能会让你记录用户。
在我的例子中,我创建了另一个扩展hudson.model.ManagementLink的类,并使用hudson.Extension批注进行了注释。在这个类User.Current()给我记录的用户。
答案 2 :(得分:0)
使用json api数据,您可以从hudson.model.CauseAction中查找userName
buildInfo = new groovy.json.JsonSlurper().parseText("${BUILD_URL}api/json".toURL().text)
for(element in buildInfo.actions) {
if(element._class == "hudson.model.CauseAction") {
println(element.causes[0].userName)
}
}