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

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

確保 SIG Node 上游程式碼的可靠性是一項持續性的工作,需要許多貢獻者在幕後付出大量努力。 Kubernetes、基礎作業系統、容器運行時和測試基礎架構頻繁發布,形成一個複雜的矩陣,需要關注和持續投入才能“維持運作”。 2020 年 5 月,Kubernetes 節點特殊興趣小組 (“SIG Node”) 組織了一個新的子專案,用於節點相關程式碼和測試的持續整合 (CI)。自成立以來,SIG Node CI 子專案每週舉行一次會議,即使整整一個小時通常也不足以完成所有錯誤的分類、與測試相關的 PR 和問題,以及討論子組內所有相關的持續工作。

在過去的兩年中,我們修復了合併阻止和發布阻止測試,由於減少了測試不穩定性,縮短了合併 Kubernetes 貢獻者提取請求的時間。當我們開始時,節點測試作業的通過率僅為 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 作業通過,當時 Ning Liao 建議圍繞這項工作成立一個小組,並提出了 原始小組章程文件。 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 月。 所有合併阻止和發布阻止測試都已通過,但存在一些不穩定性。但是,由於存在許多不穩定性和失敗的測試,因此只有 42% 的 SIG Node 測試作業是綠色的。

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

2021 年 1 月。 隨著健康的預提交和關鍵定期作業通過,子專案討論了其清理其餘定期測試並確保它們在沒有不穩定性的情況下通過的目標。

Elana Hashman 加入了子專案,在 Victor 離開後挺身而出協助領導。

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

2021 年 8 月。 在 SIG Node 成功運行 錯誤清理以清理其錯誤積壓後,會議範圍擴大到包括錯誤分類,以提高整體可靠性,在問題影響 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 原始碼儲存庫包含測試定義。僅該儲存庫中節點 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 組件的可靠性,並確保順利且平穩的版本發布!