如何在两个 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 版本代码
如何在 Jenkins 中触发构建在其他构建成功但在 Bamboo 中运行之后