1

直升机,

我正在使用 Bamboo 部署由 git repo push 触发的 Java webapp 项目。我的要求是根据条件部署,

  1. “分支被推”和
  2. “新提交被标记为某个值”

是否可以使用现有插件完成?如果我必须手动实现它,有可能吗?如何?

4

1 回答 1

3

使用最新的 Atlassian Bamboo 主要版本(第 5 版,请参阅https://www.atlassian.com/software/bamboo/deploy)可能有更简单、更直接的方法。我当然会接受围绕这些类型的功能的一些额外的自动化/部署工作流,但我实现了类似于您在没有插件的情况下所要求的东西,并且已经非常成功地使用了八个月。

以下是它的工作原理:

  1. 我们合并到一个testing分支,该分支执行一套单元、集成、功能和工作流测试,并构建各种文档。这就像你的 (1): "branch is push"
  2. 我们运行第二个手动计划,该计划提取最新的testing分支,对其进行标记,然后推送标记。
  3. 我们的第三步是运行一个部署最新标签的部署计划。

我认为步骤(1)(3)在应用程序之间会有很大差异。但是,步骤(2)可能会遇到您想要的东西。以下是有关该计划及其相关任务的详细信息:

  1. 签出testing分支,启用强制清理构建
  2. 使用内联脚本添加远程存储库。例如,一个 GitHub 示例:
    1. git remote add origin git@github.com:/repo.git || exit 0
  3. 使用git带参数的可执行文件pull origin testing来确保我们与上游存储库一致
  4. 使用git带参数的可执行文件fetch --all --tags从所有存储库中获取最新标签
  5. 使用bash带有自定义脚本的可执行文件将我们的代码库版本更改为标签的名称。
  6. 使用git带参数的可执行文件push origin --tags来推送在上一步中创建的标签。

(5)中提到的自定义脚本如下所示:

    scripts/version.sh ${DATE}
    git commit -m "bumped version"
    git tag -af "${DATE}" -m "Build server tagged ${DATE}"

为了完整起见,我|| exit 1在脚本中的任何地方都使用以确保它们快速失败,但为了简洁起见,将它们省略了。

tl; dr据我所知,没有插件支持您的要求。有可能的。方式会因您而异,希望我所阐述的内容表明了这一点。

于 2013-08-12T16:28:04.290 回答