代码之家  ›  专栏  ›  技术社区  ›  Ryan Rinaldi

应用程序生成/部署工作流

  •  18
  • Ryan Rinaldi  · 技术社区  · 16 年前

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

    例子:

    1. 构建完成
    2. 将生成部署到测试环境
    3. 测试已完成( 手动步进 )
    4. 如果测试通过,部署到UAT,否则拒绝构建
    5. UAT完成( 手动步进 )
    6. 如果UAT通过部署以生产其他产品,则拒绝构建
    7. 以前在Prod中注销生成

    有什么好的应用程序可以管理长时间运行的构建工作流吗?

    更新

    我还应该提到,我正在寻找真正实现工作流的工具,而不仅仅是跟踪它处于什么状态。(复制生成、更改生成状态、发送电子邮件、启动/停止服务等)

    8 回复  |  直到 14 年前
        1
  •  3
  •   Eldelshell    16 年前

    这个构建和发布系统是由不同的东西组成的,所以按照您的列表,我将作出响应:

    1. 构建完成(CruiseControl和Maven构建)
    2. 构建被部署到测试环境(Ant任务,从CruiseControl调用)
    3. 测试完成(手动步骤)(Maven告诉您)
    4. 如果测试通过,则部署到UAT,否则拒绝构建(如果测试失败,则Maven不会结束,不会调用Ant部署人员)

    从这里开始,我们几乎用Ant和Bash脚本的混合来完成它。

    1. UAT完成(手动步骤)
    2. 如果UAT通过部署以生成其他拒绝构建
    3. 以前在Prod中注销生成

    我们发现更困难的是重新启动我们的应用服务器,因为我们在热部署方面没有很好的经验,但只有Maven、Ant和Bash才可以实现。

        2
  •  2
  •   Gilbert Le Blanc    16 年前

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

    这是一个开源项目调度应用程序, Open Workbench 你可能会觉得有用。它有局限性,但我用它来管理我的日程安排。

        3
  •  2
  •   Dan    16 年前

    ThoughtWorks Go 看那部分。我们使用 Maven 目前,但仍处于其能力的分散化阶段。

        4
  •  2
  •   David T    16 年前

    我真的不明白为什么用蚂蚁不能做到这一点。( http://ant.apache.org )对于一些任务,每个步骤一个。由于这些事情的时间安排是手动的,并且每个环境一次只能有一个软件副本,所以似乎除了编写工作流并让人们完成它之外,没有什么事情可做。

        5
  •  2
  •   rasjani    16 年前

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

    问题是,每个阶段都可以写成任务,根据前一个案例的结果,可以一个接一个地执行任务。

    例如,我有一个CRUISECOTROL的设置,它与您在这里所描述的完全一样,测试阶段运行一组UNITTestC++/QT,而UAT是用可测试性驱动程序编写的。

        6
  •  2
  •   Matt Ryall    16 年前

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

    1. 使用适合您的平台的脚本语言(如Ant、Shell脚本、批处理文件)自动执行部署过程。其中包括您提到的任务:
      • 将二进制文件上载到目标服务器
      • 备份系统
      • 发送电子邮件提醒用户升级
      • 通过关闭系统、更改符号链接以指向新版本并重新启动来执行升级。
    2. 编写一些测试来验证软件是否在特定环境中工作。您需要能够在您的UAT和生产服务器上运行这些程序,以验证软件是否已部署并正确运行。

    一旦这些事情实现了自动化,您就可以使用持续集成服务器来计划这些任务或按需执行它们。我最熟悉 Bamboo (我为亚特兰蒂斯工作),但我确信 CruiseControl 和 Hudson 有相似的特点。以下是你用竹子做的方法:

    1. 为UAT部署创建一个新的构建计划,该计划执行部署脚本,然后执行测试
    2. 通过以下任一方式决定如何触发生成:
      • 将其添加为对主生成的依赖项,以便在成功的生成上自动运行
      • 让它按计划运行,这样就可以进行夜间部署。
      • 使其仅手动触发,在这种情况下,您只需在希望部署构建时运行它。
    3. 配置生成的权限,以便只有授权用户才能将版本部署到您的服务器。

    然后,您将执行相同的操作,并为生产部署设置一个构建,但可能只需要手动触发,并且具有更严格的权限。

        7
  •  1
  •   Ryan Berger    16 年前

    我使用了一个基于Web的开源工具 Hudson 一直都很满意。它非常擅长管理构建,并且与SVN和Ant具有出色的集成。唯一需要注意的是,您需要将它宿主在自己的服务器上。

        8
  •  0
  •   Tom Anderson    16 年前

    我们用的是一个叫阿利斯泰尔的威尔士老家伙。很有魅力。