首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >詹金斯工作的出口建设历史

詹金斯工作的出口建设历史
EN

Stack Overflow用户
提问于 2018-10-18 03:15:31
回答 2查看 9.8K关注 0票数 5

我是否可以以任何传统的文件格式导出构建的历史记录,以及它们的时间/日期和成功。甚至晋升的地位。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-18 09:19:46

Parvez关于使用REST的建议非常好。

但是,如果REST不直接提供您想要的数据,那么使用它是很尴尬的,这会导致REST的复杂和多次调用。这是缓慢的,它使您依赖于该API的稳定性。

除了最基本的查询之外,我通常更喜欢运行一个小型groovy脚本,从Jenkins的内部结构中提取所需的数据。这样做速度更快,而且使用起来也更简单。下面是一个小脚本,它将获取您要查找的数据:

代码语言:javascript
代码运行次数:0
运行
复制
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格式的结果,如下所示(修饰):

代码语言:javascript
代码运行次数:0
运行
复制
[
    {
        "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接口命令来执行这个操作。

票数 8
EN

Stack Overflow用户

发布于 2018-10-18 06:55:35

您可以使用Jenkins rest:

  1. 从:遍历Jenkins服务器上的所有作业开始,使用: http://JENKINS_URl/api/json?tree=jobs[name,url] 这将给出json与所有作业名称和作业url的响应。
  2. 然后,对于每个作业访问,其构建使用api: http://JENKINS_URL/job/JOB_NAME/api/json?tree=allBuilds[number,url] 这将给出作业JOB_NAME的所有构建,并返回带有生成号和build的json响应。
  3. 现在,使用api遍历每个构建: http://JENKINS_URL/job/JOB_NAME/BUILD_NUMBER/api/json 这将提供与构建相关的所有东西作为json响应。比如生成状态,生成是如何触发的,时间等等。

对于自动化,您可以使用bash、curl和jq来实现这一点。

编写了小型bash脚本来检索Jenkins服务器上每个作业的构建状态和时间戳:

代码语言:javascript
代码运行次数:0
运行
复制
#!/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

类似的方式,您可以导出所有的构建历史记录,以任何格式,你想。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52866480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档