3天學會Jenkins_1_Jenkin與CI(Continuous Integration,持續集成)?

轉載註明出處,歡迎關注微信小程序小白AI博客 微信公衆號小白AI或者網站 https://xiaobaiai.net

1 什麼是持續集成?

持續集成(Continuous Integration)即是發生在每一次的代碼提交後,立即開始軟件的構建(Build)和測試(Test),在一個擁有許多開發人員的大型項目中,一天中會多次提交,伴隨着每個提交代碼的構建和測試,如果測試通過,則測試構建以進行部署。如果部署成功,則代碼將推送到生產環境。提交(commit),構建(build),測試(test)和部署(deploy)是一個連續的過程,因此稱爲持續集成/部署。

持續集成流水線是一種功能強大的工具,由一組用於託管,監控,編譯和測試代碼或監控代碼更改的工具組成,比如:

  • 持續集成服務器有:Jenkins, Bamboo, CruiseControl, TeamCity等等
  • 源碼版本控制工具:GIT,CVS, SVN, Mercurial, Perforce, ClearCase等等
  • 編譯構建工具:Make, CMake, ANT, Maven, Ivy, Gradle等等
  • 自動測試框架:Selenium, Appium, TestComplete, UFT等等

在本文中,你將學會:

  • 什麼是持續集成?
  • 什麼是Jenkin?
  • Jenkin歷史
  • 爲什麼選擇Jenkins做持續集成服務器?
  • 持續集成的實際案例研究
  • 使用Jenkins的優點
  • 使用Jenkins的缺點

2 什麼是Jenkin?

Jenkins是一個開源的持續集成服務器,能夠編排一系列操作,用自動化方式幫助你實現持續集成過程。Jenkins完全用Java編寫。Jenkins是世界上廣泛使用的應用程序,安裝量約爲300k,並且日益增長。它是一個基於Web服務器的應用程序,需要像Apache Tomcat這樣的Web服務器。Jenkins變得如此受歡迎的原因在於它監督項目開發過程中出現的重複任務。例如,如果你的團隊正在開發項目,Jenkins將不斷測試你的項目,並在開發的早期階段向你顯示相關錯誤。

通過使用Jenkins,軟件公司可以加速他們的軟件開發過程,因爲Jenkins可以快速自動化構建和測試。Jenkins通過構建,測試,文檔化軟件,部署和軟件開發生命週期的其他階段來支持軟件的完整開發生命週期。

3 Jenkin歷史

  • Kohsuke Kawaguchi, 一個Java開發者,在SUN Microsystems工作,厭倦了重複構建代碼和修復錯誤。2004年,創建了一個名爲Hudson的自動化服務器,可自動構建和測試開發任務。
  • 2011年,擁有Sun Microsystems的Oracle與Hudson開源社區存在爭議,因此分叉的Hudson將其重命名爲Jenkins。
  • Hudson和Jenkins都繼續獨立運作。但是在短時間內,Jenkins得到了了很多項目的應用並有大量開源貢獻者共享代碼,而Hudson只剩下32個應用項目。隨着時間的推移,Jenkins變得更受歡迎,而Hudson則不再受到維護。

4 爲什麼選擇Jenkins做持續集成服務器?

有些人可能會認爲開發軟件的老式方法是更好的方法。讓我們通過以下示例瞭解CI與Jenkins的優勢。

讓我們想象一下,大約有10個開發人員在共享存儲倉庫上工作。一些開發人員在25天內完成任務,而其他人則需要30天才能完成任務。

不使用Jenkins 使用Jenkins後
一旦所有開發人員完成了他們分配的編碼任務,他們就會同時提交他們的代碼。稍後,將進行測試和部署。 代碼提交已建立,測試周期非常罕見,並且在多天後完成了單個構建 一旦Developer提交代碼,代碼就會構建並測試。Jenkin將在白天多次構建和測試代碼;如果構建成功,則Jenkins會將源代碼部署到測試服務器並通知部署團隊;如果構建失敗,那麼Jenkins會將錯誤通知給開發人員團隊。
由於代碼是一次性構建的,一些開發人員需要等到其他開發人員完成編碼才能檢查他們的構建 代碼是在任何Developer提交後立即構建的。
隔離,檢測和修復多次提交的錯誤並不是一件容易的事情。 由於代碼是在每次提交單個開發人員之後構建的,因此很容易檢測到哪些代碼導致構建失敗
代碼構建和測試過程完全是手動的,因此存在很多失敗的可能性。 自動構建和測試過程可節省時間並減少缺陷。
修復並測試所有錯誤後,才能部署代碼。 每次成功構建和測試後都會部署代碼。
開發週期緩慢 開發週期很快。

用戶可以更輕鬆地使用新功能。
增加利潤。

5 持續集成的實際案例研究

我相信大家都知道諾基亞的舊手機。諾基亞曾經實施過稱爲夜間構建的程序。在白天多次提交多個開發人員後,每晚都會構建軟件。由於該軟件僅在一天內構建一次,因此在大型代碼庫中隔離,發現和修復錯誤是一件非常大的難事。

後來,他們採用了持續集成方法,一旦開發人員提交了代碼,就會構建並測試該軟件,如果檢測到任何錯誤,相應的開發人員可以快速修復缺陷。

6 Jenkins插件

默認情況下,Jenkins提供一組有限的功能。如果你想在Jenkins中安裝Git等版本控制工具集成,那麼就需要安裝與Git相關的插件。實際上,爲了集成Maven,Amazon EC2等工具,你也需要在Jenkins中安裝相應的插件。

7 使用Jenkins的優點

  • Jenkins由社區管理,非常開放。每個月,他們都會舉行公開會議並接受公衆的意見,以促進Jenkins項目的發展。
  • 到目前爲止,Github上大約有4000多個issues被關閉,500多個貢獻者,10000+star,該項目每3個月發佈一次穩定版本,每個月都會有小版本發佈
  • 隨着技術的發展, Jenkins也是如此。到目前爲止,Jenkins在其插件數據庫中發佈了大約超過1000個插件。藉助插件,Jenkins變得更加強大,功能豐富。
  • Jenkins還支持基於雲的架構,因此你可以在基於雲的平臺中部署Jenkins
  • Jenkins之所以流行,是因爲它是由開發人員爲開發人員創建的。

8 使用Jenkins的缺點

儘管Jenkins是一個非常強大的工具,但是它也有它的缺陷:

  • 與當前的前端UI趨勢相比,它的界面過時且不便於用戶使用
  • 儘管Jenkins受到許多開發人員的喜愛,但維護它並不容易,因爲Jenkins在服務器上運行並需要一些技能作爲服務器管理員來監控其活動
  • 許多人沒有實現Jenkins的原因之一是由於難以安裝和配置Jenkins
  • 由於一些小的設置變化,連續集成會定期中斷。持續集成將暫停,因此需要一些開發人員的注意

9 總結

  • 在持續集成中,代碼提交後,軟件即刻構建和測試
  • Jenkins是一個開源的持續集成服務器,能夠協調一系列操作
  • 在沒有Jenkins之前,當所有開發人員完成他們分配的編碼任務時,他們過去常常同時提交他們的代碼,然後才進行測試和部署。
  • 在使用Jenkins之後,代碼構建並在開發者提交代碼後立即進行測試。Jenkin將在白天多次構建和測試代碼
  • 默認情況下,Jenkins提供一組有限的功能。如果你想將Jenkins安裝與Git等版本控制工具集成,那麼你需要安裝與Git相關的插件
  • Jenkins最大的優點是它由社區管理,該社區舉行公開會議並接受公衆對Jenkins項目開發的意見
  • Jenkin的最大特點是它的界面已經過時,與當前的UI趨勢相比不是用戶友好的

10 參考鏈接

  • https://jenkins.io/zh/
  • https://github.com/jenkinsci/jenkins
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章