溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Drone與Jenkins舉例分析

發(fā)布時間:2021-12-13 15:31:04 來源:億速云 閱讀:218 作者:iii 欄目:云計算

這篇文章主要介紹“Drone與Jenkins舉例分析”,在日常操作中,相信很多人在Drone與Jenkins舉例分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Drone與Jenkins舉例分析”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

介紹

多年來,Jenkins一直是行業(yè)標(biāo)準(zhǔn)的CI工具。它包含了許多功能,在其生態(tài)系統(tǒng)中有近1000個插件,對于那些推崇簡單的人來說,這可能令人望而生畏。Jenkins在容器出現(xiàn)之前就已存在,不過它還是很適合容器環(huán)境的。但也不得不說,以前Jenkins并沒有給予容器什么特殊關(guān)注,它并沒有很致力于讓容器變得更好,不過現(xiàn)在Blue Ocean和pipeline的出現(xiàn)和發(fā)展讓這一情況有了很大改觀。

Drone是一個廣受歡迎的開源CI工具。它其實是原生Docker,所有的進程都在容器內(nèi)進行。這使得Drone非常適合像Kubernetes這樣的平臺,因為在Kubernetes上啟動容器很簡單。

Rancher容器管理平臺對Drone和Jenkins都能提供優(yōu)秀的支持,用戶通過一個自動化的過程即可方便快速地創(chuàng)建Kubernetes集群。我用Rancher 1.6在GCE上部署了K8s 1.8集群,過程之簡單簡直令人驚喜。

本文將把Drone部署在Kubernetes(Rancher)上,并將從以下三個方面比較Drone與Jenkins:

1、平臺安裝和管理

2、插件生態(tài)系統(tǒng)

3、Pipeline細節(jié)

最后,我會對Jenkins及Drone進行一個整體的比較。其實通常情況下,這樣的對比并不會有一個明確的贏家。因為雖然這二者在本質(zhì)上有一些相同之處,但不同的工具仍然會有不同的核心焦點。

前期準(zhǔn)備

在開始之前,我們需要先完成一些設(shè)置工作,包括將Drone設(shè)置為具有Github帳戶的授權(quán)Oauth3應(yīng)用程序,這部分的工作可以參考Drone的官方技術(shù)文檔。

在設(shè)置Drone時,我曾遇到過一個問題:Drone與源代碼控制庫之間是一種被動關(guān)系。這意味著Drone是通過與Github建立網(wǎng)絡(luò)連接的方式來通知事件的。默認行為是建立在push和PR合并事件的基礎(chǔ)上的。為使Github能夠正確地通知Drone,服務(wù)器必須對全世界開放。當(dāng)然,如果有其他內(nèi)部供應(yīng)鏈管理軟件,情況可能會有所不同,但這不適用于本文示例的情況。為此,我在GCE上設(shè)置了我的Rancher服務(wù)器,以便它可以從Github.com訪問。

和其它Kubernetes應(yīng)用程序一樣,從容器中安裝Drone需要通過一系列部署文件。我調(diào)整了在repo中找到的那些部署文件。在配置映射規(guī)范文件中,我們需要修改若干值。也就是說,我們需要為我們的賬戶設(shè)置特定的、與Github相關(guān)的值。我們將從設(shè)置步驟中獲取客戶端密鑰,并將密鑰放入該文件以及授權(quán)用戶的用戶名中。通過Drone的密鑰文件,我們可以將Github密碼置于適當(dāng)處。

Jenkins與源代碼的交互方式則與Drone的方式很不一樣。在Jenkins中,每個作業(yè)都可以獨立于另一個作業(yè)來定義其與源控制的關(guān)系。如此一來,用戶就可以從包括Github、Gitlab、svn等各種不同的庫中提取源代碼。而截至目前,Drone只支持基于git的開發(fā)項。

與此同時,不要忘記了Kubernetes集群!Rancher可以輕松啟動和管理Kubernetes集群。本文使用的是最新的穩(wěn)定版Rancher 1.6。然而,Rancher 2.0與Rancher 1.6安裝的信息和步驟是一樣的,因此,如果您想嘗試使用更新的Rancher也未嘗不可。

任務(wù)1 - 安裝和管理

在Kubernetes和Rancher上啟動Drone,就像復(fù)制粘貼一樣簡單。使用默認的K8s儀表盤啟動文件,從命名空間和配置文件開始依次上傳,Drone就可以開始運行了。[您可在此找到部分我使用到的部署文件:https://github.com/appleboy/drone-on-kubernetes/tree/master/gke]。我從庫中拉取了鏡像并進行了本地的編輯。該repo屬于Drone貢獻者所有,包括有關(guān)如何啟動GCE以及AWS的說明。我們在這里唯一需要的只是Kubernetes的yaml文件。要進行復(fù)制,只需使用您的特定值編輯ConfigMap文件即可。我的其中一個文件的示例如下:

Drone與Jenkins舉例分析

Jenkins也可以依此方式啟動,由于它可以部署在Docker容器中,因此您可以構(gòu)建一個類似的部署文件并在Kubernetes上啟動。如下所示,該文件取自Jenkins CI服務(wù)器的GCE示例repo。

Drone與Jenkins舉例分析

啟動Jenkins也很簡單。鑒于Docker和Rancher自身的簡單易用性,若您想要啟動Jenkins,只需將一組部署文件粘貼到儀表板中即可。我的首選方法是使用Kubernetes儀表板進行所有管理??梢灾饌€上傳Jenkins文件,讓服務(wù)器啟動并運行。

Drone Server是通過在啟動階段設(shè)置的配置文件來進行管理的。它必須連接到Github,就意味著要訪問庫的話,需要添加OAuth3 token,以及(在本文示例中)需要用戶名和密碼。后期想要做修改,就需要通過Github授予組織訪問權(quán)限,或者用新憑據(jù)來重啟服務(wù)器。這么做難免會對開發(fā)工作帶來影響,因為這意味著Drone不能處理多個源。而正如我們前文提到的,Jenkins在這一方面會好一些,它允許任何數(shù)量的源repos,但要注意,每個作業(yè)只能使用一個源。

任務(wù)2 - 插件

Drone插件的配置和管理非常簡單。事實上,要成功啟動一個Drone的插件,你需要做的事情并不多。與Jenkins相比,Drone的生態(tài)系統(tǒng)要小得多,但幾乎所有可用的主要工具在Drone中都有插件可用。大多數(shù)主要的云提供商都有插件,并且與流行的源代碼控制repo相集成。如前所述,可以將Drone容器視作“頭等公民”,這意味著每個插件和執(zhí)行的任務(wù)都是一個容器。

Jenkins是毫無爭議的插件之王。大多數(shù)情況下,沒有什么任務(wù)是Jenkins的插件完成不了的。Jenkins插件的可選擇范圍非常廣,可供使用的插件約有1000個,但有時難就難要在從一系列看上去相似的插件中確定哪個才是最佳選擇。

Drone有用于構(gòu)建push和鏡像的docker插件,也有用于部署集群的AWS和K8s插件等各種插件。由于Drone平臺推出的時間短,它的插件比Jenkins少得多。然而,這并不影響它們的有效性和易用性。drone.yml文件中的一個簡單節(jié)無需其他輸入就能自動下載、配置和運行選定的插件。此外,由于Drone與容器的關(guān)系,每個插件都保存在一個鏡像中,不需要再添加額外項進行管理。如果插件創(chuàng)建者完成了他們的工作, 所有的內(nèi)容都將包含在該容器中,用戶再無需管理任何依賴關(guān)系。

當(dāng)我為簡單節(jié)點應(yīng)用程序構(gòu)建drone.yml文件時,添加Docker插件非常簡單,只需要幾行代碼,鏡像就構(gòu)建好了,并將其push到我選擇的Dockerhub repo上。在下一節(jié)中,您可以看到標(biāo)有docker的部分。本節(jié)是配置和運行插件以構(gòu)建和推動Docker鏡像所需的全部內(nèi)容。

任務(wù)3

最終任務(wù)是任何CI系統(tǒng)的基礎(chǔ)。Drone和Jenkins都旨在構(gòu)建應(yīng)用程序。最初,Jenkins是針對java應(yīng)用程序構(gòu)建的,但多年來,該范圍已經(jīng)擴展到任何可以編譯和執(zhí)行的代碼。Jenkins甚至在新的管道和cron-job方面都游刃有余。然而,盡管它非常適合容器生態(tài)系統(tǒng),但仍舊不是原生容器。

Drone與Jenkins舉例分析

相比之下,這是同一應(yīng)用的Jenkinsfile。

Drone與Jenkins舉例分析

雖然這個例子解釋起來很冗長,但是您可以看到,構(gòu)建Docker鏡像可能比Drone更復(fù)雜,而且還不包括Jenkins和Docker之間的交互。因為Jenkins不是原生Docker,所以必須提前配置代理以實現(xiàn)與Docker守護進程正確交互。 這可能會令人不解,但正是Drone的發(fā)展方向。Drone已經(jīng)在Docker上運行了,它的任務(wù)也在同一Docker上運行。

到此,關(guān)于“Drone與Jenkins舉例分析”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI