仅在构建失败时执行Final脚本

时间:2014-10-29 15:58:51

标签: bamboo

我想执行一个任意的shell脚本,但我只希望它在构建失败时运行。有没有办法:

  • 将Bamboo设置为仅在构建失败时运行此脚本
  • 或者从脚本中检查构建是否成功。也许是环境/构建变量?

赞赏的想法和想法!

2 个答案:

答案 0 :(得分:4)

不幸的是,竹子缺乏一种触发失败的方法。您无法启动其他计划,其他阶段等 - 您只能发送基本通知。

作为一些解决方法,您可以将所有作业移动到一个阶段,并将脚本放在最终部分中。您可以将${bamboo.buildNumber}传递给您的脚本,并根据来自https://user:password@yourproject.atlassian.net/builds/rest/api/latest/result/PROJECT/BUILD_NUMBER.json?expand=stages.stage.results的数字请求状态数据 - 然后您只需要解析json并从json['stages']['stage'][0]['state']获取构建状态

答案 1 :(得分:0)

我对这个问题的解决方案比较基本,它包含3个自定义任务:

    任务列表末尾的
  • 一个用于创建状态文件的名称,名称是任意的但一致的,例如build.success
  • 任务列表开头的一个删除状态文件(以防未启用workdir目录清除的情况)
  • 最终任务列表开头的一个任务,它检查build.success文件是否存在并采取相应的行动

我上面的用例是将通知发送到Bamboo插件(RocketChat)不支持的IM系统。当前限制:

  • 未检测到在第一个任务之后(消耗build.success文件)运行的最终任务并且失败了
  • 未检测到停止的运行:始终执行最终任务
  • 如果存在多个阶段,例如
  • 复杂逻辑我在构建开始时添加了一个额外的初始阶段来发送通知,在结束时添加了一个额外的阶段来发送“成功构建”通知

可笑的是,CI / CD系统无法实现某种环境变量,例如“ bamboo.build.result”。