1. 程式人生 > 其它 >|NO.Z.00027|——————————|CloudNative|——|CI/CD&Jenkins_pipeline概述.V01|-------------------------------------------|Jenkins概述|

|NO.Z.00027|——————————|CloudNative|——|CI/CD&Jenkins_pipeline概述.V01|-------------------------------------------|Jenkins概述|



[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專案。
~~~     # 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更受大家歡迎:由開發者主導、面向開發者
### --- 為什麼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)