1

我有许多长期运行的工作几乎需要一天才能完成。分裂是不可能的。如果网络出现故障,则所有进度都将丢失。从站如何在断开连接中幸存下来?

编辑 1

我有大约 300 个在 Windows 中运行的奴隶,它们与一个 Jenkins 实例相关联。

从站使用手动方法连接java - jar slave.jar -jlnpUrl <serverUrl> <slaveName>。我无法将它们作为常规 Windows 服务运行,因为某些测试会操纵 GUI 元素并需要真正的交互式会话,否则测试会失败。

编辑 2

根据Jenkins Cookbook,我应该使用 Cygwin + OpenSSH 方法,而不是使用 JLNP 连接器的自定义脚本。这能提高稳定性吗?

4

2 回答 2

0

Jenkins 最初并不是为构建在服务器或从属设备重启后仍然存在而设计的。有一个CloudBees Long-Running Build 插件支持长时间运行的构建,但不幸的是,它仅适用于企业用户并且仍然是测试版。

我没有找到任何免费的替代方案,建议您尝试提高网络稳定性并拆分长期运行的工作。至少您可以将测试划分为逻辑组(测试套件)。

于 2015-07-04T11:54:22.530 回答
0

Jenkins 现在有一个工作流插件。它声称可以处理“服务器”重启和与从属设备的连接丢失。

从链接

工作流执行的一个关键特性是它是可暂停的。也就是说,当工作流运行您的脚本时,您可以关闭 Jenkins 或失去与从属设备的连接。当它回来时,Jenkins 仍然会记住它在做什么,并且您的工作流脚本会恢复执行,就好像它从未被中断过一样。一种称为“连续传递风格”执行的技术在实现这一目标中起着关键作用。

(根本没有测试)

编辑:复制自@Jesse Glick 的评论:

Workflow 是开源的,可供运行 Jenkins 1.580.1+ 或更高版本的任何人使用。CloudBees Jenkins Enterprise 确实包含一个检查点功能,但这并不是仅仅为了让构建在从属断开连接和 Jenkins 重新启动后幸免于难:这是自动的

于 2015-07-05T15:31:10.220 回答