Drone與Jenkins舉例分析

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

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括長豐網(wǎng)站建設(shè)、長豐網(wǎng)站制作、長豐網(wǎng)頁制作以及長豐網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,長豐網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到長豐省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

介紹

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

Drone是一個(gè)廣受歡迎的開源CI工具。它其實(shí)是原生Docker,所有的進(jìn)程都在容器內(nèi)進(jìn)行。這使得Drone非常適合像Kubernetes這樣的平臺(tái),因?yàn)樵贙ubernetes上啟動(dòng)容器很簡單。

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

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

1、平臺(tái)安裝和管理

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

3、Pipeline細(xì)節(jié)

最后,我會(huì)對Jenkins及Drone進(jìn)行一個(gè)整體的比較。其實(shí)通常情況下,這樣的對比并不會(huì)有一個(gè)明確的贏家。因?yàn)殡m然這二者在本質(zhì)上有一些相同之處,但不同的工具仍然會(huì)有不同的核心焦點(diǎn)。

前期準(zhǔn)備

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

在設(shè)置Drone時(shí),我曾遇到過一個(gè)問題:Drone與源代碼控制庫之間是一種被動(dòng)關(guān)系。這意味著Drone是通過與Github建立網(wǎng)絡(luò)連接的方式來通知事件的。默認(rèn)行為是建立在push和PR合并事件的基礎(chǔ)上的。為使Github能夠正確地通知Drone,服務(wù)器必須對全世界開放。當(dāng)然,如果有其他內(nèi)部供應(yīng)鏈管理軟件,情況可能會(huì)有所不同,但這不適用于本文示例的情況。為此,我在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中,每個(gè)作業(yè)都可以獨(dú)立于另一個(gè)作業(yè)來定義其與源控制的關(guān)系。如此一來,用戶就可以從包括Github、Gitlab、svn等各種不同的庫中提取源代碼。而截至目前,Drone只支持基于git的開發(fā)項(xiàng)。

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

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

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

Drone與Jenkins舉例分析

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

Drone與Jenkins舉例分析

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

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

任務(wù)2 - 插件

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

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

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

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

任務(wù)3

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

Drone與Jenkins舉例分析

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

Drone與Jenkins舉例分析

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

到此,關(guān)于“Drone與Jenkins舉例分析”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)站名稱:Drone與Jenkins舉例分析
分享網(wǎng)址:http://muchs.cn/article0/ppjsio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器微信公眾號(hào)自適應(yīng)網(wǎng)站、企業(yè)建站、響應(yīng)式網(wǎng)站、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)