我有一个应用程序将出售给多个客户。
我主要担心的是:
如果我的应用程序中发现了一个错误,并且我已经修复了我的一个客户端应用程序中的错误,我该如何自动将相同的修复程序应用于所有客户端,比方说1000客户端?
编辑:
假设我的应用程序是一个餐馆应用程序,我把它卖给多家餐馆,每个都有自己的后端,应用程序商店帐户。只是颜色,标志是不同的。代码是一样的。
答案 0 :(得分:1)
根据您的偏好,经验,实际开发过程,应用程序结构等,有几种可能的方法,每种方法都有利弊。
共享代码将进入master
分支。每个客户特定的工件和自定义(可能还包括代码增量)都将从customN
分支中移出master
分支。该修补程序最初可以提交到其中一个customN
分支中(例如,为了让客户在修复之前验证修复或多次迭代,然后再将其传播到所有客户)。如果是这样,则必须将修复程序双重提交到master
分支。或者它可以直接进入master
分支。从那里,修复将通过同步传播到所有其他customN
分支,其中大多数应该是微不足道的。然后在包含相应customN
repo分支的工作空间中重新构建相应的客户包。
shared
存储库customN
存储库修复只会在共享代码仓库中提交一次,将更新分发给客户只是意味着拉动相应的客户工作区(自动获取更新的shared
仓库)并构建包。 / p>
可能可以在工作空间中对shared
repo进行符号链接,而不是实例化它的副本,这可能会加快包构建速度。
如果您还需要每个客户的代码增量,这种方法也无法正常工作。
答案 1 :(得分:1)
您描述了一项非常具有挑战性的要求。
以下是一些建议:
尝试将应用程序构建为组件。一些组件将为每个客户端定制,但希望大多数组件都是通用的。
这样可以更容易进行更新,因为您只需要释放受bug影响的组件。
构建自动更新机制。将此内容构建到您的所有应用程序中,以便可以将更新推送给所有客户。
您也可以找到现成的专有自动更新机制。
一个主要的挑战是确保每个错误修复不会在应用程序的许多版本中引入其他错误。最好的方法是使用一套自动回归测试来覆盖应用程序中最重要的功能。配置持续集成,以便构建并测试应用程序的每个版本。
这使您有信心在所有客户端的应用程序中推出更新。