簡體   English   中英

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鏈接。 請單擊它以查看其余的api網址以及該網址的輸出。

您可以從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插件或Env Inject插件。 如關於這個問題的答案。 計時器觸發作業時如何在Jenkins中獲取BUILD_USER

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM