能夠從新代碼中獲得即時反饋很重要。你獲得反饋的速度越快,問題越早得到解決。
獲得反饋的一種常見方法是在新代碼之后運行測試,但這會導致其他問題。當代碼正在編譯並且正在運行測試時,開發人員無法在測試完成之前繼續工作。
Jenkins 通過提供持續集成功能解決了該問題。合並新代碼后,Jenkins 可以自動進行構建,運行測試和部署應用程序。
這篇文章將介紹什么是 Jenkins,以及使用它的利弊。
什么是 Jenkins
Jenkins®是一個開源的,用 Java 編寫的開源持續集成(CI)
服務器,可以自托管以自動執行任何項目的構建周期。Jenkins 為軟件項目提供 CI 服務,可以通過命令行或 Web 應用程序服務器啟動它。
你可以設置 Jenkins 來監視 GitHub,Bitbucket 或 GitLab 等地方的任何代碼更改,並使用 Maven 或 Gradle 等工具自動進行構建;可以利用 Docker 和 Kubernetes 等容器技術,啟動測試,然后在生產中執行回滾或前滾之類的操作。
什么是持續集成?
在詳細了解 Jenkins 如何提供 CI 之前,我相信了解什么是 CI 很重要。CI 是一種開發實踐,其中開發人員一天幾次將代碼集成到共享存儲庫中。當有人將新代碼推送到共享存儲庫中時,測試會在非開發人員(測試人員)的計算機上自動運行。
CI 的工作流程可為你提供快速反饋。如果更改中斷了構建,則在將代碼提交到共享存儲庫后不久,你將知道。控制台還提供了詳細的日志消息,因此可以識別出哪些更改導致了構建失敗。另外,通過在 CI 服務器中使用公共存儲庫,你可以將構建部署通知到其他開發人員和測試人員。
與Jenkins的持續集成
Jenkins 在 CI 中大量使用,以允許代碼自動構建,部署和測試。讓我們考慮以下情況:先構建應用程序的完整源代碼,然后將其部署在測試服務器上進行測試。這是開發軟件的理想方法,但是在實踐中,這是不實際的。開發人員將不得不暫停工作,直到獲得測試結果為止,這可能需要幾個小時。整個過程是手動的,因此可能會出現人為錯誤,這可能會浪費時間。
當然,在上述情況下,它會導致軟件交付緩慢和客戶不滿意。這導致對開發人員可以在其中觸發上述過程自動發生的需求。Jenkins 正是在這里發揮 CI 的作用。
使用 Jenkins,你可以將其連接到 Mercurial,SVN,Git 等代碼存儲庫。因此,所有開發人員要做的就是配置 Jenkins定期檢查存儲庫,並在有新內容時嘗試構建,測試和部署新代碼。這有助於節省大量開發人員的時間,使他們可以專注於自己的工作。
使用Jenkins 的優點
- Jenkins 是開源的(免費),並且擁有龐大的社區
- 有許多可用的插件使 Jenkins 易於使用
- Jenkins 用 Java 編寫,這意味着它是可移植的
- 開發人員可以在其他地方花費更多的時間:大多數集成和測試由自動化的構建和測試系統進行管理。
- 加快開發速度:大多數集成工作是自動完成的,從而減少了集成問題。從長遠來看,這可以在項目的整個生命周期中節省時間和金錢。
- 更高質量的軟件:可及早發現問題並立即解決。這樣可以使軟件保持可以隨時安全發布的狀態。
使用Jenkins 的缺點
- 成本和時間: Jenkins 必須在服務器上運行(成本),並且經常需要系統管理員的關注(時間)。你不能指望建立了詹金斯,然后讓它自己運行。該系統將需要經常更新和維護。
- 需要投入一些資金才能開始使用: 大多數團隊遇到的一些主要障礙是初始設置,拖延或先前嘗試建立 Jenkins的嘗試失敗。許多團隊都知道這是最佳做法,但是在進行更緊急的編碼工作時會忽略它。
- 測試可能會中斷: 需要實時更新,如果未更新它們,則這些測試將停止提供價值。