代码之家  ›  专栏  ›  技术社区  ›  George Cimpoies

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

  •  4
  • George Cimpoies  · 技术社区  · 8 年前

    在下面 http://[JENKINS_NAME]/job/[JOB_NAME]/[BUILD_NUMBER]/

    我看得出来 由用户[user\u NAME]启动 。

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

    非常感谢您的帮助。

    2 回复  |  直到 8 年前
        1
  •  1
  •   SV Madhava Reddy    8 年前

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

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

    在rest调用之后,您将得到这个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 链接请单击它以查看rest api url及其url输出。

        2
  •  0
  •   Laksitha Ranasingha    8 年前

    您可以从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参数传递。例如: sh 'java -jar -DbuildUser=$BUILD_USER <your_java_app>.jar' 并在应用程序中获取buildUser系统属性。

    在较早版本的Jenkins上,可以使用Build User Vars插件或Env Inject插件。就像这个问题的答案一样。 how to get the BUILD_USER in Jenkins when job triggered by timer