Jenkins Java:获得启动构建的用户

时间:2018-03-29 10:09:59

标签: java jenkins jenkins-plugins

http://[JENKINS_NAME]/job/[JOB_NAME]/[BUILD_NUMBER]/

我可以看到由用户[USER_NAME] 启动。

我想从我的java应用程序中获取该用户名。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您可以进行http调用以获取所有这些详细信息。获取这些详细信息的URL是:

http://<Jenkins URL>/job/<job name>/<build number>/api/json

休息之后,你会得到这个json。

{
"_class": "hudson.model.FreeStyleBuild",
"actions": [
    {
        "_class": "hudson.model.CauseAction",
        "causes": [
            {
                "_class": "hudson.model.Cause$UserIdCause",
                "shortDescription": "Started by user XXXXXX",
                "userId": "xxx@yyy.com",
                "userName": "ZZZZZZZZ"
            }
        ]
    },
    {},
    {
        "_class": "jenkins.metrics.impl.TimeInQueueAction"
    },
    {},
    {}
],
...
}

所以你所做的就是解析这个json并获得javavar['actions'][0]['causes'][0]['userName']下的值。绝对只会那样。我可能不确定索引。你只是想弄清楚。希望这会有所帮助。

主要针对jenkins实例中的每个页面,您将获得REST API链接。请点击它以查看该网址的其余api url及其输出。

答案 1 :(得分:0)

您可以从Jenkins环境中获取构建用户(即作为env var)。如果您使用Jenkins 2管道,例如: 管道{

 //rest of the pipeline
 stages {
   stage('Build Info') {
     steps {
       wrap([$class: 'BuildUser']) {
        sh 'java -jar <your_java_app>.jar'
       }
     } 
   }
 }

在您的Java应用程序中,您应该能够使用System.getenv("BUILD_USER")获取环境变量,否则您可以将其作为JVM arg传递。例如:sh 'java -jar -DbuildUser=$BUILD_USER <your_java_app>.jar'并在应用程序中获取buildUser系统属性。

在旧版Jenkins上,您可以使用Build User Vars Plugin或Env Inject插件。正如在这个问题的答案。 how to get the BUILD_USER in Jenkins when job triggered by timer