我的任务是重建我的DevOps管道,我需要一些帮助。



我们将在BitBucket中保存我们的代码,并使某些内容触发服务器启动并验证我们的PR。我目前尚不完全了解如何执行此操作,但是它是一种非常常见的模式,因此应该不会太糟。我们将运行单元测试,进行一些静态代码分析(测试范围,复杂性,代码质量等)。

接下来,我们将有一个Jenkins工作监控大师。它将再次运行单元测试套件(我认为这是必要的,因为在合并PR时,我们可能会引入一些错误)。接下来,它将构建位并将其推送到工件存储库。然后,这将启动暂存测试作业。

登台测试作业将获取上一个作业所构建的位,或允许任何用户使用有效的登台工件启动它。它将部署到暂存环境,然后在此处运行自动化测试。如果他们通过,它将以某种方式将该工件标记为可接受。这是我的第一个大问题,在已编译的工件之间移动存储库以使团队知道何时已通过某些质量阈值是否常见?

接下来,我们将开展一项工作,允许任何人拿取通过自动测试的工件,并将其部署到某些UAT环境中,在此他们可以根据需要进行任何手动测试或演示。我的最大问题是,如何才能将该工件标记为通过/失败?

最后,我们有一项工作可以将通过手动测试的工件推向生产。我的想法是,这将使我们能够将任何可以接受的东西推送给客户,并且如果我们正确构建它,将使我们回滚。

总结我的问题:


我们如何以自动化的方式标记已通过管道某些阶段的工件?
我们如何以人工方式将工件标记为已通过最后阶段?
这是否缺少主要内容,或者您​​遇到过类似模式的问题?


评论

仍然会喜欢一些输入,但是据推测在不同回购之间促进伪像是一种反模式。标记工件已通过某些质量门的首选方法是编辑元数据。据推测,如果它无法通过质量门,则可以在某个时候将其删除(尽管将其保留一点时间进行调试可能很有用)。我认为Humble和Farley的书中有这样的信息。

#1 楼

这取决于您使用的工件存储库,但是通常,您在存储库中标记工件以指示其状态。这可以指定它已经通过了某种程度的质量控制,某种认可或通过了各个阶段所需的一切。

我想说的是标记工件的状态,而不是在工件存储库之间移动。单个工件存储库可用于将工件保存为多个版本和多个状态。这提供了一个审计点和一种控制部署的单一方法,这可能会很有帮助。

通过标记工件,您可以清楚工件是否已准备好部署,以及是否可以部署到哪些环境。可以以多种方式更新标签,但是我建议使用自动化流程,例如在部署工件时,会对工件进行标记。当它通过一组测试时,结尾将工件标记为就绪。如果您进行了手动测试,则该测试将在某些工具或仪表板或批准过程中进行跟踪,当批准后,该过程应将工件标记为可以继续进行。

#2 楼

我认为考虑流水线的方法是拥有一个自动化系统,该系统具有决策点-门-需要人工批准。您的管道可能具有一个或多个这些门。应该有一些人在监视着大门,例如等待新构建的质量检查人员,由发布管理人员来决定是否进行部署。我们是一家Atlassian商店,打算在这些登机口使用带有某些特殊软件的JIRA门票。通常,我们在JIRA票证中记录我们的DevOps工作。还有许多其他方法可以执行相同的操作,您可以使用GitHub,Jenkins,CircleCI或Google文档等。