GitLab中文版|如何使用極狐GitLab CI/CD實現Jenkins的遷移?
在解鎖極狐GitLab和Jenkins集成的N種方式中的示例可以看出,極狐GitLab大部分時間僅僅被當作源代碼托管服務,而代碼構建、測試、部署等都在Jenkins上面完成,也就是說“Most In Jenkins”。
Jenkins 的構建結果如下
整個構建的Groovy Pipeline代碼大體分為三部分,分別為代碼拉取、鏡像構建、應用部署。下面就從這三方面入手來用極狐GitLab CI/CD 逐一實現。
1、代碼拉取
對于Jenkins來講,拉取變更代碼的語法一般是:
需要配置拉取代碼的 ssh key 以及倉庫地址。而這一點在極狐GitLab 是極其簡單的,不需要做任何改變,默認會把代碼拉取存放到極狐GitLab Runner 構建器內,默認路徑是/builds/username/project-name。
2、鏡像構建
對于 Jenkins 來講,鏡像構建的代碼如下:
需要額外加一個withCredentials的語法,來把鏡像倉庫的用戶名和密碼傳遞過來。這需要借助Jenkins的Credentials插件,并且需要提前創建好對應的credentials。
而對于極狐GitLab來講,能更簡單一點,直接用login、build、push 三部曲就可以了。
3、應用部署
選擇 Kubernetes作為應用部署的基座。對于Jenkins而言,需要在Jenkins上安裝一個kubernetes的插件,然后做一些配置。
部署的 Pipeline Groovy 語句如下:
當然,極狐GitLab同樣需要和Kubernetes做一些集成,當中會涉及到一些極狐GitLab CI/CD 中與 Kubernetes 相關的預定義變量的使用,由于篇幅過大,這里不多做贅述。將Kubernetes集群相關的KUBE_URL、KUBE_CA_PEM等信息寫入極狐GitLab CI/CD 變量中,使用下面幾行代碼,即可完成應用的部署。
所以對于極狐GitLab 來講,僅僅用下面二十幾行代碼就能夠完成和上述Jenkins Job 一樣的功能。
構建結果如下:
最后可以在 Kubernetes 上面查看pod的狀態:
至此,最終實現了“All In JiHu GitLab”。
遷移總結
Jenkins 借助于豐富的插件來實現功能多樣的 CI/CD,但是插件的安裝、維護是一個不小的工作量,而且 Jenkins 本身也需要安裝和維護。一般公司都是有專門的人員或者團隊來進行整體的維護工作。
另外,現在流行的 Pipeline 的開發需要用到 Groovy 語法,在開發有新 Pipeline 上線的時候,一般是和 Jenkins 維護團隊進行溝通協作,來完成新功能的 Pipeline 開發,無形之中增加了溝通成本,當團隊增加的時候,還涉及到排期的問題。
而極狐GitLab 借助極狐GitLab Runner來實現極狐GitLab CI/CD,Runner是一個用go語言開發且開源的組件。其安裝方式和使用方式都是非常靈活的,支持多操作系統(后續為大家陸續揭秘),再配合豐富的極狐GitLab CI/CD變量魔法,可以能很方便的構建起完整的 CI/CD 系統。開發人員可以通過查看相應的文檔就能比較快的上手Pipeline的構建語法,從而可以自己來書寫Pipeline進行新功能的調試、部署、測試等。當然,最重要的一點就是,沒有額外的組件(除了Runner,如果不打算自己host Runner,那就連這點工作量也沒了)需要安裝,能夠極大的減少工作量。
這也就是極狐GitLab 開箱即用一體化DevOps平臺的好處之一,把繁雜、復雜的事情留給平臺,開發人員可以直接使用平臺的能力來完成業務的開發,這樣能夠極大的提升研發效能。