我是否可以以任何传统的文件格式导出构建的历史记录,以及它们的时间/日期和成功。甚至晋升的地位。
发布于 2018-10-18 01:19:46
Parvez关于使用REST的建议非常好。
但是,如果REST不直接提供您想要的数据,那么使用它是很尴尬的,这会导致REST的复杂和多次调用。这是缓慢的,它使您依赖于该API的稳定性。
除了最基本的查询之外,我通常更喜欢运行一个小型groovy脚本,从Jenkins的内部结构中提取所需的数据。这样做速度更快,而且使用起来也更简单。下面是一个小脚本,它将获取您要查找的数据:
import jenkins.model.*
import hudson.plugins.promoted_builds.*
import groovy.json.JsonOutput
def job = Jenkins.instance.getItemByFullName( 'TESTJOB' )
def buildInfos = []
for ( build in job.getBuilds() ) {
def promotionList = []
for ( promotion in build.getAction(PromotedBuildAction.class).getPromotions() ) {
promotionList += promotion.getName()
}
buildInfos += [
result : build.getResult().toString(),
number : build.getNumber(),
time : build.getTime().toString(),
promotions: promotionList
]
}
println( JsonOutput.toJson( buildInfos ) )
脚本将生成JSON格式的结果,如下所示(修饰):
[
{
"number": 2,
"promotions": [
"promotionA"
],
"result": "SUCCESS",
"time": "Thu Oct 18 11:50:37 EEST 2018"
},
{
"number": 1,
"promotions": [],
"result": "SUCCESS",
"time": "Thu Oct 18 11:50:34 EEST 2018"
}
]
您可以通过Jenkins“脚本控制台”GUI或者通过REST运行groovy脚本(sic)来运行这样的脚本。还有一个CLI接口命令来执行这个操作。
发布于 2018-10-17 22:55:35
您可以使用Jenkins rest:
http://JENKINS_URl/api/json?tree=jobs[name,url]
这将给出json与所有作业名称和作业url的响应。http://JENKINS_URL/job/JOB_NAME/api/json?tree=allBuilds[number,url]
这将给出作业JOB_NAME的所有构建,并返回带有生成号和build的json响应。http://JENKINS_URL/job/JOB_NAME/BUILD_NUMBER/api/json
这将提供与构建相关的所有东西作为json响应。比如生成状态,生成是如何触发的,时间等等。对于自动化,您可以使用bash、curl和jq来实现这一点。
编写了小型bash脚本来检索Jenkins服务器上每个作业的构建状态和时间戳:
#!/bin/bash
JENKINS_URL=<YOUR JENKINS URL HERE>
for job in `curl -sg "$JENKINS_URL/api/json?tree=jobs[name,url]" | jq '.jobs[].name' -r`;
do
echo "Job Name : $job"
echo -e "Build Number\tBuild Status\tTimestamp"
for build in `curl -sg "$JENKINS_URL/job/$job/api/json?tree=allBuilds[number]" | jq '.allBuilds[].number' -r`;
do
curl -sg "$JENKINS_URL/job/$job/$build/api/json" | jq '(.number|tostring) + "\t\t" + .result + "\t\t" + (.timestamp|tostring)' -r
done
echo "================"
done
注意:上面的脚本假设Jenkins服务器没有任何身份验证。为了进行身份验证,在每个curl调用中添加以下参数:
-u username:API_TOKEN
其中:
username:API_TOKEN with your username and password/API_Token
类似的方式,您可以导出所有的构建历史记录,以任何格式,你想。
https://stackoverflow.com/questions/52866480
复制相似问题