应用构建/部署工作流程

时间:2010-06-22 19:49:59

标签: build-process workflow release-management

在构建完成后,您使用什么来管理部署应用程序的工作流程?我不是在谈论在服务器上获取文件的行为,我在谈论之后会发生什么。验证,测试,批准,迁移到生产,淘汰旧版本等等。

示例:

  1. 构建完成
  2. 构建部署到测试环境
  3. 测试完成(手动步骤
  4. 如果测试通过部署到UAT,则拒绝构建
  5. UAT已完成(手动步骤
  6. 如果UAT将部署传递给Prod,则拒绝构建
  7. 以前在Prod
  8. 中退役

    那里有哪些好的应用程序可以管理长时间运行的构建工作流程?

    更新

    我还应该提一下,我正在寻找实际实现工作流程的工具,而不仅仅是跟踪它所处的状态。(复制构建,更改构建状态,发送电子邮件,启动/停止服务等)

8 个答案:

答案 0 :(得分:3)

这个构建和发布系统是不同东西的混合,所以在你的列表后我会回复:

  1. 构建完成(使用Maven Build的CruiseControl)
  2. 构建部署到测试环境(Ant任务,从CruiseControl调用)
  3. 测试完成(手动步骤)(Maven告诉你)
  4. 如果测试通过部署到UAT,则拒绝构建(如果测试失败,Maven将不会结束,不会调用ant部署者)
  5. 从现在开始,我们通过混合使用ant和bash脚本来完成它

    1. UAT已完成(手动步骤)
    2. 如果UAT将部署传递给Prod,则拒绝构建
    3. 以前在Prod
    4. 中退役

      我们发现更难的事情是重启我们的应用程序服务器,因为我们没有热门部署的良好经验,但只有maven,ant和bash才能实现。

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

ThoughtWorks Go看起来很重要。我们目前使用Maven,但仍处于其功能的分支。

答案 3 :(得分:2)

我真的不明白为什么不能使用Ant(http://ant.apache.org)执行某些任务,每步一个。由于这些东西的时间是手动的,并且每个环境一次只能有一个软件副本,所以似乎没什么可做的,只是编写工作流程并让人们参与其中。

答案 4 :(得分:2)

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

问题是,每个阶段都可以写下来作为可以一个接一个地执行的任务,具体取决于之前案例的结果。

例如,我有一个CruiseControl的设置,它完全按照你在这里描述的那样,测试阶段运行了一堆单元测试(c ++ / qt),而uat的东西是用可测试性驱动程序编写的。

答案 5 :(得分:2)

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

  1. 使用适合您平台的脚本语言(例如Ant,shell脚本,批处理文件)自动执行部署过程。这包括你提到的任务:
    • 将二进制文件上载到目标服务器
    • 备份系统
    • 发送电子邮件以提醒用户升级
    • 通过关闭系统,更改符号链接以指向新版本并再次启动来执行升级。
  2. 编写一些可以验证软件是否在特定环境中运行的测试。您需要能够针对您的UAT和生产服务器运行这些操作,以验证该软件是否已部署且运行正常。
  3. 一旦您将这些内容自动化,您就可以使用持续集成服务器来安排这些任务或按需执行这些任务。我最熟悉Bamboo(我为Atlassian工作),但我确信CruiseControlHudson具有相似的功能。这是你在Bamboo中的表现:

    1. 为您的UAT部署创建一个新的构建计划,该计划执行您的部署脚本,然后执行测试
    2. 通过以下任一方式决定如何触发构建:
      • 将其添加为主构建的依赖项,以便在成功构建时自动运行
      • 使其按计划运行,以便每晚进行部署
      • 只能手动触发,在这种情况下,只需要在部署时运行构建。
    3. 配置构建的权限,以便只有授权用户才能将版本部署到您的服务器。
    4. 然后,您可以执行相同操作并为生产部署设置构建,但可能只需手动触发并具有更多限制权限。

答案 6 :(得分:1)

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

答案 7 :(得分:0)

我们使用这个名叫Alistair的威尔士老人。像魅力一样。