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