[英]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.