2015-10-19 132 views
1

我负责在我的公司实施CI。但是现在我怀疑了。 哪一个是最好的?jenkins的工作流程

我应该创建3个杰出的工作为每个系统/软件

  1. 构建和质量测试对测试enviromment
  2. 构建,质量测试和部署代码
  3. 构建,质量测试和部署生产

或者是更好地创造条件下游的工作,喜欢这里: How to conditionally build other projects?

干线总是会有生产中的最后一个版本。

对于每一项变更,开发人员都必须从主干复制到分支,处理代码然后调用jenkins在分支中运行以对变更进行认证。一旦认证完成并且没问题,开发人员会再次致电jenkins,从分支机构部署到生产。

正如@michaelbahr说[此帖被编辑]我只能得到一个神器库最后亿安科技的版本,但我怎么可以复制/合并从分支代码它得到后​​与詹金斯自动中继包装从认证(测试)环境,并将其转移到生产?

回答

1

正如你所说你负责实施CI,我认为你的公司没有很多CI的经验。因此,我建议两个分开的工作,而不是下游管道。

第一份工作应该通过提交后的钩子在代码库中发生变化时自动触发。它构建,测试和部署包到测试环境。它应该还将快照程序包部署到像Nexus这样的工件存储库

如果您对结果满意,则可以手动触发从工件存储库抓取程序包并将其部署到生产(并验证部署是否成功)的第二个作业。没有必要重新构建一个您已经确信的包。

+0

感谢迈克尔的回答,但是在这个模型中,一旦测试将来自分支,我怎么能够将生产中的代码放回到主干中? –

+0

你能否澄清这个问题?您提供完整且经过全面测试的套件进行生产。测试在测试/开发环境中运行,而不是在生产中运行。我认为没有必要把生产中的东西放回颠覆。 – michaelbahr

1

哪种方法最好取决于您的工程,测试和过程的质量。一种方法是在一份工作中完成所有三项工作(可根据需要将其他工作链接起来)。

例如:

使用MultiJob Plugin,并Validated Merge Plugin工作流程是这样的:

  1. 开发推代码JENKINS(GIT推),而不是SCM回购。
  2. Jenkins构建代码,运行单元测试并使结果在本地可用 - 或者在存储库中更好。
  3. 调用其他工作(按顺序)至 在集成环境中安装并运行构建的代码和集成测试。请注意,通过多作业插件,测试可以同时在多个环境中并行运行。所有经过验证的测试作业成功后,合并将更改接收到存储库中。 (如果失败,开发人员更改不会添加到存储库)。
  4. 另一个后续工作将取得成功的结果并部署到生产中。
  5. 集成清理作业可用于重置集成环境。

请注意,有一个单独的作业来部署到生产环境还允许在任何给定时间进行重新部署。如果认为可疑,生产部署也可以从自动化中分离出来。

最后,请注意,测试准确性或完整性水平不足会造成危险的不稳定系统!

+0

验证合并插件仅适用于CloudBees Jenkins。但是,感谢您的回答 –

+0

您可以通过在上面的步骤3中完成一项工作或脚本来实现类似(但更原始)的事情,这些工作或脚本合并并推向“真相源”回购。推动git可以通过webhook来处理,通过执行scm轮询来启动流程,或者更加原始。 –