摘要:此步的產(chǎn)出分支特定版本號(hào)自動(dòng)構(gòu)建自動(dòng)構(gòu)建代碼包做法也很通用了,將的鉤子同結(jié)合,達(dá)到特定分支有時(shí)機(jī)觸發(fā)自動(dòng)構(gòu)建,將代碼包從拉取并打包為代碼包。
docker和Jenkins不是什么新東西了,兩者結(jié)合也不是什么稀奇的事情,也已經(jīng)有很多Jenkins和docker相結(jié)合的文章,此文僅為自己的一點(diǎn)心得實(shí)踐,如有不對(duì)的地方,歡迎大家糾正。
先貼上大致的流程圖,逐步說明:
并沒有什么好說明的,就是簡(jiǎn)單的使用了Git作為版本控制工具而已,通用使用規(guī)范不在細(xì)說。
此步的產(chǎn)出:
Git分支特定版本號(hào)
做法也很通用了,將project的Git鉤子同Jenkins結(jié)合,達(dá)到特定分支有push時(shí)機(jī)觸發(fā)自動(dòng)構(gòu)建,將代碼包從Git拉取并打包為代碼包。
此步產(chǎn)出:
打包好的代碼包:project.tar.gz
在此步中,我們?yōu)槊總€(gè)project提供特定的測(cè)試環(huán)境,并且在此環(huán)境中執(zhí)行項(xiàng)目代碼鏡像打包操作。在此步中,需要提前準(zhǔn)備幾樣?xùn)|西:
測(cè)試環(huán)境:我們這里為一臺(tái)干凈的服務(wù)器(不要再問好奢侈,有錢就是任性),部署docker環(huán)境;
project的base鏡像:對(duì)于一個(gè)成熟的項(xiàng)目,所依賴的環(huán)境是固定可知的,因此提前準(zhǔn)備好其所依賴的base image是必要的。
如,我們一個(gè)項(xiàng)目的base image的Dockerfile:
FROM centos:liuyanglong MAINTAINER liuyanglong "liuyanglong@xxxx.com" MAINTAINER version "online" USER root ADD php.ini /home/work/local/php/etc/ ADD php-fpm.conf /home/work/local/php/etc/ ONBUILD ADD project-code.tar.gz /home/work/ ONBUILD ENTRYPOINT ["supervisord", "-c", "/etc/supervisord.conf", "-n"]
注意最下面的兩行ONBUILD
而在每一次Jenkins的構(gòu)建時(shí),要做的僅僅是將代碼包傳入,并且執(zhí)行docker build即可,此時(shí)build所使用的Dockerfile的內(nèi)容只有一行:
From this_project_image:base
而執(zhí)行build時(shí)只會(huì)根據(jù)base image中的兩行ONBUILD執(zhí)行兩個(gè)命令:
ADD project-code.tar.gz /home/work/ ENTRYPOINT ["supervisord", "-c", "/etc/supervisord.conf", "-n"]
注意:此步僅僅在測(cè)試服務(wù)器做了docker build操作,并沒有執(zhí)行docker pull!!
鏡像打包完畢后,此步并沒有結(jié)束!!
調(diào)用腳本,根據(jù)此構(gòu)件號(hào)的版本docker image創(chuàng)建對(duì)應(yīng)的容器,腳本的輸出為其對(duì)應(yīng)的訪問方式,供QA同學(xué)測(cè)試使用。
這樣,每個(gè)構(gòu)建好的版本都有對(duì)應(yīng)的測(cè)試環(huán)境,且互不沖突!
鄙人的腳本地址為:https://github.com/Liuyanglong/docker-tools/blob/master/create_docker
此步的產(chǎn)出:
docker build成功的project image,如以構(gòu)建號(hào)為image版本號(hào),叫做: project_dev:530
此版本代碼的測(cè)試環(huán)境地址,如:172.30.40.2
生成線上鏡像到上一步為止,測(cè)試構(gòu)建環(huán)境已經(jīng)結(jié)束,當(dāng)QA同學(xué)確定要上線時(shí),執(zhí)行Jenkins的Promotion操作,這時(shí)觸發(fā) 此步,將對(duì)應(yīng)build版本對(duì)應(yīng)的docker鏡像推送到 私有docker registry。
所執(zhí)行的操作自然為 :
docker tag project_dev:530 docker-registry.xxxxx.com/xxxxxxx/project_name:version docker push docker-registry.xxxxx.com/xxxxxxx/project_name:version
此步產(chǎn)出:
push好的線上鏡像
此為最后一步,同樣是執(zhí)行promotion操作后最后所執(zhí)行的步驟,調(diào)用我們的內(nèi)部接口,對(duì)線上應(yīng)用執(zhí)行AB上線,具體可參見文章:http://segmentfault.com/a/1190000002978115#articleHeader6
總結(jié)上述就是我們?cè)谏a(chǎn)環(huán)境中的使用Jenkins和docker所構(gòu)建的持續(xù)集成&自動(dòng)部署的邏輯架構(gòu)。也歡迎各位大大拍磚指教。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/26468.html
摘要:的設(shè)計(jì)模式的設(shè)計(jì)模式以持續(xù)集成持續(xù)測(cè)試持續(xù)交付和持續(xù)部署為中心,自動(dòng)化協(xié)作和持續(xù)監(jiān)控是中使用的一些其他設(shè)計(jì)模式。持續(xù)集成持續(xù)集成是不斷地將源代碼集成到一個(gè)新的構(gòu)建或發(fā)布的過程,源代碼可以在本地存儲(chǔ)中,也可以在或中。 showImg(https://segmentfault.com/img/remote/1460000010452455); 識(shí)別二維碼報(bào)名活動(dòng) 8月19日,來自微軟、數(shù)人...
摘要:自動(dòng)部署基礎(chǔ)實(shí)踐熟悉的基本操作實(shí)現(xiàn)本地后自動(dòng)構(gòu)建部署服務(wù)此實(shí)踐用于優(yōu)化自己在實(shí)際工作中的工作流在本地開發(fā)到服務(wù)器登錄云服務(wù)器或者簡(jiǎn)化流程后本地開發(fā)云服務(wù)器自動(dòng)構(gòu)建部署本實(shí)踐將結(jié)合技術(shù)來實(shí)現(xiàn)云服務(wù)器對(duì)各種環(huán)境的切換與部署。 Docker + Jenkins + webhooks 自動(dòng)部署基礎(chǔ)實(shí)踐 熟悉 jenkins 的基本操作 ?? 實(shí)現(xiàn)本地 git push 后 jenkins 自...
摘要:對(duì)測(cè)試的影響讓單元測(cè)試運(yùn)行的更順暢單元測(cè)試驅(qū)動(dòng)開發(fā)是一個(gè)很好的應(yīng)用程序開發(fā)方式,單元測(cè)試往往也是和代碼一起被提交到代碼倉庫中。但是很多單元測(cè)試通常依賴于很多其他服務(wù),而這些服務(wù)的標(biāo)準(zhǔn)化配置往往是一個(gè)難點(diǎn),如數(shù)據(jù)庫的搭建防火墻的配置等。 傳統(tǒng)的軟件開發(fā)、測(cè)試、運(yùn)維需要三個(gè)團(tuán)隊(duì)在三個(gè)不同的環(huán)境中進(jìn)行,而三個(gè)環(huán)境的不同引發(fā)了很多的問題。如:工作內(nèi)容的重復(fù);開發(fā)環(huán)境中可運(yùn)行的程序在測(cè)試和運(yùn)維環(huán)...
摘要:而持續(xù)集成的意義就在于減少風(fēng)險(xiǎn),和重復(fù)的過程,最終提高工作效率。第二級(jí)調(diào)度由被稱作的組件組成。能和不同類型的通信,每種由相應(yīng)的應(yīng)用集群管理。這是的任務(wù)啟動(dòng)過程。數(shù)人云運(yùn)維平臺(tái)持續(xù)集成實(shí)踐這是數(shù)人云運(yùn)維平臺(tái)的持續(xù)集成實(shí)踐。 今天小數(shù)給大家?guī)淼挠质鞘愕母韶洠寒?dāng)運(yùn)維遇到云計(jì)算,當(dāng)Docker遇到Mesos和Jenkins,會(huì)擦出怎樣的火花呢?且看來自數(shù)人云運(yùn)維工程師金燁的演講實(shí)錄分享——...
摘要:阿里云效平臺(tái)基于理念的私有平臺(tái)實(shí)踐本文將系統(tǒng)的從個(gè)方面,分享互娛運(yùn)維團(tuán)隊(duì)對(duì)于運(yùn)維平臺(tái)實(shí)踐經(jīng)驗(yàn)及未來展望,希望對(duì)大家有一些參考意義。 CI Weekly 圍繞『 軟件工程效率提升』 進(jìn)行一系列技術(shù)內(nèi)容分享,包括國內(nèi)外持續(xù)集成、持續(xù)交付,持續(xù)部署、自動(dòng)化測(cè)試、 DevOps 等實(shí)踐教程、工具與資源,以及一些工程師文化相關(guān)的程序員 Tips 。同步于 flow.ci Blog、微信公眾號(hào)、官...
閱讀 3947·2021-10-19 13:23
閱讀 2326·2021-09-09 11:37
閱讀 2506·2019-08-29 15:20
閱讀 3407·2019-08-29 11:08
閱讀 1660·2019-08-26 18:27
閱讀 1763·2019-08-23 12:20
閱讀 3028·2019-08-23 11:54
閱讀 2543·2019-08-22 15:19