持续集成和预集成

时间:2011-04-05 18:01:36

标签: workflow continuous-integration cruisecontrol.net build-automation nant

我发布了一个部分问题,部分漫无边际,希望它会产生讨论并回答我的问题,如果我是诚实的话,这更多是一系列要求。

在我的工作场所,构建是非常劳动密集型的。这是因为我们的团队非常小,并且怀疑自动化将不可避免地出错,因为我们没有团队的专业知识来正确地完成它。我认为这是一个合理但有缺陷的论点。我确实有一位中层经理,他似乎喜欢自动化的概念,并且非常成功地使用了许多小型自动化功能。

我的目标是将一种自动构建环境与我们的发布系统结合起来,这需要管理人员制作各种文档。这是TickIT认证的要求,不适用于谈判。我想象的是生成一个(Windows)工作流 - 我们已经为其设置了IT基础架构,并且在整个公司范围内都很熟悉 - 它会提示管理员提供必须提交的文档,以便进行构建和发布。我们不是一家软件公司,我们是一家销售软件的公司,所以这些功能需要非技术性的。

总而言之,我们的用例看起来像:

  • 管理员审核任务跟踪器并根据当前状态授权发布
  • 工作流启动,缓存了当前的SVN修订版
  • 项目经理的工作流程要求需要在安装包中内置许多pdf文档等
  • 工作流会在集成管理器(例如CruiseControl)上的先前缓存的SVN修订版上触发构建过程(我在此包括持续集成所做的一切,包括单元测试)
  • 已完成的安装包会自动安装在各种虚拟机(完整的受支持操作系统和语言集)上,并可供QA使用
  • 从QA完全签收后,安装包将发布到网络

当然,由于什么都没有正常工作,应该包括“打破”工作流程并随时手动进行的能力,因为我们不希望由一台无法完成其工作的愚蠢机器所释放。一点常识也可以做到。

是否有人可以将任何可以视为此类流程的案例研究,或者对其可能有多么直接或具有挑战性的任何评论,甚至是否适当?

3 个答案:

答案 0 :(得分:2)

我们最近为一位客户解决了这个问题。我们的实现涉及以下组件(但您可以根据您的组织使用不同的工具实现相同的目标)。

  • JIRA工作流程 - 协调流程(并捕获绩效指标)管理审批并跟踪审计历史记录
  • JIRA插件 - 通过CI服务器(Hudson \ Jenkins)触发构建\部署\测试。监听器:响应来自Hudson \ Jenkins的状态更新
  • Jenkins插件 - 与JIRA互动
  • build-pipeline-plugin - 管理Jenkins工作流程
  • 部署脚本 - 由Jenkins \ Groovy编排

这听起来很复杂,但很多这些工具都有很好的API可供使用,因此您可以在合理的时间范围内一起获得稳定的解决方案。

干杯,

杰夫

答案 1 :(得分:0)

对此做了一些研究后,我花了最近几天玩CruiseControl.NET。由于其可扩展性,看起来它可能可以完成我正在寻找的一切。在构建结束时触发另一个插件并执行所有部署和签名没有任何障碍。有些要求很复杂,但需要花费不确定的时间,所以我认为像WWF这样的某种状态持久性很有价值。我将不得不进行实验并与同事一起提出。

答案 2 :(得分:0)

考虑CloudMunch。 CloudMunch提供了一个构建引擎(基于Jenkins),在其上构建了进程工作流,以便在其上部管理手动工作流,并提供干净的RBAC支持来管理您正在查看的内容。

免责声明:我在CloudMunch工作。