詹金斯管道恢复但没有任何反应
Jenkins pipeline resumes but nothing happens
我们有一个包含多个阶段的 Jenkins 管道(管道即代码)。其中一个阶段创建约 40-50 个下游作业并以并行步骤启动它们。
不幸的是,我们的 jenkins master 每晚都会重启。重新启动后,队列中的每个作业都将丢失,并且当前 运行 个下游作业因错误而停止。
重新连接子节点后,管道处于恢复状态(=> 控制台输出:恢复构建)但没有任何反应。
现在我有以下问题:
- 当管道试图恢复时到底发生了什么?管道是否再次从阶段 1 开始?
- 是否可以重新排队之前在队列中的下游作业?
只需在流程中使用的每个作业中选择 "don't not allow the pipeline to resume if the master restarts"。在这种情况下,这个问题不会发生(恢复状态)。
options {
disableResume()
}
作为恢复的解决方案 - 使用一些 "queue" 检查器。例如:
- 为每个构建请求在某个文件夹中创建一个名为 json/yaml 的唯一命名文件(要启动的构建配置),您的主要工作将检查文件是否存在。
- 如果找到这样的文件 - 启动主要作业(使用配置 "not allow concurrent builds")。为作业设置一些超时
- 主作业启动结束 - 删除文件...
或者在 AWS 中使用一些 SQS 队列...
我们有一个包含多个阶段的 Jenkins 管道(管道即代码)。其中一个阶段创建约 40-50 个下游作业并以并行步骤启动它们。 不幸的是,我们的 jenkins master 每晚都会重启。重新启动后,队列中的每个作业都将丢失,并且当前 运行 个下游作业因错误而停止。 重新连接子节点后,管道处于恢复状态(=> 控制台输出:恢复构建)但没有任何反应。
现在我有以下问题:
- 当管道试图恢复时到底发生了什么?管道是否再次从阶段 1 开始?
- 是否可以重新排队之前在队列中的下游作业?
只需在流程中使用的每个作业中选择 "don't not allow the pipeline to resume if the master restarts"。在这种情况下,这个问题不会发生(恢复状态)。
options {
disableResume()
}
作为恢复的解决方案 - 使用一些 "queue" 检查器。例如:
- 为每个构建请求在某个文件夹中创建一个名为 json/yaml 的唯一命名文件(要启动的构建配置),您的主要工作将检查文件是否存在。
- 如果找到这样的文件 - 启动主要作业(使用配置 "not allow concurrent builds")。为作业设置一些超时
- 主作业启动结束 - 删除文件...
或者在 AWS 中使用一些 SQS 队列...