我负责在公司实施CI。但现在我怀疑了。 哪一个最好?
我应该为每个系统/软件创建3个杰出作业
或者更好地创建下游条件作业,例如: How to conditionally build other projects?
主干始终将生产最后一个版本。
对于每个更改,开发人员必须从主干到分支进行复制,处理代码然后调用jenkins在分支中运行以对更改进行同步。一旦认证完成并且没关系,开发人员将再次调用jenkins将该代码从分支部署到生产。
正如@michaelbahr所说 [这篇文章已编辑] 我可以从工件库中获取最后一个认证版本,但是如何从中复制/合并代码在从认证(测试)环境中获取包并将其移至生产后,使用jenkins自动分支到主干?
答案 0 :(得分:1)
正如您所说,您负责实施CI,我认为您的公司没有很多CI经验。因此,我建议使用两个单独的作业而不是下游管道。
第一个作业应该通过post-commit钩子在代码库中发生更改时自动触发。它将包构建,测试和部署到测试环境。它应还将快照包部署到工件存储库,如Nexus。
如果您对结果感到满意,则可以手动触发从工件存储库中获取包的第二个作业,并将其部署到生产中(并验证部署是否成功)。没有必要再次建立一个你已经有信心的包。
答案 1 :(得分:1)
哪种方法最好取决于您的工程,测试和流程的质量。一种方法 - 将所有三项工作放在一起(可根据需要将其他工作联系起来)。
例如:
使用MultiJob Plugin和Validated Merge Plugin工作流程如下:
请注意,使用单独的作业进行生产部署还允许在任何给定时间重新部署。如果认为可疑,生产部署也可以从自动化中切断。
最后,请注意,测试准确性或完整性水平不足会导致系统危险不稳定!