我目前正在指出一个新的项目的软件需求,这个项目将会在间歇性的networking连接的位置。
由于我们的一些地点会有间歇性的networking连接。 我们将有(几乎?)所有软件发布计划提前。
是否有可能在实际版本之前下载所需的更新数据,即使服务器没有networking连接,发布也是按计划进行的。
我们目前使用卡皮斯特拉诺发布我们的主要项目,所以我想继续使用它,如果可能在卡皮斯特拉诺。
今天我学到了一个叫做delayed_job的Capistrano插件,它允许人们在你select的时候执行任务。
我们必须打破我们的发布过程,才能使其发挥作用,并且有一小部分脚本来绕过这个过程来自动重试,但是目前看起来我们可以使用它来客户端在晚上自动完成发布,而不需要networking连接。
我将编辑这个和更新一次,我已经实现了解决scheme,并希望提供一个代码示例来演示我所做的。
在此之前,我要保持这个问题的开放,所以我希望能够看到有没有人有更好的解决scheme。
同时向许多用户发布软件是有风险的。 如果出现问题,你怎么办? 逐步推出可以让您更快地发现问题,而且您还可以做更less的工作来从事故中恢复过来。 没有与运行该软件的主机之间的可靠networking连接,风险会变得更糟。
不同版本之间可能存在兼容性问题。 这样的兼容性问题可以通过确保每个版本与其前一版本兼容(但不一定要后退)来得到更好的处理。 当涉及多个组件时,组件的sorting更新也可能是相关的。
但是一旦你决定使用新版本,为什么不马上部署呢,而不是等待将来的特定时间呢? 通常等待的主要原因是确保您已经准备好处理可能出现的任何问题。 但是,如果这是目的,那么在设备甚至没有networking连接的情况下发生自动发布,可能会在最坏的时候发布。
在你安排发布的时间和实际发生的时间之间,事情可能会发生。 你可能会发现一个错误,这意味着你想取消发布。 您也可能会发现准备提供支持的人在计划的时间将不可用,您需要推迟发布。 在这些情况下,缺乏networking连接可能会阻止您停止发布,这毕竟不应该发生。