如何让Jenkins登录用户

时间:2015-10-23 04:23:51

标签: jenkins

我要求将登录的用户ID信息导入Jenkins插件。

我创建了HelloWorldclass,它扩展了hudson.tasks.Builder类来创建插件。从这个类,我试图让登录用户使用perform方法。

我尝试了各种选项但无法获得登录用户,每个选项都将SYSTEM作为用户ID返回。

User.current(): - 在Jenkins控制台上返回SYSTEM,但是在jenkins脚本控制台上给出了完美的结果,但是相同的代码没有我记录用户信息。

然而,当我在四处寻找时,我可以看到用户ID始终显示在用户界面的右上角,因为它是我想要的信息而嘲弄我,但似乎不可用。

任何人都可以帮忙解决这个问题。

3 个答案:

答案 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)
    }
}
相关问题