基于Jenkins的項目持續(xù)交付實踐分享

摘要

部門項目由于需要管理多個服務厅瞎,同時服務依賴的基礎環(huán)境較為復雜慌闭,導致項目工程管理起來比較負責。所以采用devops的方式進行工程項目管理查排,包括代碼構建凳枝、自動化測試、鏡像打包跋核、部署等功能岖瑰,實現(xiàn)自動化運維管理叛买。

持續(xù)部署實踐

主要涉及以下幾個部分:

項目管理:分為代碼管理(包含分支管理),鏡像管理(含版本管理)蹋订,配置管理(包含部署服務器聪全、參數(shù)等管理)

DevOps:主要通過工具實現(xiàn)從集成、測試辅辩、構建到部署的流程难礼,其工作流程如下:

1、持續(xù)集成玫锋,基于Bitbucket實現(xiàn)代碼管理蛾茉,包括代碼分支開發(fā)管理、代碼審計管理撩鹿、代碼構建等功能;

2谦炬、持續(xù)測試,基于jenkins节沦、junit實現(xiàn)自動化測試;

3键思、持續(xù)構建,基于docker甫贯、harbor實現(xiàn)docker鏡像的封裝和docker鏡像的管理;

4吼鳞、持續(xù)部署,基于配置管理實現(xiàn)參數(shù)統(tǒng)一配置叫搁,并采用kubenetes實現(xiàn)自動化部署功能赔桌。



實現(xiàn)流程

通過Jenkins實現(xiàn)各環(huán)節(jié)的調(diào)度

【持續(xù)集成】

代碼使用Bitbucket工具做管理,Bitbucket提供基于Pull Request的代碼評審功能渴逻,在此將項目開發(fā)源碼與配置文件都放在Bitbucket上做管理疾党,每次構建時Jenkins會從配置文件庫中拉取最新的配置文件,從代碼庫中拉取指定分支的代碼惨奕,再執(zhí)行后續(xù)的任務雪位。

因為采用的開發(fā)語言為Golang,我們使用了Go自身的vendor功能做包依賴管理梨撞。所以這里不涉及如nexus等第三方包管理工具雹洗。

【持續(xù)測試】

項目采用beego框架,單元測試采用go test框架測試聋袋,集成測試調(diào)用獨立的測試工程队伟;

【持續(xù)構建】

在執(zhí)行構建時,首先由Jenkins拉取最新的配置文件(包括需要部署到哪一個環(huán)境幽勒,項目中存在兩套Kubernetes環(huán)境)嗜侮,根據(jù)選擇的所要部署的不同的環(huán)境,生成不同的配置文件。采用Harbor開源工具做鏡像管理锈颗,每次執(zhí)行Dockfile生成的鏡像會被推送到本地的鏡像庫顷霹。

【持續(xù)部署】

將容器配置通過ssh插件推送到遠端的部署服務器(部署到哪一臺服務器由上游job傳參確定),在遠程服務器中從鏡像庫中拉取鏡像击吱,執(zhí)行yaml文件淋淀,啟動pod。


邏輯架構

邏輯架構方面覆醇,分為代碼管理朵纷、鏡像管理七兜、

代碼管理--分支開發(fā)(采用分支開發(fā)箕憾,主干發(fā)布模式),配置文件倉庫

鏡像管理--主要負責鏡像構建造寝、上傳常摧、下載以及鏡像的版本管理

部署管理--管理配置文件搅吁,如Dockerfile、yaml落午、bash等腳本文件谎懦。

部署路由--依據(jù)上游選擇的環(huán)境不同,選擇部署到不同的環(huán)境中溃斋,目前采用的是固定IP方式界拦,下一階段采用路由方式選擇不同的部署環(huán)境。目前項目組中實現(xiàn)的是測試環(huán)境和開發(fā)環(huán)境的持續(xù)部署盐类,由于生產(chǎn)環(huán)境相對獨立寞奸,所以在客戶提供的服務器或環(huán)境中采用半自動的方式部署,即鏡像結(jié)合yaml文件部署在跳。


技術架構

本次實踐從技術架構層面,主要分為以下幾個層面:

鏡像管理:主要分為基礎鏡像管理(操作系統(tǒng)隐岛、基礎環(huán)境依賴的軟件)猫妙,以及應用鏡像:

部署平臺鏡像、管理平臺鏡像聚凹、瀏覽器平臺鏡像割坠、Portal鏡像,這四個鏡像四個獨立的應用模塊妒牙。


實現(xiàn)架構

具體的代碼實現(xiàn)彼哼,可以參考下下面的結(jié)構,項目中的所有涉及環(huán)境及配置相關的文體均在此統(tǒng)一管理維護湘今。

部署方式如下圖敢朱,整體通過Jenkins調(diào)度,兩套K8s的master節(jié)點,一臺Harbor服務器拴签,部署通過Jenkins中的ssh插件方式推送孝常,每次執(zhí)行前通過選擇所需要部署到的服務器點擊構建執(zhí)行,上游的job會將所要部署的服務器的IP傳參到下游的job中蚓哩,實現(xiàn)一鍵部署构灸。


總結(jié)

目前項目中存在一套開發(fā)環(huán)境和一套測試環(huán)境,均可通過一鍵部署方式將最新的代碼以pod方式部署到各自的環(huán)境中岸梨,也可手動執(zhí)行喜颁,選擇更新哪一個模塊的代碼,解決了人工部署可能出現(xiàn)的操作問題以及縮短了部署時間曹阔,目前從代碼更新到應用運行使用僅需2分鐘左右洛巢。

這套流程還在改進中,也希望感興趣的同學一起學習交流次兆。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末稿茉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子芥炭,更是在濱河造成了極大的恐慌漓库,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件园蝠,死亡現(xiàn)場離奇詭異渺蒿,居然都是意外死亡,警方通過查閱死者的電腦和手機彪薛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門茂装,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人善延,你說我怎么就攤上這事少态。” “怎么了易遣?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵彼妻,是天一觀的道長。 經(jīng)常有香客問我豆茫,道長侨歉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任揩魂,我火速辦了婚禮幽邓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘火脉。我一直安慰自己牵舵,他們只是感情好柒啤,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棋枕,像睡著了一般白修。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上重斑,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天兵睛,我揣著相機與錄音,去河邊找鬼窥浪。 笑死祖很,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的漾脂。 我是一名探鬼主播假颇,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼骨稿!你這毒婦竟也來了笨鸡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤坦冠,失蹤者是張志新(化名)和其女友劉穎形耗,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辙浑,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡激涤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了判呕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倦踢。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖侠草,靈堂內(nèi)的尸體忽然破棺而出辱挥,到底是詐尸還是另有隱情,我是刑警寧澤梦抢,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布般贼,位于F島的核電站,受9級特大地震影響奥吩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蕊梧,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一霞赫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肥矢,春花似錦端衰、人聲如沸叠洗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灭抑。三九已至,卻和暖如春抵代,著一層夾襖步出監(jiān)牢的瞬間腾节,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工荤牍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留案腺,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓康吵,卻偏偏與公主長得像劈榨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晦嵌,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

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