2010-06-22 123 views
18

您在构建完成后如何管理部署应用程序的工作流程?我不是在谈论在服务器上获取文件的行为,而是在谈论之后发生的事情。检验,测试,认证,迁移到生产,退休的老版本,等应用程序构建/部署工作流程

例子:

  1. 构建完成
  2. 构建被部署到测试环境
  3. 测试完毕(手动步骤
  4. 如果测试通过部署到UAT否则拒绝构建
  5. U AT完成(手动工序
  6. 如果UAT通过部署到其他正式版拒绝建立
  7. 以前在PROD

任何一个优秀的应用程序在那里退休构建可管理长时间运行的构建工作流?

更新

我还要提到的是我在寻找真正实现了工作流程的工具,而不只是跟踪它在什么状态。(复制建造,变化生成状态,发送电子邮件,开始/停止服务等)

+0

如果您可以添加某种您正在开发的环境类型,建议适当的解决方案会更容易。 – rasjani 2010-08-21 19:19:59

回答

3

此构建和发布系统是不同的东西混合,所以下面的列表,我会回答:

  1. 构建完成(CruiseControl的使用Maven构建)
  2. 构建被部署到测试环境( Ant任务,从CruiseControl调用)
  3. 测试完成(手动步骤)(Maven告诉你这个)
  4. 如果测试通过部署到UAT否则拒绝构建(如果测试失败,Maven将不会结束,蚂蚁部署者)

从这里开始,我们它几乎与蚂蚁和bash脚本的混合物

  • UAT完成(手动步骤)
  • 如果UAT通过部署到督促别人拒绝建立
  • 以前在PROD
  • 我们发现更难的事情是因为我们还没有与热部署好经验重新启动我们的应用服务器构建退休,但它是可行的,只有行家,蚂蚁和庆典。

    +1

    当赏金还活跃时,不接受这个道歉。我忙着结婚,忘记了我的问题。希望你能理解。 – 2010-08-25 18:32:08

    +0

    没问题,从此过上幸福快乐的生活。 – Eldelshell 2010-08-28 21:05:37

    2

    许多公司使用项目调度应用程序,如MS Project。

    下面是一个开源项目调度应用程序Open Workbench,您可能会发现它很有用。它有局限性,但我用它来管理我的日程安排。

    2

    ThoughtWorks Go看起来部分。目前我们使用Maven,但仍然处于能力的限制之下。

    +0

    我看着Cruise(Go的名字在版本2之前),虽然它看起来不错,但我们无法使用它,因为它不适用于TFS。我前几天下载并安装了Go,但服务无法启动,因此我无法进一步评估它。 – 2010-08-18 13:24:29

    2

    我真的不明白为什么不能用Ant(http://ant.apache.org)完成一些任务,每步一个。由于这些事情的时间是手动的,每个环境一次只能有一个软件副本,似乎没有太多的工作要做,只需对工作流进行编码并让人们知道。

    2

    如果您设法自动化您的测试(并取决于您做什么类型的软件,没有理由不),您应该可以使用任何持续集成软件。

    事情是,每个阶段都可以写成可以依次执行的任务,具体取决于前一个案例的结果。

    例如,我有一个CruiseControl的设置,完全按照您在这里描述的内容进行,测试阶段运行一堆unittests(C++/qt),而uat的东西是用可测试性驱动程序编写的。

    1

    我已经使用了一个名为Hudson的基于网络的开源工具,并且对它非常满意。它非常善于管理构建,并且与SVN和ant有很好的集成。唯一需要注意的是,您需要将其托管在您自己的服务器上。

    +0

    我们使用哈德森为此。我们运行每晚和每周的构建,并构建到QA并手动接受触发。手动构建来自CVS标记,因此人员可以轻松管理高级工作流程:构建到QA,如果成功告诉QA团队,请等待QA团队回复,如果通过构建接受,如果成功地告诉UAT团队,等待从UAT团队收到回复,如果通过,告诉操作人员建立生产(手动触发,但使用与哈德森运行相同的脚本)。我们不会自动化工作流程,而且我看不到这样做的好处(对我们而言)。 – 2010-08-24 22:49:00

    2

    据我所知,没有一个系统会自动完成你提到的所有任务。您需要编写一些脚本和测试来自动化系统的部署和测试。然后你可以使用CI服务器把它放在一起。以下是我的建议:

    1. 使用适合您的平台的脚本语言(例如Ant,shell脚本,批处理文件)使您的部署过程自动化。这包括你提到的任务:
      • 上传二进制到目标服务器
      • 采取系统
      • 的备份发送电子邮件,以提醒用户升级
      • 被打倒在执行升级系统,更改符号链接以指向新版本,然后重新启动它。
    2. 编写一些可以验证软件在特定环境中工作的测试。您需要能够针对您的UAT和生产服务器运行这些服务器,以验证该软件是否已部署且运行正常。

    将这些事情自动化后,您可以使用持续集成服务器来安排这些任务或根据需要执行这些任务。我最熟悉Bamboo(我为Atlassian工作),但我确定CruiseControlHudson有类似的功能。这里是你会怎么做,在竹:

    1. 您UAT部署,它执行部署脚本,然后测试
    2. 确定如何通过任一触发构建,创建一个新的建设计划:
      • 将它作为你的主构建的依赖,使得它在成功打造自动运行
      • 使其按计划运行,让您得到夜间部署
      • 使其只能手动触发,其中你的理由当你想要部署时运行构建。
    3. 配置构建权限,以便只有授权用户才能将版本部署到您的服务器。

    然后,您会执行相同的步骤,为您的生产部署设置构建,但可能只需手动触发并具有更多限制性权限。

    0

    我们使用这个老威尔士人称为阿利斯泰尔。奇迹般有效。