如何在两个 Bamboo 构建之间获取 git 提交注释

Posted

技术标签:

【中文标题】如何在两个 Bamboo 构建之间获取 git 提交注释【英文标题】:How to get git commit notes between two Bamboo build 【发布时间】:2017-02-06 12:51:32 【问题描述】:

我正在尝试使用Bamboo 为基于 Gradle 的 android 项目设置 CI。教程here 工作非常适合成功构建。

对于下面的发行说明,我想在两个修订号之间获取 Git 日志。

git log $bamboo.repository.previous.revision.number..$bamboo.repository.revision.number

但是如何获得最后一次成功的构建 git_revision 编号和当前版本。 有什么建议吗?

【问题讨论】:

【参考方案1】:

这涉及编写和使用 Bamboo https://docs.atlassian.com/bamboo/REST 的 REST API [选择您正在使用的版本]

要获取所有构建结果,您需要调用:

[GET] <basepath>/rest/api/latest/result/projectKey-buildKey

其中,基本路径是 http://myhost.com:8085 或 http://myhost.com:8085/bamboo 结果如下:


"results": 
"size": 8,
"expand": "result",
"start-index": 0,
"max-result": 25,
"result": [
  
    "link": 
      "href": "<basepath>/rest/api/latest/result/projectKey-buildKey-buildNumber",
      "rel": "self"
    ,
    "plan": 
      "shortName": "xyz",
      "shortKey": "buildKey",
      "type": "chain",
      "enabled": true,
      "link": 
        "href": "<basepath>/rest/api/latest/plan/DS-ASVCCRED",
        "rel": "self"
      ,
      "key": "projectKey-buildKey",
      "name": "ABCD",
      "planKey": 
        "key": "projectKey-buildKey"
      
    ,
    "buildResultKey": "projectKey-buildKey-buildNumber",
    "lifeCycleState": "Finished",
    "id": 198039818,
    "key": "projectKey-buildKey-buildNumber",
    "planResultKey": 
      "key": "projectKey-buildKey-buildNumber",
      "entityKey": 
        "key": "projectKey-buildKey"
      ,
      "resultNumber": 45
    ,
    "state": "Failed",
    "buildState": "Failed",
    "number": 45,
    "buildNumber": 45
  ,

如果需要 JSON 输出,只需在调用时添加 Accept=application/json 标头即可。

这将按顺序返回最新的 25 个构建结果,最新的结果是第一个。您可以查看这些结果并决定您对哪两个构建结果感兴趣。

一旦您做出决定,您就可以进行额外的调用以获取竹子为该特定构建捕获的更改集(提交详细信息)。

[GET] <basepath>/rest/api/latest/result/projectKey-buildKey/buildNumber : ([0-9]+)|(latest)?expand=changes

这将为您提供如下详细的提交描述:

"changes": 
 "size": 3,
 "expand": "change",
 "change": [
  
    "author": "1234",
    "changesetId": "7f76c41a7ff48f679a91d0fa2810ef3398121dc6"
  ,
  
    "author": "abcd",
    "changesetId": "104d8b7af9538599a02006005314033c8017e804"
  ,
  
    "author": "cdef",
    "changesetId": "d21aef9f3745257aa501425fc31ebd0c6b33f608"
  
 ],
 "start-index": 0,
 "max-result": 3
,

然后你就可以执行了

git log <changesetId>...<changesetId>

【讨论】:

以上是关于如何在两个 Bamboo 构建之间获取 git 提交注释的主要内容,如果未能解决你的问题,请参考以下文章

如何在构建服务器和工作站之间同步 Gradle/Android 版本代码

如何在 Bamboo 中重命名 ZIP

如何在 Jenkins 中触发构建在其他构建成功但在 Bamboo 中运行之后

配置 Bamboo 以使用 MS Build Xaml 模板

从 Bamboo 中的单独 GIT 存储库中提取文件

Bamboo Atlassian:如何在阶段之间共享变量