基于Buildkit的Drone CI Runner實(shí)現(xiàn)

最近關(guān)注了在構(gòu)建領(lǐng)域非常有前景的兩個(gè)項(xiàng)目Buildkit和基于Buildkit的Earthly項(xiàng)目关翎,之前在公司一直推廣和使用Drone CI項(xiàng)目滋捶,也對(duì)其有過(guò)深入的研究垂涯,當(dāng)時(shí)就有個(gè)想法可不可以將Drone和Earthly結(jié)合起來(lái)鸵赫,同時(shí)利用他們特性和優(yōu)點(diǎn),說(shuō)干就干于是就有了drone-Runner-earthly這個(gè)項(xiàng)目。

drone-runner-earthly是以Buildkit作為運(yùn)行時(shí)的一個(gè)Runner實(shí)現(xiàn)酝静。使用基于Buildkit的Earthly項(xiàng)目节榜,而不是直接使用Buildkit的原因主要是Earthly對(duì)Buildkit進(jìn)行語(yǔ)法擴(kuò)展、功能擴(kuò)展别智,使用起來(lái)要更加方便和強(qiáng)大全跨。

將Earthly(Buildkit)作為運(yùn)行時(shí)的好處

  1. drone-Runner-earthly比Docker運(yùn)行時(shí)提供了更快的運(yùn)行速度,利用Earthly(Buildkit)的內(nèi)置的緩存技術(shù)亿遂,簡(jiǎn)化了CI/CD過(guò)程的緩存定義流程,提供了更好的緩存效率渺杉。

  2. Docker主要是為了運(yùn)行蛇数, Buildkit是為了構(gòu)建更接近CI/CD概念。

  3. 將其Earthly和Drone集成起來(lái)也相對(duì)簡(jiǎn)單是越,可直接通過(guò)將Earthly作為命令行工具的方式集成耳舅,不像Docker Runner那樣還要控制容器的生命周期和主動(dòng)拉取Docker容器的logs,帶來(lái)流程的復(fù)雜性倚评,相對(duì)會(huì)帶來(lái)不確定性和穩(wěn)定性問(wèn)題浦徊,而Earthly則已經(jīng)將這些工作封裝完成了,只需要提供需要執(zhí)行的target結(jié)構(gòu)就可以執(zhí)行并獲得結(jié)果和日志數(shù)據(jù)天梧。

  4. Buildkit可以組建大型群集提高構(gòu)建的可用性盔性、可靠性和性能,更好的應(yīng)對(duì)大規(guī)模并發(fā)構(gòu)建場(chǎng)景呢岗。

Buildkit簡(jiǎn)介

Buildkit對(duì)build architecture(構(gòu)建架構(gòu)冕香,如利用Dockerfile的鏡像構(gòu)建)的一個(gè)大的改革,是一個(gè)源代碼構(gòu)建工具后豫,輸出可以是鏡像可以是編譯后的代碼悉尾,或是tar等多種形式,不僅僅是一個(gè)鏡像構(gòu)建工具挫酿,其底層是利用Runc或者Containerd隔離的容器沙盒運(yùn)行環(huán)境來(lái)構(gòu)建源代碼等构眯。

Earthly簡(jiǎn)介

Earthly 是一個(gè)現(xiàn)代化的構(gòu)建工具,用來(lái)完成容器鏡像構(gòu)建早龟,和提供類(lèi)似Makefile的源代碼構(gòu)建功能惫霸,如官方文檔所說(shuō)的it's like Dockerfile and Makefile had a baby是Dockerfile和Makefile的孩子。

Earthly和Drone結(jié)合的實(shí)現(xiàn)方式

1.將Earthly作為Drone CI的Runner runtime拄衰,好處基于Drone yaml語(yǔ)法它褪,對(duì)于熟悉Drone的用戶(hù)不需要過(guò)多的學(xué)習(xí)負(fù)擔(dān)。

  1. 將每個(gè)step對(duì)應(yīng)Earthly target的方式翘悉,這需要同時(shí)熟悉Drone和Earthly茫打,利用了Drone控制條件。
  2. Drone Docker Runner運(yùn)行Earthly image方式,需要卷掛載和網(wǎng)絡(luò)的對(duì)應(yīng)配置老赤。
  3. 采用ssh方式轮洋,需要執(zhí)行安裝Earthly環(huán)節(jié),影響效率抬旺。

drone-Runner-Earthly實(shí)現(xiàn)了1弊予、2兩種,也可以將兩者結(jié)合使用开财,方便且高效汉柒,開(kāi)箱即用,不需要特殊配置责鳍,提供了Earthly和Drone更好的集成方式碾褂。

為Earthly帶來(lái)的好處

  1. Earthly和源代碼工具(Gitlab GitHub)直接關(guān)聯(lián)。
  2. 利用Drone CI提供的web ui历葛,更方便直觀的展示build流程正塌。
  3. 利用Drone CI 通過(guò)depend_on屬性定義step(對(duì)應(yīng)Earthly的target)執(zhí)行順序,生成依賴(lài)關(guān)系圖svg恤溶,early 這方面的功能還在開(kāi)發(fā)完善乓诽。
  4. 利用Drone ci 定義不同Triggers條件,更好的完成流程控制咒程。(https://docs.Drone.io/pipeline/docker/syntax/trigger)
    5.利用Drone實(shí)現(xiàn)定時(shí)任務(wù)鸠天。
  5. 利用Drone存儲(chǔ)build logs數(shù)據(jù)歷史,方便后期查詢(xún)分析使用孵坚。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末粮宛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卖宠,更是在濱河造成了極大的恐慌巍杈,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扛伍,死亡現(xiàn)場(chǎng)離奇詭異筷畦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)刺洒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)鳖宾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人逆航,你說(shuō)我怎么就攤上這事鼎文。” “怎么了因俐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵拇惋,是天一觀的道長(zhǎng)周偎。 經(jīng)常有香客問(wèn)我,道長(zhǎng)撑帖,這世上最難降的妖魔是什么蓉坎? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮胡嘿,結(jié)果婚禮上蛉艾,老公的妹妹穿的比我還像新娘。我一直安慰自己衷敌,他們只是感情好勿侯,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著缴罗,像睡著了一般罐监。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瞒爬,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音沟堡,去河邊找鬼侧但。 笑死,一個(gè)胖子當(dāng)著我的面吹牛航罗,可吹牛的內(nèi)容都是我干的禀横。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼粥血,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼柏锄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起复亏,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤趾娃,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后缔御,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體抬闷,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年耕突,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了笤成。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡眷茁,死狀恐怖炕泳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情上祈,我是刑警寧澤培遵,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布浙芙,位于F島的核電站,受9級(jí)特大地震影響荤懂,放射性物質(zhì)發(fā)生泄漏茁裙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一节仿、第九天 我趴在偏房一處隱蔽的房頂上張望晤锥。 院中可真熱鬧,春花似錦廊宪、人聲如沸矾瘾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)壕翩。三九已至,卻和暖如春傅寡,著一層夾襖步出監(jiān)牢的瞬間放妈,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工荐操, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芜抒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓托启,卻偏偏與公主長(zhǎng)得像宅倒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屯耸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容