go-ipfs正在引入一個(gè)新的發(fā)布周期和流程,以保障更可靠和頻繁的版本發(fā)布!IPFS日臻完善。 我們看到越來越多的用戶在用我們的網(wǎng)絡(luò),而且我們也
go-ipfs正在引入一個(gè)新的發(fā)布周期和流程,以保障更可靠和頻繁的版本發(fā)布!
IPFS日臻完善。 我們看到越來越多的用戶在用我們的網(wǎng)絡(luò),而且我們也發(fā)現(xiàn)目前的版本發(fā)布流程有待升級改進(jìn),以便定期提供更多完整的完善的版本。 我們這樣做是因?yàn)槲覀冊谧罱齻€(gè)版本中發(fā)現(xiàn)了很多技術(shù)小問題。 我們不希望這種情況再次發(fā)生,因此我們正在制定保障措施,以最大限度地提高我們發(fā)布的版本的質(zhì)量。
以下為發(fā)布過的版本中所出現(xiàn)的問題:
go-ipfs 0.4.19在高強(qiáng)度高負(fù)載使用時(shí)存在多次還原:
docker容器中的還原,可以通過在更多生產(chǎn)環(huán)境中測試go-ipfs docker鏡像來捕獲。
只有在極高負(fù)載下才能看到CPU利用率還原,這可以通過在生產(chǎn)負(fù)載下進(jìn)行測試來捕獲。
DHT和QUIC模塊中的錯誤僅在高負(fù)荷下出現(xiàn)。
go-ipfs 0.4.20存在一個(gè)還原,在同一個(gè)add命令中添加多個(gè)獨(dú)立文件是不起作用的(#6254)。此后又添加了還原測試,但這也可以通過更好的跨應(yīng)用程序測試來實(shí)現(xiàn)。
go-ipfs 0.4.21在bitswap中有兩個(gè)性能還原:
應(yīng)該通過還原測試(現(xiàn)已測試)捕獲的吞吐量還原,但幾乎可以肯定,下游用戶會在更長的發(fā)布測試過程中注意到這一點(diǎn)。
CPU利用率還原,僅顯示大于10000的對等項(xiàng)。是一種在高負(fù)荷下僅在某些生產(chǎn)系統(tǒng)中出現(xiàn)的東西。
我們發(fā)現(xiàn)了兩個(gè)根本原因:
1.與前幾個(gè)季度相比,開發(fā)速度有所提升,但未對我們的測試實(shí)踐環(huán)節(jié)進(jìn)行改進(jìn)。今年,一些大型的重構(gòu)軟件觸碰到了關(guān)鍵點(diǎn),但測試效果差強(qiáng)人意。
2.在沒有大規(guī)模測試或網(wǎng)絡(luò)模擬基礎(chǔ)設(shè)施的情況下,go-ipfs的網(wǎng)絡(luò)規(guī)模和生產(chǎn)需求顯著增加。過去,所有生產(chǎn)規(guī)模測試都是通過將自定義go-ipfs構(gòu)建部署到引導(dǎo)程序或網(wǎng)關(guān)并觀察其行為來完成的。
為了解決這些問題,我們暫停了所有非bugfix go-ipfs版本,因?yàn)槲覀兏倪M(jìn)了測試實(shí)踐并構(gòu)建了測試和網(wǎng)絡(luò)模擬基礎(chǔ)架構(gòu)。除了改進(jìn)我們的測試之外,我們還引入了一個(gè)新的發(fā)布流程,以確保在盡可能多的環(huán)境中測試版本,并且我們可以快速發(fā)布錯誤修復(fù),而無需等待整個(gè)發(fā)布周期。
發(fā)布流程變更
我們對發(fā)布過程進(jìn)行了三項(xiàng)具體更改:
1.為解決穩(wěn)定性問題,我們引入了一個(gè)新的發(fā)布流程,涉及在各種生產(chǎn)環(huán)境中廣泛測試版本 - 包括早期測試人員。
2.為了解決發(fā)布速度慢的問題,我們引入了一個(gè)為期6周的發(fā)布周期。
3.為了解決緩慢修復(fù)錯誤的問題,我們已經(jīng)切換到semver并引入了補(bǔ)丁版本。 第一個(gè)補(bǔ)丁版本為0.4.22,下一個(gè)版本將為0.5.0。
新發(fā)布流程
新版本發(fā)布過程包括5個(gè)階段:
1.自動化測試 - go-ipfs CI通行證。
2.內(nèi)部測試 - 針對IPFS基礎(chǔ)架構(gòu),內(nèi)部測試和模擬工具以及Shipyard(IPFS船塢)應(yīng)用程序測試go-ipfs。
3.社區(qū)開發(fā)測試 - go-ipfs由開發(fā)環(huán)境中的社區(qū)進(jìn)行測試。
4.社區(qū)產(chǎn)品測試 - go-ipfs由生產(chǎn)環(huán)境中的社區(qū)進(jìn)行測試。
5.發(fā)布 - go-ipfs版本最終發(fā)布。
預(yù)備階段 - 自動化測試
這是我們分發(fā)候選版本的階段。
第1階段 - 內(nèi)部測試
這個(gè)過程的第一個(gè)階段是內(nèi)部測試。在此階段,IPFS團(tuán)隊(duì)將針對IPFS Shipyard中的應(yīng)用程序,我們正在構(gòu)建的一些新測試和模擬基礎(chǔ)架構(gòu)以及IPFS項(xiàng)目的生產(chǎn)基礎(chǔ)架構(gòu)(bootstrappers和網(wǎng)關(guān))的子集測試候選版本。
此階段允許我們在要求更廣泛的社區(qū)開始測試之前,在受限制的控制范圍內(nèi)快速查找,診斷和修復(fù)問題。
第2階段 - 社區(qū)開發(fā)測試
在此階段,我們宣布即將發(fā)布的版本以及測試人員。這個(gè)階段的存在是為了給新的IPFS候選版本提供盡可能多的低風(fēng)險(xiǎn)測試。
這也是我們參與早期測試人員計(jì)劃的第一階段。 在這里,我們要求他們在其開發(fā)基礎(chǔ)設(shè)施中測試go-ipfs版本,并與我們一起解決任何問題。
第3階段 - 社區(qū)產(chǎn)品測試
一旦go-ipfs發(fā)布候選版已經(jīng)在開發(fā)環(huán)境中進(jìn)行了全面測試,我們要求早期測試人員計(jì)劃的成員將發(fā)布候選版本部署到他們的生產(chǎn)環(huán)境的子集中。此階段使我們有機(jī)會測試生產(chǎn)工作負(fù)載,同時(shí)保留快速更改和修復(fù)最終版本之前可能出現(xiàn)的任何問題的能力。
第4階段 - 發(fā)布
在第4階段,我們確保所有文檔都已更新,刪除最終版本,并向社區(qū)公布。
早期測試人員計(jì)劃
我們正在推出一個(gè)早期測試人員計(jì)劃,該計(jì)劃允許使用go-ipfs的團(tuán)隊(duì)志愿者幫助在開發(fā)和生產(chǎn)環(huán)境中測試go-ipfs候選版本。 雖然我們邀請整個(gè)社區(qū)幫助測試版本,但早期測試人員計(jì)劃的成員能直接參與每個(gè)版本。
早期測試人員會將發(fā)布候選版本部署到dev和prod環(huán)境中,為我們提供有關(guān)他們注意到的任何還原或性能變化的快速反饋。 這意味著我們可以在削減正式版本之前從重度用戶那里獲得一些快速反饋,這些忠實(shí)用戶可以與我們合作以確保新版本不會在他們的系統(tǒng)中出現(xiàn)問題。
發(fā)布周期
任何功能都會凍結(jié),go-ipfs現(xiàn)在大約每6周就會發(fā)布一個(gè)新版本。具體來說,我們的目標(biāo)是每6周分出一個(gè)新版本,然后在預(yù)期的3周內(nèi)完成發(fā)布過程。
如果發(fā)布過程在預(yù)期的3周內(nèi)或之后運(yùn)行,則下一版本的目標(biāo)是在6周時(shí)進(jìn)行分支,無論如何。這樣,即使我們沒有如期發(fā)布,我們?nèi)匀豢梢员3?周的發(fā)布節(jié)奏。(四塊科技)