|NO.Z.00027|——————————|CloudNative|——|CI/CD&Jenkins_pipeline概述.V01|-------------------------------------------|Jenkins概述|
阿新 • • 發佈:2022-03-28
[CloudNative:CI/CD&Jenkins_pipeline概述.V01] [Applications.CloudNative] [|Jenkins歷史|Jenkins特性|為什麼Jenkins受歡迎|Jenkins特性|Jenkins說明|CI/CD流程|]
一、Jenkins概述
### --- Jenkins歷史 ~~~ # Jenkins的前身是Hudson,採用JAVA編寫的持續整合開源工具。 ~~~ Hudson由Sun公司在2004年啟動,第一個版本於2005年在java.net釋出。 ~~~ 2007年開始Hudson逐漸取代CruiseControl和其他的開源構建工具的江湖地位。 ~~~ 在2008年的JavaOne大會上在開發者解決方案中獲得杜克選擇大獎(Duke's Choice Award)。
~~~ # 在2010年11月期間,因為Oracle對Sun的收購帶來了Hudson的所有權問題。
~~~ 主要的專案貢獻者和Oracle之間,儘管達成了很多協議,但有個關鍵問題就是商標名稱“Hudson”。
~~~ 甲骨文在2010年12月宣告擁有該名稱並申請商標的權利。
~~~ 因此,2011年1月11日,有人要求投票將專案名稱從“Hudson”改為“Jenkins”。
~~~ 2011年1月29日,該建議得到社群投票的批准,建立了Jenkins專案。
二、為什麼Jenkins更受大家歡迎:由開發者主導、面向開發者~~~ # 2011年2月1日,甲骨文表示,他們打算繼續開發Hudson,並認為Jenkins只是一個分支,而不是重新命名。 ~~~ 因此,Jenkins和Hudson繼續作為兩個獨立的專案,每個都認為對方是自己的分支。 ~~~ 到2013年12月,GitHub上的Jenkins擁有567個專案成員和約1,100個公共倉庫,與此相對的Hudson有32個專案成員和17個公共倉庫。 ~~~ 到現在兩者的差異更多,應該說Jenkins已經全面超越了Hudson。 ~~~ 此外,大家可能是出於討厭Oracle的情緒,作為Java開發者天然地應該支援和使用Jenkins。 ~~~ # 後面Hudson被Oracle捐給了Eclipse基金會,所以右邊這老頭有個Eclipse的光環加持。
### --- 為什麼Jenkins更受大家歡迎:由開發者主導、面向開發者
~~~ 首先,曾經是Hudson開發人員中的99%都轉向了Jenkins的開發,
~~~ 其中包括最初的建立者川口清子(Kohsuke Kawaguchi)。
~~~ 他獨自寫了大部分程式碼,並且他的經驗是Hudson各種高階特性的關鍵來源。
~~~ Jenkins的開發社群更活躍。所以對很多人而言,從血統上看Hudson是後孃養的,Jenkins才是親生的!
### --- 治理和社群 ~~~ Jenkins開發社群的管理是很開放的。 有一個獨立的董事會,其中包括來自Yahoo! ~~~ CloudBees,Cloudera和Apture等多家公司的長期以來的Hudson開發人員。 ~~~ 每次會議後,他們定期舉行治理會議並發表意見,徵詢公眾意見。 ~~~ 他們還將所有程式碼都捐贈給公共利益軟體組織(SPI),以確保社群持續開放。
### --- 穩定性
~~~ 分手後,針對Jenkins的貢獻不斷持續增加,Jenkins制定了新的長期支援釋出線。
~~~ 社群定大約每三個月釋出一次穩定版本的補丁。
### --- 外掛的平臺
~~~ # Jenkins支援超過1000個外掛。
~~~ 憑藉多樣而強大的外掛Jenkins成了整個開發生命週期中的一箇中心點。
~~~ # 到了2017年,兩者的發展差異更大了。
~~~ Jenkins應該說是CI工具中公認的老大,而Hudson不僅不能與Jenkins比,跟其他CI工具比也沒什麼優勢,完全沉淪了。
~~~ # slant網站對一系列CI工具做了一次對比,其中Jenkins和Hudson的情況如下。
三、Jenkins特性
### --- 基本面問題
~~~ | 工具 | Jenkins | Hudson |
~~~ | ------------------ | ------- | ------ |
~~~ | 最好的CI工具 | 1 | 22 |
~~~ | 最好的JAVA CI工具 | 1 | 7 |
~~~ | 最好的自託管CI工具 | 3 | 4 |
### --- 其他支援
~~~ | 工具 | Jenkins | Hudson |
~~~ | ------------------------ | ------- | ------ |
~~~ | 對Window支援最好 | 1 | 無排名 |
~~~ | 最好的開源CI工具 | 1 | 無排名 |
~~~ | 對BitBucket的支援 | 2 | 無排名 |
~~~ | 對移動開發者支援最好的CI | 4 | 無排名 |
### --- 更多特徵
~~~ | Jenkins | Hudson |
~~~ | ------------------------------------------------------------ | ----------------------------------------- |
~~~ | 免費且開源 | 與Jenkins共享了很多程式碼,安裝還是挺簡單的 |
~~~ | 關鍵的環境變數可以安全儲存 | |
~~~ | 支援多個SCM,包括SVN, Mercurial, Git。集成了GitHub和Bitbucket | |
~~~ | 高度可配置 | |
~~~ | 資源和教程很多 | |
~~~ | 安裝執行簡單 | |
~~~ | 分散式的構建也能高效執行 | |
~~~ | 可跨平臺部署 | |
~~~ | 很多高質量的外掛 | |
~~~ | 得獎無數 | |
~~~ | 龐大的社群 | |
四、Jenkins說明### --- Jenkins功能
~~~ 持續的軟體版本釋出/測試專案。
~~~ 監控外部呼叫執行的工作。
### --- Jenkins 概念
~~~ Jenkins是一個功能強大的應用程式,允許**持續整合和持續交付專案**,
~~~ 無論用的是什麼平臺。這是一個免費的開源專案,可以處理任何型別的構建或持續整合。
~~~ 整合Jenkins可以用於一些測試和部署技術。Jenkins是一種軟體允許持續整合。
### --- Jenkins 目的
~~~ 持續、自動地構建/測試軟體專案。
~~~ 監控軟體開放流程,快速問題定位及處理,提提高開發效率。
### --- Jenkins 特性
~~~ 開源的java語言開發持續整合工具,支援CI,CD。
~~~ 易於安裝部署配置:可通過yum安裝,或下載war包以及通過docker容器等快速實現安裝部署,可方便web介面配置管理。
~~~ 訊息通知及測試報告:整合RSS/E-mail通過RSS釋出構建結果或當構建完成時通過e-mail通知,生成JUnit/TestNG測試報告。
~~~ 分散式構建:支援Jenkins能夠讓多臺計算機一起構建/測試。
~~~ 檔案識別:Jenkins能夠跟蹤哪次構建生成哪些jar,哪次構建使用哪個版本的jar等。
~~~ 豐富的外掛支援:支援擴充套件外掛,你可以開發適合自己團隊使用的工具,如git,svn,maven,docker等。
五、產品釋出流程
### --- 產品釋出流程
~~~ 產品設計成型 -> 開發人員開發程式碼 -> 測試人員測試功能 -> 運維人員釋出上線
~~~ 持續整合(Continuous integration,簡稱CI)
~~~ 持續交付(Continuous delivery)
~~~ 持續部署(continuous deployment)
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)