我们有两个与依赖关系有关的主要危机,它们具有两个不同的代码库(Android和一个Node.js Web应用程序)。Android存储库需要从Flurry迁移到Firebase,这需要将Google Play服务库更新为四个主要版本。我们在Heroku托管的Node应用程序中发生了类似的事情,在该应用程序中,我们的生产堆栈(cedar)已被弃用,需要升级到cedar-14。我们的PostgreSQL数据库也需要从9.2更新到9.6。
这些应用程序的每个依赖项都已经存在了将近两年的时间,而当其中的一些应用程序被弃用并且我们进入“日落”时期时,更新或替换它们一直是头疼的大问题。在过去的一个月中,我花了30多个小时来慢慢解决所有冲突和代码损坏。
显然,让事情搁置两年已经太久了。技术发展日新月异,特别是当您使用Heroku等平台提供商时。假设我们有一个完善的测试套件,以及一个像Travis CI这样的CI流程,它不需要进行很多更新工作。例如,如果某个功能在升级后被删除,而您正在使用它,则测试将失败。
应该多长时间更新一次依赖关系,或者何时应该更新依赖关系?我们进行了更新,因为我们被迫这样做,但似乎某种先发制人的方法会更好。发行次要版本时,我们应该更新吗?主要版本?每个月是否有更新?我想不惜一切代价避免发生我刚刚经历的情况。
PS-对于我的一个个人Rails项目,我使用了一项名为Gemnasium的服务,该服务可以跟踪您的依赖关系,以便可以将安全漏洞通知给您。这是一项很棒的服务,但是我们必须手动检查我提到的项目的依赖关系。