Jenkins Java: 获取开始构建的用户

Jenkins Java: Get user who started the build

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

之下

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

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

非常感谢任何帮助。

您可以进行 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 link。请单击它以查看其余 api url 及其 url.

的输出

您可以从 Jenkins 环境中获取构建用户(即作为环境变量)。如果您使用 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 插件。就像这个问题的答案一样。