国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

Pinterest 工程通過運(yùn)行時(shí)感知分片將 Android CI 構(gòu)建時(shí)間縮短了 36%

0
分享至


作者 | Craig Risi

譯者 | 劉雅夢

策劃 | 丁曉昀

Pinterest 發(fā)布了一份技術(shù)案例研究,詳細(xì)介紹了其工程團(tuán)隊(duì)如何通過采用運(yùn)行時(shí)感知的測試分片策略并構(gòu)建內(nèi)部測試平臺(tái),將 Android 端到端(E2E)持續(xù)集成(CI)的構(gòu)建時(shí)間縮短了 36% 以上。在進(jìn)行變更之前,Pinterest 的 Android CI 管道因測試套件在第三方平臺(tái)上按包名拆分,導(dǎo)致最慢的分片阻塞了整個(gè)構(gòu)建,從而導(dǎo)致構(gòu)建時(shí)間緩慢且不可預(yù)測。通過創(chuàng)建一個(gè)自定義的內(nèi)部平臺(tái)并重新組織測試的分發(fā)方式,Pinterest 實(shí)現(xiàn)了更平衡的執(zhí)行,顯著降低了開發(fā)人員的反饋延遲。

在他們之前的設(shè)置中,Pinterest 依賴于 Firebase Test Lab (FTL)并基于包分組進(jìn)行測試分片,當(dāng)一些測試運(yùn)行時(shí)間比其他測試長得多時(shí),會(huì)導(dǎo)致工作負(fù)載不均衡。這不僅延長了總構(gòu)建時(shí)間,還引入了不穩(wěn)定性和設(shè)置開銷,從而增加了每次運(yùn)行的時(shí)間。在評(píng)估了第三方替代方案后,該團(tuán)隊(duì)得出結(jié)論,沒有哪個(gè)方案能夠滿足其對(duì)原生模擬器支持、可靠性和細(xì)粒度控制的要求,而不需要自定義的編排層。這一分析導(dǎo)致了 PinTestLab 的開發(fā),這是一個(gè)內(nèi)部測試基礎(chǔ)設(shè)施,它在 EC2 實(shí)例上運(yùn)行 Android 模擬器,使工程師能夠完全控制調(diào)度、設(shè)置環(huán)境和編排運(yùn)行時(shí)。

其核心創(chuàng)新涉及一種運(yùn)行時(shí)感知的分片) 算法,該算法使用存儲(chǔ)在 Pinterest 的 Metro 測試管理系統(tǒng)中的歷史測試執(zhí)行數(shù)據(jù),按預(yù)期持續(xù)時(shí)間而不是計(jì)數(shù)對(duì)測試進(jìn)行分組。與簡單的輪詢或基于包的分片不同,該算法根據(jù)預(yù)期運(yùn)行時(shí)間對(duì)測試進(jìn)行排序,并將它們分配給分片,從而最小化各分片執(zhí)行時(shí)間的差異。使用這種方法,團(tuán)隊(duì)將最快和最慢分片之間的時(shí)間差距從數(shù)百秒縮短到幾十秒,從而實(shí)現(xiàn)一致且更快的構(gòu)建完成。這種轉(zhuǎn)變將最慢的分片運(yùn)行時(shí)間縮短了 55%,并將每次構(gòu)建的 CI 反饋時(shí)間縮短了約 9 分鐘。

這一改進(jìn)的關(guān)鍵促成因素是 Pinterest 能夠收集和使用每個(gè)測試的歷史運(yùn)行時(shí)和穩(wěn)定性數(shù)據(jù)。運(yùn)行時(shí)感知的方法不是按數(shù)量平均分配測試,而是根據(jù)過去的性能將測試分配給預(yù)期首先完成的分片,保持模擬器資源繁忙和尾部延遲較低。實(shí)現(xiàn)涉及輕量級(jí)排序和使用最小堆數(shù)據(jù)結(jié)構(gòu)的貪心賦值,這是調(diào)度效率和計(jì)算簡單性之間的一種折衷。

Pinterest 的平臺(tái)還優(yōu)先考慮了運(yùn)維的穩(wěn)定性:運(yùn)行時(shí)感知的分片邏輯在 Buildkite 中運(yùn)行,使用歷史數(shù)據(jù)生成每個(gè)分片的計(jì)劃,但如果 Metro 不可用,則會(huì)回退到輪詢分發(fā),從而確保即使在基礎(chǔ)設(shè)施出現(xiàn)故障的情況下也能保證 CI 的可靠性。展望未來,該團(tuán)隊(duì)正在探索使用消息隊(duì)列的按需分片,以獲得更大的彈性和更細(xì)粒度的測試執(zhí)行,但他們發(fā)現(xiàn)當(dāng)前的方法能夠以最小的復(fù)雜度提供強(qiáng)大的性能。

這項(xiàng)工作突出了 CI 優(yōu)化中的兩個(gè)更廣泛的趨勢。首先,利用歷史經(jīng)驗(yàn)數(shù)據(jù)進(jìn)行工作負(fù)載平衡可以在并行測試環(huán)境中獲得確定性的性能提升。其次,從供應(yīng)商管理的分片轉(zhuǎn)向內(nèi)部編排,可以讓團(tuán)隊(duì)根據(jù)自己獨(dú)特的工作負(fù)載特征定制測試執(zhí)行策略。隨著測試套件的規(guī)模和復(fù)雜性不斷增長,Pinterest 的努力為其他面臨 CI 等待時(shí)間延長的組織提供了一個(gè)實(shí)用模型,這是現(xiàn)代軟件開發(fā)中的一個(gè)常見挑戰(zhàn)。

還有其他公司和項(xiàng)目也采用了類似的方法來提高 CI 性能、測試分片和縮短構(gòu)建時(shí)間,通常使用歷史數(shù)據(jù)、并行化或根據(jù)工作負(fù)載定制的自定義算法。以下是一些其他示例及其關(guān)鍵細(xì)節(jié):

Dropbox 的工程師改進(jìn)了他們的 Android 測試管道,使用 Affected Module Detector(受 AndroidX 工具的啟發(fā))有選擇地識(shí)別并只運(yùn)行給定更改中受影響的測試,并通過諸如 Flank/Fladle 等工具進(jìn)行測試分片。他們還標(biāo)準(zhǔn)化了覆蓋率報(bào)告,并將設(shè)備上的測試轉(zhuǎn)移到 Firebase Test Lab,從而將整個(gè) Android CI 運(yùn)行時(shí)間從 75 分鐘左右減少到 25 分鐘左右。他們的方法與 Pinterest 的工作精神相似,因?yàn)樗苊饬诉\(yùn)行不必要的測試,并應(yīng)用戰(zhàn)略并行來提高 CI 效率。

Shopify 的工程團(tuán)隊(duì)構(gòu)建了一個(gè)自定義的測試分離器,它使用歷史計(jì)時(shí)數(shù)據(jù)來平衡測試分片。通過按執(zhí)行時(shí)間排序測試,然后以一種最小化分片差異的方式分配測試,它們極大地減少了慢分片和快分片之間的不平衡,將總 CI 構(gòu)建時(shí)間從大約 45 分鐘減少到大約 11 分鐘,并且將分片持續(xù)時(shí)間差異壓縮到大約 5% 以內(nèi)。這種模式與 Pinterest 的運(yùn)行時(shí)感知的分片概念非常相似,并展示了歷史時(shí)間指標(biāo)如何在深思熟慮的情況下產(chǎn)生巨大的 CI 加速。

Square 的內(nèi)部 CI 工具 Kochiku 支持自動(dòng)化分片、智能調(diào)度和跨數(shù)百個(gè) Android 構(gòu)建分片的分布式緩存。Square 的方法雖然沒有 Pinterest 的案例研究那么詳細(xì),但它強(qiáng)調(diào)了擴(kuò)展 CI 分片和調(diào)度邏輯到分布式環(huán)境的重要性,在這種環(huán)境中,成百上千的并行測試工件可以獨(dú)立執(zhí)行,減少積壓并提高資源利用率。

像 Bitrise 這樣的平臺(tái)提供了內(nèi)置的測試分片和并行化功能,許多應(yīng)用團(tuán)隊(duì)采用這些功能來減少 CI 時(shí)間。Bitrise 的用戶報(bào)告稱,使用它的分片和并行執(zhí)行能力可以減少大約 50% 的測試時(shí)間,盡管與 Pinterest 等自定義系統(tǒng)相比,它的抽象層次更高。

Slack 的工程團(tuán)隊(duì)通過有條件地跳過不必要的前端構(gòu)建并重用預(yù)構(gòu)建資產(chǎn)來 優(yōu)化 端到端 CI 管道,這使得構(gòu)建速度提高了約 50%,并減少了不穩(wěn)定因素。雖然沒有嚴(yán)格的測試分片,但這個(gè)例子展示了基于構(gòu)建上下文的戰(zhàn)略性重用和選擇性執(zhí)行是如何對(duì) CI 反饋循環(huán)進(jìn)行重大改進(jìn)的。

這些例子說明,雖然 Pinterest 的運(yùn)行時(shí)感知分片技術(shù)以簡單和有效而聞名,但它適用于許多工程組織正在采用的更廣泛的最佳實(shí)踐:使用歷史執(zhí)行數(shù)據(jù)來平衡工作負(fù)載,最大化并行性,避免不必要的測試執(zhí)行,以獲得更快、更可靠的持續(xù)集成反饋。

https://www.infoq.com/news/2025/12/pinterest-ci-build-reduction/

聲明:本文為 InfoQ 翻譯,未經(jīng)許可禁止轉(zhuǎn)載。

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
山河四省,三億人的悲哀

山河四省,三億人的悲哀

銀河系漫游客
2025-12-30 14:04:48
自盧克-肖以來,萊西是首位被罰下的20歲以下曼聯(lián)球員

自盧克-肖以來,萊西是首位被罰下的20歲以下曼聯(lián)球員

懂球帝
2026-01-12 02:57:35
韋布發(fā)現(xiàn)9個(gè)神秘“偽裝者”,能同時(shí)“模仿”多種天體

韋布發(fā)現(xiàn)9個(gè)神秘“偽裝者”,能同時(shí)“模仿”多種天體

星空天文
2026-01-11 08:52:44
26年央視春晚嘉賓名單曝光,牛鬼蛇神混子引爭議

26年央視春晚嘉賓名單曝光,牛鬼蛇神混子引爭議

杜鱂手工制作
2026-01-06 18:48:05
內(nèi)訌爆發(fā)!曝快船兩大核心矛盾激化!公開指責(zé),表達(dá)不滿!

內(nèi)訌爆發(fā)!曝快船兩大核心矛盾激化!公開指責(zé),表達(dá)不滿!

King迪哥侃球
2026-01-11 21:58:15
一位大爺?shù)穆糜握栈鹆耍【W(wǎng)友辣評(píng):抑制了我的旅游欲

一位大爺?shù)穆糜握栈鹆?!網(wǎng)友辣評(píng):抑制了我的旅游欲

攝影技巧入門教程
2026-01-08 15:37:56
親眼目睹藏族少女天葬之行,參加全過程后心悸:顛覆我對(duì)生死的認(rèn)知

親眼目睹藏族少女天葬之行,參加全過程后心悸:顛覆我對(duì)生死的認(rèn)知

古怪奇談錄
2025-09-09 14:36:35
廣西壯族自治區(qū)人民政府辦公廳關(guān)于印發(fā)《廣西深入實(shí)施“人工智能+”三年行動(dòng)方案(2026—202...

廣西壯族自治區(qū)人民政府辦公廳關(guān)于印發(fā)《廣西深入實(shí)施“人工智能+”三年行動(dòng)方案(2026—202...

新浪財(cái)經(jīng)
2026-01-11 12:30:01
盧比奧一語道破委內(nèi)瑞拉荒誕真相:馬杜羅的江山,古巴人的管家

盧比奧一語道破委內(nèi)瑞拉荒誕真相:馬杜羅的江山,古巴人的管家

老馬拉車莫少裝
2026-01-05 21:46:08
特朗普的眼光簡直是超越了時(shí)代。

特朗普的眼光簡直是超越了時(shí)代。

忠于法紀(jì)
2026-01-10 19:40:40
徐江:王鈺棟跟不上米特里策的節(jié)奏,若去歐洲要提高足球理解

徐江:王鈺棟跟不上米特里策的節(jié)奏,若去歐洲要提高足球理解

懂球帝
2026-01-11 15:27:09
為人處世一定要記住,不要去給別人買,你舍不得給自己買的東西。

為人處世一定要記住,不要去給別人買,你舍不得給自己買的東西。

詩詞中國
2026-01-09 19:58:54
特朗普發(fā)出最后通牒!直撲中國老朋友古巴!中俄能否阻止美國?

特朗普發(fā)出最后通牒!直撲中國老朋友古巴!中俄能否阻止美國?

聞識(shí)
2026-01-12 02:53:03
劉亦菲為什么膝蓋有瘀傷?

劉亦菲為什么膝蓋有瘀傷?

TVB的四小花
2026-01-12 01:33:39
梅西:我媽媽更喜歡哥哥,所以她當(dāng)年沒留在巴塞羅那陪我!

梅西:我媽媽更喜歡哥哥,所以她當(dāng)年沒留在巴塞羅那陪我!

歷史第一人梅西
2026-01-11 22:46:11
太突然!青島膠州一大機(jī)構(gòu)倒閉跑路!大批市民損失慘重...

太突然!青島膠州一大機(jī)構(gòu)倒閉跑路!大批市民損失慘重...

易點(diǎn)
2026-01-11 18:45:31
國服嫂子被傻狍子他們逼成精神病了

國服嫂子被傻狍子他們逼成精神病了

毒舌扒姨太
2026-01-11 22:11:01
馬斯克AI百科Grokipedia條目數(shù)突破600萬,已達(dá)英文維基百科86%

馬斯克AI百科Grokipedia條目數(shù)突破600萬,已達(dá)英文維基百科86%

IT之家
2026-01-11 15:08:19
周末大利空炸場!6家公司清倉式減持,最高減持2%,1起終止收購公告

周末大利空炸場!6家公司清倉式減持,最高減持2%,1起終止收購公告

股市皆大事
2026-01-11 20:24:59
山東3市發(fā)布最新人事任免,涉副市長

山東3市發(fā)布最新人事任免,涉副市長

濱州日?qǐng)?bào)
2026-01-11 09:20:54
2026-01-12 04:08:49
InfoQ incentive-icons
InfoQ
有內(nèi)容的技術(shù)社區(qū)媒體
11927文章數(shù) 51694關(guān)注度
往期回顧 全部

科技要聞

“我們與美國的差距也許還在拉大”

頭條要聞

美軍突襲委內(nèi)瑞拉俄制防空系統(tǒng)失聯(lián) 俄方回應(yīng)

頭條要聞

美軍突襲委內(nèi)瑞拉俄制防空系統(tǒng)失聯(lián) 俄方回應(yīng)

體育要聞

U23國足形勢:末輪不負(fù)泰國即確保晉級(jí)

娛樂要聞

留幾手為閆學(xué)晶叫屈?稱網(wǎng)友自卑敏感

財(cái)經(jīng)要聞

外賣平臺(tái)"燒錢搶存量市場"迎來終局?

汽車要聞

2026款宋Pro DM-i長續(xù)航補(bǔ)貼后9.98萬起

態(tài)度原創(chuàng)

時(shí)尚
本地
健康
手機(jī)
公開課

當(dāng)一個(gè)57歲的女人,決定從零開始

本地新聞

云游內(nèi)蒙|“包”你再來?一座在硬核里釀出詩意的城

這些新療法,讓化療不再那么痛苦

手機(jī)要聞

曝三星Galaxy S26 Ultra支持?eSIM,新機(jī)下月見

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進(jìn)入關(guān)懷版