這個程序員如何阻止了Bug代碼的提交併改變整個DevOps世界?

【CSDN 編者按】Jenkins 是基於 Java 開發的一種持續集成工具,能夠幫助項目實現高度的工程化,而它的前身則是 Hudson。2004年,Sun 公司的 Java 程序員川口耕介為了讓同事的工作更輕鬆些,創立了持續集成工具 Hudson,但這之後,這個工具打敗了許多歷史悠久的框架,並在 2007 年開始逐漸取代 CruiseControl 和其他開源構建工具的江湖地位。但在 2010 年 Oracle 對 Sun 收購帶來了 Hudson 所有權問題後,社區採納了將項目名稱從“Hudson”改為“Jenkins”的投票結果,於 2011 年創建了 Jenkins 項目——99% 的 Hudson 開發人員都轉向了 Jenkins 開發,包括最初的創建者川口清子。現在,Jenkins 已經支持超過 1000 個插件,並憑藉多樣而強大的插件成了整個開發生命週期中的一箇中心點。本文中則採訪了 Jenkins 之父(現任 CloudBees CTO)川口清子,解答了關於 Jenkins 的來歷和未來計劃等問題。


這個程序員如何阻止了Bug代碼的提交併改變整個DevOps世界?


以下為譯文:

在對著一大群 DevOps 愛好者發表了一番激動人心的演說之後,Jenkins 項目創立者(現任 CloudBees CTO)的川口清子花了些時間,給我們解答了 Jenkins 的來歷、未來計劃、以及他是不是真的有時間參與其中等問題。


1.創立持續集成工具 Hudson


最後一點的答案是:沒有太多時間。但這也並不一定是壞事,因為川口告訴我們,他曾經有個習慣,就是留下很多 bug。2004 年他在 Sun 微系統公司做 Java 程序員時,他經常收到同事打來的電話。

“他們會突然發現整個項目無法編譯了,或者出了別的錯誤。他們給我打電話說:‘我看到上次修改是你做的。你能看看是怎麼回事嗎?’通常原因都是我犯的錯誤。”

就像任何優秀的程序員一樣,川口決定用代碼來解決這個問題。“我覺得這種事情出過太多次了,所以我決定寫個程序。”

這個程序就是後來的 Hudson,一個持續集成工具,之後這個工具打敗了許多歷史悠久的框架,比如基於 Java 的 CruiseControl 等。

但是,川口並沒有考慮過競爭的問題,他只想讓同事的工作更輕鬆些。有了 Hudson,程序員就可以從自己的任務列表上去掉構建和集成這兩項工作。“我們能夠轉交給自動化和計算機的任務越多越好。”

但是,川口已經注意到 Sun 開始走下坡路了。“許多優秀的人都離開了。”他說,但由於有了 Hudson,新入職的人培訓速度加快了。他說,“我發現,這也是 Hudson 降低人們思想負擔的一種途徑,能讓新人專注學習他們應該學習的東西,從而更快地提高生產力。”


2.走向開源


受到當時 Sun 開源部分源代碼的啟發,也因為這個項目已經變得過於龐大,無法再用個人時間維護,於是川口決定將項目開源。

“嗯,對於我來說這個過程非常自然。實際上我甚至覺得要是不開源就根本不可能實現現在的程序……而且,當時在 Sun 微系統公司,我們也在嘗試在開源的基礎上開展一切工作。”

川口對於項目開源的結果非常滿意:“感覺就像建個所有人都能享受的大帳篷。人們在交換想法的同時改進想法,而交換想法的最好方式就是讓更多的代碼開源。”


3.出任 CTO


Sun 的逝去眾人皆知。公司於 2010 年被 Oracle 收購,Hudson 這個名字也被收為註冊商標。但是,代碼早已經分叉,項目於 2011 年以 Jenkins 的名義繼續進行。而 Hudson 歸屬於 Oracle,後來交給了 Eclipse 基金會,並最終於 2017 年被棄用。

由於對 Oracle 感到失望,川口在 2011 年以 InfraDNA 的形式開始對 Hudson 提供支持。同年晚些時候,CloudBees 招募了川口,並任命他為 Jenkins 專家的 CTO。

對於川口來說,成為 CTO 的體驗很不錯。“CTO 是最奇怪的角色。這個角色定義得並不好……我發現過去將近十年內,我的角色經常發生變化……我必須找出自己的定位。我曾經因此感到十分焦慮,但我現在很喜愛自己的角色。”


4.關於 Jenkins 和 CloudBees 的未來


作為 CTO,川口承認他被各種選擇“慣壞了”。雖然他這些日子在 Jenkins 項目上花的時間少了,但他表示“我能選擇的每件事情都很有趣。與客戶交涉很有趣,寫代碼也很有趣,孵化新項目更加有趣。”

關於未來,川口對於 2019 年即將出現的合規和治理模型感到十分興奮,這個模型可以讓管理員在不滿足特定條件的情況下停止某個管線。這個模型對於需要合規的企業非常有吸引力。

談到這些,他說:“合規和治理實際上非常符合我的心意。我認為,大型企業無法快速前進的主要原因就在於此。”

“所以,我認為我們可以幫助他們在軟件開發方面做得更好,就像我們給世界帶來了重大影響一樣。”

川口關心的另一個領域是測試。測試是 CI/CD 過程中重要的一個步驟(至少它鼓勵了人們去寫更多的測試)。但是他擔心,雖然有“更多的測試能讓軟件開發變得更乾淨……但並沒有太多規則來評價這些測試的質量如何。”

“通常,在進入產品前變更的驗證絕大部分時間都被測試佔據了。”

測試用例的自動化生成依然是個難題。川口知道利用機器學習能找出錯誤,但這種過程目前依賴於自動化。相比之下,他更感興趣的是根據過去的成功和失敗的執行產生的大量數據來安排測試的運行順序。

此外,當然也需考慮最終用戶。川口注意到,他訪問過的一些公司採取了這樣的流程:將一小部分產品流量作為最後一個測試階段,但必須強調,這種流程必須非常謹慎,“以免影響到客戶”。


5.最後一點秘籍


川口的作品對於開發社區的影響是不可否認的。雖然 Jenkins 之父的參與減少了,但他依然認為“即使在十年以後,Jenkins 社區依然存在自我進化的能力。”

社區帶來的持續不斷的開發和重新發明讓他對該框架充滿了信心。“我覺得這正是整個 Jenkins 項目的秘籍。它能夠不斷重新定義自己。”

英文:How one programmer's efforts to stop checking in buggy code changed the DevOps world鏈接:https://www.theregister.co.uk/2018/11/09/jenkins_interview/作者:Richard Speed譯者:彎月

徵稿啦

CSDN 公眾號秉持著「與千萬技術人共成長」理念,不僅以「極客頭條」、「暢言」欄目在第一時間以技術人的獨特視角描述技術人關心的行業焦點事件,更有「技術頭條」專欄,深度解讀行業內的熱門技術與場景應用,讓所有的開發者緊跟技術潮流,保持警醒的技術嗅覺,對行業趨勢、技術有更為全面的認知。

如果你有優質的文章,或是行業熱點事件、技術趨勢的真知灼見,或是深度的應用實踐、場景方案等的新見解,歡迎聯繫 CSDN 投稿,聯繫方式:微信(guorui_1118,請備註投稿+姓名+公司職位),郵箱([email protected])。


分享到:


相關文章: