在http://[JENKINS_NAME]/job/[JOB_NAME]/[BUILD_NUMBER]/
下
我可以看到由用户[USER_NAME] 启动。
我想从我的java应用程序中获取该用户名。
非常感谢任何帮助。
答案 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