本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

SIG Node CI 子專案慶祝測試改進兩週年

確保 SIG Node 上游程式碼的可靠性是一項持續的努力,需要許多貢獻者在幕後付出大量努力。Kubernetes、基礎作業系統、容器執行時和測試基礎設施的頻繁釋出導致了一個複雜的矩陣,這需要關注和持續投資才能“保持執行”。2020 年 5 月,Kubernetes 節點特殊興趣小組(“SIG Node”)為節點相關程式碼和測試組織了一個新的持續整合(CI)子專案。自成立以來,SIG Node CI 子專案每週都會舉行會議,甚至一整小時的時間通常也不足以完成所有錯誤、測試相關 PR 和問題的分類,並討論該小組內所有相關的正在進行的工作。

在過去的兩年裡,我們修復了阻止合併和阻止釋出的測試,由於減少了測試的片狀性,縮短了 Kubernetes 貢獻者拉取請求的合併時間。剛開始時,Node 測試作業的透過率只有 42%,透過我們的努力,現在我們確保了穩定的 >90% 的作業透過率。我們關閉了 144 個測試失敗問題,並僅在 kubernetes/kubernetes 中合併了 176 個拉取請求。我們還幫助子專案參與者提升了 Kubernetes 貢獻者階梯,新增了 3 名組織成員、6 名新評審員和 2 名新批准人。

Node CI 子專案是幫助新貢獻者開始使用 SIG Node 的一個容易入門的第一站。新貢獻者解決高影響力的錯誤和測試修復的門檻很低,儘管貢獻者要爬完整個貢獻者階梯還有很長的路要走:花了超過一年的時間才為該小組建立了兩個新的批准人。為 Kubernetes 節點及其測試基礎設施提供動力的所有不同元件的複雜性,要求開發人員在很長一段時間內持續投入,才能深入理解整個系統,無論是在高層次還是低層次的細節。

然而,我們有幾位固定貢獻者參加會議;我們的評審員和批准人池仍然很小。我們的目標是繼續增加貢獻者,以確保工作的可持續分配,而不僅僅是落在少數關鍵批准人身上。

SIG 內部子專案是如何形成、運作和工作的,這並不總是顯而易見的。每個子專案都對其贊助的 SIG 獨一無二,並根據該小組旨在支援的專案進行定製。作為一個歡迎了許多首次 SIG Node 貢獻者的團隊,我們想分享過去兩年的一些細節和成就,幫助揭開我們內部運作的神秘面紗,並慶祝所有敬業貢獻者的辛勤工作!

時間線

2020 年 5 月。SIG Node CI 小組於 2020 年 5 月 11 日成立,有超過 30 名志願者報名參加,旨在改善 SIG Node CI 訊號和整體可觀察性。Victor Pickard 專注於讓 testgrid 作業透過,當時寧廖建議圍繞這項工作成立一個小組,並提出了 原始小組章程檔案。SIG Node 主席贊助了小組的建立,Victor 擔任子專案負責人。Sergey Kanzhelev 不久後加入 Victor 擔任聯合負責人。

在啟動會議上,我們討論了首先要重點修復哪些測試,並討論了阻止合併和阻止釋出的測試,其中許多測試由於基礎設施問題或有缺陷的測試程式碼而失敗。

該子專案啟動了每週一小時的會議,討論正在進行的工作和分類。

2020 年 6 月。 Morgan Bauer、Karan Goel 和 Jorge Alarcon Ochoa 因其貢獻被認定為 SIG Node CI 小組的評審員,對子專案的早期階段提供了重要幫助。David Porter 和 Roy Yang 也加入了 SIG 測試失敗 GitHub 團隊。

2020 年 8 月。 所有阻止合併和阻止釋出的測試都通過了,但有一些不穩定現象。然而,所有 SIG Node 測試作業中只有 42% 是綠色的,因為有許多不穩定和失敗的測試。

2020 年 10 月。 Amim Knabben 因對子專案的貢獻成為 Kubernetes 組織成員。

2021 年 1 月。 隨著健康的預提交和關鍵定期作業透過,子專案討論了清理其餘定期測試並確保它們無故障透過的目標。

Elana Hashman 加入了該子專案,在 Victor 離開後主動幫助領導該專案。

2021 年 2 月。 Artyom Lukianov 因對子專案的貢獻成為 Kubernetes 組織成員。

2021 年 8 月。 在 SIG Node 成功執行 bug scrub 清理其積壓的 bug 後,會議範圍擴大到包括 bug 分類,以提高整體可靠性,在問題影響 CI 訊號之前預測問題。

子專案負責人 Elana Hashman 和 Sergey Kanzhelev 都被 SIG Node 和 SIG Testing 認可為所有節點測試程式碼的批准人。

2021 年 9 月。 在 Francesco Romani 主導的 1.22 版本中序列測試取得了顯著的去片狀化進展後,子專案設定了在 1.23 版本釋出日期前讓序列作業完全透過的目標。

Mike Miranda 因對子專案的貢獻成為 Kubernetes 組織成員。

2021 年 11 月。 整個 2021 年,SIG Node 沒有出現合併或釋出阻塞的測試失敗。許多過去版本中的不穩定測試在完全清理後從釋出阻塞儀表板中移除。

Danielle Lancashire 被認可為 SIG Node 子小組的測試程式碼評審員。

最終的節點序列測試已完全修復。序列測試包含許多具有破壞性和耗時的測試,這些測試容易出現片狀性且難以排查。在 1.23 版本凍結之前,最後的序列測試已修復,並且作業透過時沒有片狀性。

Slack announcement that Serial tests are green

1.23 版本因測試質量和 CI 訊號而受到特別表揚。SIG Node CI 子專案很自豪能夠為如此高質量的釋出做出貢獻,部分原因在於我們在 Node 及其他方面識別和修復片狀性所做的努力。

Slack shoutout that release was mostly green

2021 年 12 月。 在 1.23 版本釋出時,估計有 90% 的測試作業透過(高於 2020 年 8 月的 42%)。

Dockershim 程式碼從 Kubernetes 中移除。這影響了 SIG Node 近一半的測試作業,SIG Node CI 子專案迅速做出反應並重新定位了所有測試。SIG Node 是第一個完成 Dockershim 測試遷移的 SIG,為其他受影響的 SIG 提供了示例。絕大多數新作業在引入時都通過了,無需進一步修復。從 Kubernetes 移除 Dockershim 的工作仍在進行中。隨著我們發現更多對 Dockershim 的依賴,Dockershim 移除仍然存在一些問題,但我們計劃在 1.24 版本釋出時穩定所有測試作業。

統計資料

過去幾個月我們定期會議的出席者和子專案參與者

  • Aditi Sharma
  • Artyom Lukianov
  • Arnaud Meukam
  • Danielle Lancashire
  • David Porter
  • Davanum Srinivas
  • Elana Hashman
  • Francesco Romani
  • Matthias Bertschy
  • Mike Miranda
  • Paco Xu
  • Peter Hunt
  • Ruiwen Zhao
  • Ryan Phillips
  • Sergey Kanzhelev
  • Skyler Clark
  • Swati Sehgal
  • Wenjun Wu

kubernetes/test-infra 原始碼倉庫包含測試定義。僅該倉庫中 Node PR 的數量

  • 2020 年 PR(自 5 月起):183
  • 2021 年 PR:264

CI 看板上已分類的問題和 PR(包括從子小組範圍外分類)

  • 2020 年(自 5 月起):132
  • 2021: 532

未來

僅僅“保持執行”是一項艱鉅的任務,我們致力於改善這種體驗。我們正在努力簡化 SIG Node 的分類和審查流程。

具體來說,我們正在努力改進測試的組織、命名和跟蹤

我們還在不斷改進測試的可除錯性和去片狀化。

如果您對此感興趣,我們非常歡迎您加入我們!除錯測試失敗有很多值得學習的地方,它將幫助您熟悉 SIG Node 維護的程式碼。

您始終可以在 SIG Node 頁面找到有關該組的資訊。我們會在維護者專題會議上提供小組更新,例如 KubeCon + CloudNativeCon Europe 2021KubeCon + CloudNative North America 2021。加入我們的使命,保持 kubelet 和其他 SIG Node 元件的可靠性,並確保平穩順利的釋出!