基于Atlassian Bamboo中的git标签的条件自动部署

时间:2013-06-17 04:02:34

标签: continuous-integration bamboo

Helo,

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

  1. “分支被推”和
  2. “新提交被标记为某个值”
  3. 是否可以使用现有插件完成?如果我必须手动实现它,是否可能?怎么样?

1 个答案:

答案 0 :(得分:3)

使用最新的Atlassian Bamboo主要版本(版本5,请参阅https://www.atlassian.com/software/bamboo/deploy),可能有简单而直接的方法。我肯定会围绕这些类型的功能采用一些额外的自动化/部署工作流程,但是我实现了类似于你没有插件所要求的东西,并且已经成功使用了八个月。

以下是它的工作原理:

  1. 我们合并到testing分支,该分支执行一系列单元,集成,功能和工作流测试,并构建各种文档。这就像你的(1):“分支被推”
  2. 我们运行第二个手动计划,该计划会提取最新的testing分支,对其进行标记并推送标记。
  3. 我们的第三步是运行部署最新标记的部署计划。
  4. 我认为步骤(1)(3)会因应用程序而异。然而,步骤(2)可能会影响你所追求的目标。以下是有关该计划及其相关任务的详细信息:

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

      bash

      为了完整起见,我在脚本中的任何地方使用git来确保它们快速失败,但为了简洁而将它们留下来。

      tl; dr 根据我的知识,没有任何插件支持您所要求的内容。有可能的。 如何会因你而异,希望我提出的内容会显示出来。