当使用Jenkins在远程位置触发某个过程(例如,远程构建)时,为什么您要“触发”某些东西,然后仅“忘记”远程触发的结果?至少这就是“一劳永逸”的含义。

这样的“一劳永逸”听起来就像不尊重IT中的一些基本规则:在任何过程(或程序等)中在编写时,请尽量为可能发生的意外情况(返回码等)做好准备。这样一来,您就可以进行适当的错误处理。

扩展它的确有意义,在我最熟悉的(大型机)SCM工具中,您将启动一些FTP从开发环境到远程目标的过程(例如,分发和激活可执行文件)。迟早(异步),有人(从远程目标到开发站点)会收到某种表示“成功或失败”的确认。并且,如果在合理的时间内没有任何反馈返回,您就知道有些事情没有按预期进行。使用这样的场景,您将永远不会忘记被解雇的事情。

在詹金斯中使用“解救”的任何例子都有意义吗?

评论

因为该任务负责在出现问题时发出警报,所以如果什么都不依赖它,根本就不是调度程序来对其进行监督。例如:每日备份,调度程序只需在批处理结束后的适当时间启动它,这是备份任务的职责,即发现错误并对其进行警告。失败的调度程序状态不会带来任何信息。代码级别的职责分离:)

#1 楼

我不会将詹金斯的工作形容为“开枪而忘记”。它们被设计为自动运行而无需人工干预,但这并不意味着看不到工作的结果。从命令行工具到自定义部署作业,所有活动的相反详细日志都可用。

Jenkins作业的测试结果通常在整个开发环境的大屏幕电视上显示我见过的许多公司的最低层。有整个插件专门用于以仪表板格式向开发人员,Ops和管理人员提供此类信息。

#2 楼

在这种情况下,“ Fire and Forget”并不意味着您认为的含义。

并非先解雇构建然后忘记结果的情况。实际发生的情况是您触发了该事件,然后忘记了该流程在做什么,直到该流程向您返回反馈并提醒您有关触发的内容为止。

例如,过去的处理方式可能是触发构建,然后在您观察输出时让其运行。您坐在那里观察构建结果,因为它们发生了,并且在那段时间内没有处理任何其他有效的工作。或者您确实在做一些富有成效的工作,但是您只对构建过程有一只眼睛。完成后,您需要关注或记住对其进行检查以查看结果,然后在此基础上继续进行操作。

在Jenkins模型“ Fire and Forget”中,一些自动化的过程会为您完成构建,并且在出现问题或构建完成之前,您的注意力不会集中在构建过程上。到那时,您会从Jenkins收到一条消息,可以是电子邮件,也可以是slack之类的程序,它现在使您想起构建过程,并告诉您继续前进所需要知道的所有信息。同时,您正在全神贯注地执行其他任务,因为您知道自己不必密切关注。自动化系统会提醒您任何需要了解的信息。

#3 楼

在这种情况下,似乎忘了听起来并不是什么。相反,它类似于“ Don't keep me waiting for the process to complete, so that I can do something else while the process is running. And when the process is done (succeeded or failed), we'll continue processing with whatever is next”之类的东西。使用Join插件。有关此插件的更多详细信息(来自链接页面):

此插件允许在所有直接下游作业完成后运行作业。这样,执行可以分支并并行执行许多步骤,然后在所有并行工作完成后立即运行最终的聚合步骤。
该插件可用于创建“钻石”形状项目依赖项。这意味着有一个父作业启动了多个下游作业。这些作业完成后,将运行一个聚合作业。