IPFS官网更新 | 改进IPFS发布流程

发布时间:2020-02-07 18:17 浏览次数:次 作者:星际联盟 来源:http://www.ipfs-filecoin.cn

go-ipfs正在引入一个新的发布周期和流程,以确保更可靠和频繁的发布!IPFS正在成长,越来越多的用户了解我们,并且已经认识到需要升级我们的发布流程,以便定期提供更多生产就绪的产品。我们这样做是因为我们在最近三个版本中发布了不寻常的关键退化(自修复后)。我们不希望这种情况再次发生,因此我们正在制定保障措施,在发布之前能更快捕捉到产品退化的现象。
这是发生的事情:
1、go-ipfs 0.4.19在重负载下使用时有多次退化:
(1)docker容器中的退化(#6040引入)可以通过在更多生产环境中测试go-ipfs docker镜像来捕获。
(2)只有在非常高的负载下才能看到CPU利用率退化。这可以通过在生产负载下进行测试来捕获。
(3)DHT和QUIC模块中的恐慌仅在重负荷下出现。
2、go-ipfs 0.4.20有一个退化,在同一个add命令中添加多个独立文件不起作用(#6254)。此后又添加了退化测试,但这也可以通过更好的跨应用程序测试来实现。
3、go-ipfs 0.4.21在bitswap中有两个性能退化:
(1)应该通过退化测试(现已测试)捕获的吞吐量退化,但几乎可以肯定,下游用户会在更长的发布测试过程中注意到这一点。
(2)CPU利用率退化,仅显示> 10000个对等项。在重负荷下仅在某些生产系统中出现的东西。
我们发现了两个根本原因:
1、与前几个季度相比,开发速度有所提升,但未对我们的测试实践进行改进。几个接触关键但经过严格测试的子系统的大型重构今年降落。
2、在没有大规模测试或网络模拟基础设施的情况下,go-ipfs的网络规模和生产需求显着增加。在过去,所有生产规模测试都是通过将自定义go-ipfs构建部署到引导程序或网关并观察其行为来完成的。 
为了解决这些问题,我们暂停了所有非bugfix go-ipfs版本,因为我们改进了测试实践并构建了测试和网络模拟基础架构。这些确保改进的测试,不会面对新功能和紧迫的性能改进时出现问题。
但是,即使用我们当前的测试实践,这些退化也应该通过严格的预发布测试来捕获。更好的发布过程(例如,削减补丁版本的能力)也使我们能够快速发布这些退化的修复程序,并使我们的用户能够快速部署这些修补程序,而无需担心其他无关更改的潜在影响。
因此,除了改进我们的测试之外,我们还引入了一个新的发布流程。以确保在尽可能多的环境中测试版本,并且我们可以快速发布错误修复,而无需等待整个发布周期。
发布流程变更
我们对发布过程进行了三项具体更改:
1、为解决稳定性问题,我们引入了一个新的发布流程,涉及在各种生产环境中广泛测试版本 - 包括早期测试人员。
2、为了解决缓慢发布的问题,我们引入了一个为期6周的发布周期。
3、为了解决缓慢修复错误的问题,我们已经切换到semver并引入了补丁版本。第一个补丁发布将0.4.22和未来功能版本将是0.5.0。
新发布流程
新版本发布过程包括5个阶段:
1、自动化测试 - go-ipfs CI通行证。
2、内部测试 - 针对IPFS基础架构,内部测试和模拟工具以及Shipyard应用程序测试go-ipfs 。
3、社区开发测试 - go-ipfs由开发环境中的社区进行测试。
4、社区产品测试 - go-ipfs由社区在生产环境中进行测试。
5、发布 - go-ipfs已发布。
如果我们在发布过程中合并任何非平凡的修复,我们将从第0阶段开始,对已经完成一次的阶段进行压缩发布过程。
我们预计1-3阶段每个平均需要花费一周的时间 - 这表明在切割和发布新版本之间需要3周的时间。
第0阶段 - 自动化测试
虽然我们努力保持master版本为绿色,但偶尔会遗漏一些问题(通常是由于错误的测试或未被注意的CI问题)。在我们分发版本之前,我们希望master版本是绿色的。
第1阶段 - 内部测试
这个过程的第一个真正阶段是内部测试。在此阶段,IPFS团队将针对IPFS Shipyard中的应用程序,我们正在构建的一些新测试和模拟基础架构以及IPFS项目的生产基础架构(bootstrappers和网关)的子集测试候选版本。
此阶段允许我们在要求更广泛的社区开始测试之前,在受限制的控制范围内快速查找,诊断和修复问题。
第2阶段 - 社区开发测试
在此阶段,我们宣布即将发布给社区并要求测试版测试人员。这个阶段的存在是为了给新的IPFS候选版本提供尽可能多的低风险测试。
这也是我们参与早期测试人员计划的第一阶段。在这里,我们要求他们在他们的开发基础设施中测试go-ipfs版本,并与我们一起解决任何问题。
第3阶段 - 社区产品测试
一旦go-ipfs发布候选版已经在开发环境中进行了全面测试,我们要求早期测试人员程序的成员将发布候选版本部署到他们的生产环境的子集中。此阶段使我们有机会测试生产工作负载,同时保留快速回滚更改和修复最终版本之前可能出现的任何问题的能力。
第4阶段 - 发布
在第4阶段,我们确保所有文档都已更新,确定最终版本,并向社区公布。
早期测试人员计划
我们正在推出一个早期测试人员计划,允许使用生产中的go-ipfs的团队自我志愿帮助go-ipfs在开发和生产环境中测试候选版本。虽然我们邀请整个社区帮助测试版本,但早期测试人员计划的成员直接并积极参与每个版本。
早期的测试人员会将发布候选版本部署到dev和prod环境中,为我们提供有关他们注意到的任何退化或性能变化的快速反馈。这意味着我们可以在确定正式版本之前从重度用户那里获得一些快速反馈,这些重度用户可以与我们合作以确保新版本不会在他们的系统中引入任何退化。
该计划目前包括:
 
Infura
Textile
Pinata
RTrade (Temporal)
QRI
Siderus
 
发布周期
任何功能都会冻结,go-ipfs现在大约每6周就会发布一个新版本。具体来说,我们的目标是每6周分出一个新版本,然后在预期的3周内完成发布过程。
如果发布过程在预期的3周内或之后运行,则下一版本的目标是在6周时分支,无论如何。这样,即使我们没有如期发布,我们仍然可以保持6周的发布节奏。
补丁发布
鉴于此发布过程中增加的结构和广泛的测试,我们需要一种方法来快速发布关键退化的修复程序,如果它们出现的话。如果我们在go-ipfs版本中修复了关键退化,我们将根据当前的稳定版本为此退化创建补丁版本。
此补丁版本仍将进行缩短版本测试,但我们预计需要2-3天,而不是几周:
1、内部测试不到一天。
2、由早期测试人员计划的成员进行生产测试1-2天。
注意:此发布过程不会引入长期支持版本。修补程序仅适用于最新版本,不会向后移植。此外,下一个功能版本可能还包括其他错误修复程序,这些修补程序在修补程序版本中并不重要。
Semver
此发布过程最终将go-ipfs切换到 semver。与许多1.0之前的项目一样,go-ipfs已经保留了MINOR版本,用于重大突破或重大里程碑。但是,这意味着我们无法区分真正的补丁版本(应用于先前版本的错误修复)和功能版本(次要版本)。
这意味着直到go-ipfs达到1.0:
次要版本将不再发出重大里程碑或重大变化的信号。相反,次要版本将是正常的功能版本。
补丁版本现在就是:上一个稳定版本的补丁。
作为一个历史花絮,我们有一种浪漫的希望,即0.5.0将标记特征完整性(“beta”),并且之后的下一个非补丁版本将是1.0。但是,下一个功能版本0.5.0并不意味着什么特别的,并且不会是一个重要的里程碑。

上一篇:Filecoin让IPFS在跟HTTP的竞争中拥有了更强的发展优

下一篇:矿机卖断货背后,IPFS挖矿为何如此火爆?

相关推荐
渠道商首页渠道合作 微信客服1 微信客服2
X

截屏,微信识别二维码

微信号:463026449

(点击微信号复制,添加好友)

打开微信

微信号已复制,请打开微信添加咨询详情!
X

截屏,微信识别二维码

微信号:clj830911

(点击微信号复制,添加好友)

打开微信