基于Jenkins的自動化調(diào)度

為什么要做持續(xù)集成

  • 自動化冒煙測試
  • 自動化用例運行
  • 自動遍歷測試運行
  • 兼容性測試

核心依賴資源

  • 設(shè)備集群:真機占遥、模擬器、云端設(shè)備
  • 管理平臺:STF且叁、Jenkins、Selenium Grid
  • 測試用例:遍歷工具、測試用例

為什么要持續(xù)集成與持續(xù)部署

聲明:以下內(nèi)容轉(zhuǎn)自https://zhuanlan.zhihu.com/p/72399262

DevOps、持續(xù)集成、持續(xù)交付、持續(xù)部署什荣、敏捷等詞語大家應(yīng)該都耳熟能詳了,說到底就是快速交付價值怀酷,從工程上稻爬、管理上、組織上蜕依、工具上來提高效率桅锄,打造可靠的、快速的產(chǎn)品(項目)交付過程样眠。本書將圍繞項目管理友瘤、自動化部署、自動化發(fā)布檐束、自動化測試辫秧、容器云來實現(xiàn)持續(xù)集成、持續(xù)交付及持續(xù)部署被丧,因為它不是一本理論圖書盟戏,不打算大談道理绪妹,我們將直接談?wù)摮掷m(xù)集成、持續(xù)交付柿究、持續(xù)部署的價值邮旷,拋出問題,說思路蝇摸,講方案婶肩,講實際操作。希望能夠幫助廣大讀者快速在企業(yè)落地持續(xù)集成貌夕、持續(xù)交付與持續(xù)部署律歼。

1.1CI&CD 的價值

持續(xù)集成(Continuous Integration,CI)是一種軟件開發(fā)實踐啡专。在持續(xù)集成中苗膝,團隊成員頻繁集成他們的工作成果,一般每人每天至少集成一次植旧,也可以多次。每次集成會經(jīng)過自動構(gòu)建(包括靜態(tài)掃描离唐、安全掃描病附、自動測試等過程)的檢驗,以盡快發(fā)現(xiàn)集成錯誤亥鬓。許多團隊發(fā)現(xiàn)這種方法可以顯著減少集成引起的問題完沪,并可以加快團隊合作軟件開發(fā)的速度(以上引用自Martin Fowler 對持續(xù)集成的定義)。

持續(xù)交付(Continuous Delivery)是指頻繁地將軟件的新版本交付給質(zhì)量團隊或者用戶嵌戈,以供評審覆积,如果評審?fù)ㄟ^,代碼就進入生產(chǎn)階段熟呛。

持續(xù)部署(Continuous Deployment)是持續(xù)交付的下一步宽档,指的是代碼通過評審以后,自動部署到生產(chǎn)環(huán)境中庵朝。

通過上面的定義我們不難發(fā)現(xiàn)吗冤,持續(xù)突出的就是一個快字,商業(yè)軟件的快速落地需求推動了軟件工程的發(fā)展九府∽滴粒可持續(xù)的、快速迭代的軟件過程是當今主流開發(fā)規(guī)約侄旬。尤其在互聯(lián)網(wǎng)行業(yè)肺蔚,快速響應(yīng)即是生命線。從一個想法到產(chǎn)品落地都處在沖鋒的過程中儡羔,機會稍縱即逝宣羊。響應(yīng)用戶反饋也是萬分敏捷璧诵,早晨的反饋在當天就會上線發(fā)布,快得讓用戶感覺倍受重視段只∪“快”已經(jīng)成為商業(yè)競爭力。這一切都要求企業(yè)具備快速響應(yīng)的能力赞枕,這正是推動持續(xù)集成澈缺、持續(xù)交付、持續(xù)部署的動力炕婶。

產(chǎn)品或者項目的參與者應(yīng)該能夠深刻體會到團隊協(xié)作時姐赡,工作交接(系統(tǒng)集成)部分最容易出問題,會消耗大量的溝通成本與時間成本柠掂,直接拖慢進度项滑。所以,一個行之有效的項目管理過程(包括溝通管理涯贞、流程管理)在大型項目中效果明顯枪狂。當前敏捷開發(fā)是主流,持續(xù)集成宋渔、持續(xù)交付與持續(xù)部署正好能夠幫助高效地實施敏捷過程州疾,促進開發(fā)、運維和質(zhì)量保障(QA)部門之間的溝通皇拣、協(xié)作與整合严蓖。

1.2 CI&CD 帶來的變化

通常把開發(fā)工作過程分為編碼、構(gòu)建氧急、集成颗胡、測試、交付吩坝、部署幾個階段(見圖1-1)毒姨,持續(xù)集成、持續(xù)交付钉寝、持續(xù)部署剛好覆蓋這些階段手素。從提高效率上來講,對每個階段的優(yōu)化都可以縮短軟件交付時間瘩蚪。持續(xù)集成泉懦、持續(xù)交付及持續(xù)部署的過程即是一個軟件開發(fā)優(yōu)化過程。

image

墨菲定律大家都不陌生疹瘦,越是擔心什么就越會發(fā)生什么崩哩;在多團隊協(xié)作時,比如系統(tǒng)對接時,我們都會擔心對接是否順利邓嘹,往往也不枉我們擔心酣栈,時常我們會被集成折磨得焦頭爛額。有很多團隊只是擔心汹押,并沒有拿出有效的措施去避免這種事情發(fā)生矿筝,以至于延長了交付時間。既然擔心棚贾,我們何不及早集成窖维,把問題先暴露出來?

目前多數(shù)公司都已經(jīng)使用了版本管理工具來管理源碼妙痹,比如GitLab铸史、SVN 等版本管理工具。在版本管理這一塊怯伊,公司會根據(jù)自己的實際情況來制訂版本管理辦法琳轿。對于持續(xù)集成來說,業(yè)內(nèi)建議只維護一個源碼倉庫耿芹,降低版本管理的復(fù)雜度崭篡。開發(fā)人員持續(xù)提交自己的修改,自動觸發(fā)編譯吧秕,自動集成媚送,自動進行自動化的測試,及早反饋集成過程中的問題寇甸,就能更好地防止出現(xiàn)平時不集成、集成就出問題的現(xiàn)象疗涉。

通過自動化的持續(xù)集成拿霉,把管理流程固化;保證集成的有序性咱扣、可靠性绽淘;減少版本發(fā)布的不合規(guī)性(開發(fā)或者測試手動打包,可能一天打多個包闹伪,更新多次沪铭,測試不充分),保證版本可控偏瓤,問題可追溯(至于哪個版本出現(xiàn)的問題杀怠,可以回溯)。

一旦把這種持續(xù)集成的過程固定下來厅克,形成一個自動化過程赔退,就具備了持續(xù)集成的能力,軟件交付的可靠性就大大增強,這無形也是一種競爭力硕旗。這種競爭力保證了集成的有序性窗骑、可靠性。過程的自動化拋棄了人工漆枚,降低了出錯率创译,提高了速度,自然會節(jié)省成本墙基。

1.3 CI&CD 實施現(xiàn)狀

在日常生活中處處都體現(xiàn)著一個“快”字软族,互聯(lián)網(wǎng)更是對快追求到極致。持續(xù)集成碘橘、持續(xù)交付互订、持續(xù)部署在互聯(lián)網(wǎng)行業(yè)更為廣泛。作者沒有統(tǒng)計哪些公司在用痘拆,只是圈子中朋友公司都實施了持續(xù)集成仰禽,具備持續(xù)交付能力。至于持續(xù)部署就沒這么廣泛了纺蛆,畢竟持續(xù)部署不僅僅是技術(shù)問題吐葵,還涉及管理、營運等問題桥氏。尤其是一些金融企業(yè)温峭、大型國企,開發(fā)團隊外包字支,測試外包凤藏,運營半外包,安全要求高堕伪,很難快速實施揖庄。多數(shù)能夠在測試環(huán)境中建立起CI&CD就已經(jīng)很不錯了。

阿里云欠雌、騰訊云蹄梢、網(wǎng)易蜂巢等國內(nèi)云,都提供了從GitLab 下拉代碼富俄、編譯打包禁炒、單元測試、鏡像制作霍比、容器發(fā)布的功能幕袱。這個過程實際上就是持續(xù)集成、持續(xù)交付的過程悠瞬,同時具有持續(xù)部署的能力凹蜂。基本上,持續(xù)集成玛痊、持續(xù)交付汰瘫、持續(xù)部署是一種服務(wù)能力,是云平臺必須具備的能力擂煞。

下面引自2017 年DevOps 現(xiàn)狀調(diào)查報告混弥。

統(tǒng)計資料顯示,DevOps 正在各個行業(yè)对省、各種規(guī)模的企業(yè)中落地蝗拿。DevOps 團隊的比例在2014 年是16%,在2015 年是19%蒿涎,在2016 年是22%哀托,在2017 年已經(jīng)增長到27%,越來越多的企業(yè)和團隊開始擁抱DevOps劳秋。圖1-2 是2017 年DevOps 現(xiàn)狀調(diào)查報告統(tǒng)計的從業(yè)分布情況仓手。

完整的報告可以從qcloudimg 網(wǎng)站下載。

image

在本書撰寫過程中2018 年DevOps 現(xiàn)狀調(diào)查報告也已經(jīng)出來玻淑,圖1-3 是精英級執(zhí)行團隊使用DevOps 后的效率嗽冒。精英級執(zhí)行團隊在以下幾個方面有著突出的表現(xiàn)。

1)代碼發(fā)布頻率高46 倍补履。

2)代碼從提交至發(fā)布的速度快2555 倍添坊。

3)故障變更率降低1/7。

4)事故恢復(fù)時間快2604 倍箫锤。

另外贬蛙,云計算持續(xù)增長(見圖1-4)。有17%的調(diào)查者仍然沒有使用云廠商的服務(wù)谚攒。AWS最受歡迎阳准,占比為52%,Azure 屈居次席五鲫,占比為34%。

image

1.4 CI&CD 技術(shù)棧

目前持續(xù)集成岔擂、持續(xù)交付位喂、持續(xù)部署在開源社區(qū)都是熱點,用戶可以方便地利用這些開源組件來構(gòu)建自己企業(yè)的持續(xù)集成乱灵、持續(xù)交付及持續(xù)部署平臺塑崖。

持續(xù)集成工具中以Jenkins 使用最為廣泛,由Jenkins 來作業(yè)化持續(xù)集成過程痛倚;利用GitLab來管理程序版本规婆;利用Gerrit 來做代碼審核;利用Sonar 進行代碼質(zhì)量掃描;利用JUnit 進行單元測試抒蚜;利用Docker compose 來構(gòu)建鏡像掘鄙;利用Docker 來部署容器;利用Kubernetes嗡髓、Rancher 等進行服務(wù)編排操漠。圖1-5 顯示了常見的CI&CD 技術(shù)棧。

image

后續(xù)講解CI&CD 落地時會運用到其中的一些技術(shù)與工具饿这。當然浊伙,基本上都運用開源工具,這也有助于企業(yè)在落地時節(jié)省費用长捧。

1.5 大規(guī)模部署的煩惱

對于同樣的功能嚣鄙,在用戶量不同的系統(tǒng)中,工作量是完全不同的串结,后臺為性能考慮而設(shè)計的架構(gòu)完全不一樣哑子。對于CI&CD 也是如此,小規(guī)模的很容易奉芦,配幾個作業(yè)就可以完成工作赵抢,但對于大規(guī)模的CI&CD,一旦系統(tǒng)數(shù)量声功、實例數(shù)量上去后各種問題就都來了烦却。下面列舉幾個主要的問題。

1)更新問題先巴。更新一次要耗費大量精力其爵,很多企業(yè)都是晚上更新,員工得通宵加班伸蚯,還不能保證更新沒問題摩渺,不具備快速大批量部署的能力。

2)部署包(jar 包剂邮、war 包摇幻、ear 包等)的管理問題。為了保證版本可追溯挥萌,出錯后能夠回滾绰姻,我們需要保存各個歷史版本,而且方便下載引瀑。

3)版本的安全性狂芋。傳統(tǒng)上以Java 語言開發(fā)的系統(tǒng)多數(shù)以jar 包、war 包憨栽、ear 包的方式發(fā)布帜矾,容易被篡改(人為修改翼虫,傳輸過程不完整);通常我們用md5 來驗證完整性屡萤,但包與md5 對應(yīng)關(guān)系的管理并沒有系統(tǒng)化珍剑,往往在出問題后人工進行md5 驗證。

4)主機管理問題灭衷。系統(tǒng)部署到哪些機器上需要進行主機管理次慢?在部署時人工選擇部署到哪臺主機顯然不是一種明智的方式,能否自動進行調(diào)度翔曲?同時迫像,不會產(chǎn)生有些主機性能堪憂、有些主機空閑導(dǎo)致的負載不均情況瞳遍。

5)端口管理問題闻妓,在部署Java 項目時我們并不建議設(shè)置太多的JVM 內(nèi)存,因此一臺主機上往往能夠部署多個應(yīng)用實例掠械,同一臺機器上多個實例的開放端口就必須不一致由缆,于是端口又成了需要管理的資源。有人會說可以選用虛擬機猾蒂,一臺虛擬機上只部署一個實例均唉。當然,這也是可以的肚菠。實際上舔箭,多數(shù)企業(yè)也是這么做的。這種做法也有弊端蚊逢,虛擬機雖然幫助做了隔離层扶,但會損失一些主機性能;虛擬機要使用內(nèi)網(wǎng)IP烙荷,這樣IP 又成了稀有資源镜会,當部署多個實例時IP 會不夠用。

6)負載均衡管理問題终抽。不管是在主機上部署多個實例戳表,還是利用虛擬機來部署多個實例,在做集群時昼伴,都會通過代理(Nginx匾旭、Apache、LVS……)軟件來做負載均衡亩码,因此我們需要把各實例的訪問地址配置到負載器的配置文件中季率。實例數(shù)少的時候手工配置還可以接受野瘦,多了就沒法手工配置了描沟。當然飒泻,方法也會有,比如用Etcd+Confd+Nginx(HAProxy)來做服務(wù)發(fā)現(xiàn)吏廉,我們需要自己部署一套工具泞遗,并進行維護,復(fù)雜的框架提高了對運維人員的要求席覆。

7)服務(wù)伸縮問題史辙。當服務(wù)訪問量上去后,要能夠具備快速擴充的能力佩伤;當訪問量下去后聊倔,要能夠具備縮小服務(wù)規(guī)模的能力,收放自如生巡。這種彈性的服務(wù)能力顯然是通過工具來完成的耙蔑,手動完成是不可能的。

8)IP 管理問題孤荣。當大規(guī)模部署后甸陌,IP 資源會成為稀有資源,如何用更少的IP 來部署更多的服務(wù)盐股?IP 的分配及管理顯然不能人工完成钱豁,那樣效率太過低下,這就需要一個IP 管理工具疯汁。

如果有一個系統(tǒng)能夠一站式解決以上問題牲尺,那真是太完美了。因為沒有這樣的系統(tǒng)涛目,所以很多公司開發(fā)了他們的運維平臺秸谢,專門用來解決大規(guī)模部署問題。但對于中小公司來說霹肝,技術(shù)與人力投入往往受限估蹄,沒有這個能力、精力或者財力去建立一個智能的運維平臺沫换。但是我們可以利用開源工具臭蚁、開源技術(shù)來搭建一個相對完善的持續(xù)集成、持續(xù)部署體系讯赏。

1.6 實施云平臺化

虛擬化垮兑、云平臺化為大規(guī)模部署提供了方便,尤其是在硬件資源管理及網(wǎng)絡(luò)管理方面漱挎∠登梗互聯(lián)網(wǎng)的火熱更是推動了云的快速發(fā)展,基本上各大互聯(lián)網(wǎng)企業(yè)都已經(jīng)完成了云平臺化磕谅,生產(chǎn)力也在不斷提升私爷。以Docker 為代表的容器化技術(shù)出現(xiàn)后雾棺,云變得更靈活,容器化已經(jīng)成為大潮衬浑,Docker 也占據(jù)了容器市場的絕對份額捌浩。容器部署方式能夠滿足快速大批量部署的要求,充分利用物理機器資源工秩。以Docker 為例尸饺,Docker 容器技術(shù)讓應(yīng)用一次構(gòu)建,到處(物理機助币、虛擬機浪听、公有云、私有云眉菱、Windows 系統(tǒng)馋辈、Linux 系統(tǒng)等)可運行,加快了本地開發(fā)和構(gòu)建倍谜,實現(xiàn)了快速交付和部署迈螟;同時還可以在操作系統(tǒng)層面提供資源隔離服務(wù)。

為了提高服務(wù)水平尔崔,企業(yè)服務(wù)需要能夠快速水平擴展答毫,在系統(tǒng)設(shè)計層面也大舉采用SOA框架,這種框架天生適合使用容器大規(guī)模部署季春。當然洗搂,也存在一些問題,比如管理大量的服務(wù)實例成為一個挑戰(zhàn)载弄,運維耘拇、監(jiān)控、問題分析等變得復(fù)雜宇攻。那么如何管理這些容器呢惫叛?于是就產(chǎn)生了大量的容器管理工具,支持Docker 容器管理的工具使用得比較廣的有Swarm逞刷、Mesos嘉涌、Kubernetes、Rancher 等工具夸浅。這些工具能夠幫我們方便管理容器仑最,雖然有一些問題的解決方式并不完美,但這也給運維開發(fā)帆喇、測試開發(fā)提供了更多的想象空間與工作機會警医。目前容器管理工具Kubernetes 影響最大,但Kubernetes 的學習與運維成本相對較高坯钦,需要專業(yè)人士的支持预皇。目前國內(nèi)大型互聯(lián)網(wǎng)公司基本都基于Kubernetes 來管理大量容器损敷,包括BAT、京東等企業(yè)深啤。騰訊的藍鯨(DevOps)也基于Kubernetes,已經(jīng)開始市場化路星;淘寶的云效也是與藍鯨同類型的產(chǎn)品溯街。

對于中小型企業(yè)來說,上Kubernetes 顯得有點操之過急洋丐,需要有技術(shù)儲備與維護團隊呈昔,學習成本相對也會高一點,因此應(yīng)該選擇簡單的友绝、快速能夠落地的堤尾、能夠滿足企業(yè)要求的、有一定市場的工具迁客。當然郭宝,最好還是開源的,社區(qū)也支持的掷漱。所以我們選擇Rancher粘室,據(jù)說早期云效也是整合Rancher 的,作者也在基于Rancher 做整合卜范,利用Rancher 實現(xiàn)容器的管理衔统,利用Jenkins 構(gòu)建,利用GitLab 實現(xiàn)源碼管理海雪,再加上靜態(tài)掃描锦爵、自動化測試、性能測試奥裸、日志管理等功能险掀,整合成DevOps,足夠運行湾宙、管理上千個實例級別的容器實例迷郑。實際上,擁有DevOps 并且已經(jīng)容器化创倔,就相當于已經(jīng)擁有一個相對智能化的私有云平臺(不是真正意義上的云嗡害,并沒有對物理資源進行管理,抽象成服務(wù))畦攘。圖1-6 是作者早期開發(fā)的DevOps靜態(tài)架構(gòu)霸妹。

image

此平臺類似于一個私有云平臺,基本涵蓋了系統(tǒng)的生命周期:編譯知押、打包叹螟、發(fā)布鹃骂、測試、上線罢绽、運維畏线、下線。同時把硬件資源管理起來良价,這些硬件對用戶透明寝殴。平臺主要分3 層。

? 基礎(chǔ)組件層明垢,提供了存儲蚣常、網(wǎng)絡(luò)與運算功能。對于上層來說痊银,硬件只是一個服務(wù)而已抵蚊。

? 服務(wù)組件層,提供了運維與監(jiān)控功能溯革。對于大規(guī)模系統(tǒng)營運來說贞绳,系統(tǒng)監(jiān)控、問題診斷分析變得復(fù)雜致稀,必須在系統(tǒng)層面給予幫助熔酷,結(jié)合平臺能力,讓用戶分析問題變得簡單豺裆。那種從服務(wù)器上看日志的老舊方式一去不復(fù)返了拒秘。

? DevOps 用戶層,直接面向運維人員臭猜,做到持續(xù)集成躺酒、持續(xù)交付、持續(xù)部署蔑歌,在平臺中完成各種測試羹应。支持多種形式的發(fā)布,減少上線風險次屠。

圖1-7 是上述平臺用到的技術(shù)棧园匹。下面對用到的部分工具進行簡單說明。

image

? Rancher:一個開源的企業(yè)級容器管理平臺劫灶。通過Rancher裸违,企業(yè)再也不必自己使用一系列的開源軟件去從頭搭建容器服務(wù)平臺。Rancher 提供了在生產(chǎn)環(huán)境中使用的管理Docker 和Kubernetes 的全棻净瑁化容器部署與管理平臺供汛。

? Jenkins:用于構(gòu)建管理,定義管理工作過程。

? Docker compose:一種定義編排容器的工具怔昨,以YAML 或者XML 的格式展示編排內(nèi)容雀久。

? Maven:源碼編譯工具。

? GitLab:源碼管理工具趁舀。

? Gerrit:代碼審核工具赖捌。

? Sonar:代碼靜態(tài)掃描工具。

? robot:自動化測試工具矮烹。

? Ceph:分布式存儲產(chǎn)品越庇。

? Spring Boot:DevOps 集成開發(fā)技術(shù)框架。

? React:門戶開發(fā)框架擂送。

? Redux:門戶開發(fā)框架。

? MySQL:數(shù)據(jù)庫唯欣。

? MyBatis:ORM 框架嘹吨。

? Kibana、Logstash境氢、Elastic:用于統(tǒng)一進行日志管理蟀拷、日志存儲、日志分析萍聊。

本書講到的CI&CD剛好是這個DevOps 的一個子集问芬,我們將圍繞上述架構(gòu)及技術(shù)棧展開,

本書不僅講解如何實現(xiàn)寿桨,還會結(jié)合實例展示如何落地此衅。這些對于大多數(shù)中小型企業(yè)來說已經(jīng)足夠支撐業(yè)務(wù)。企業(yè)給CI&CD 加上Web 版本的門戶亭螟、集中的賬戶管理體系以及運維監(jiān)控體系挡鞍,即可打造一個智能的DevOps 平臺。

圖1-8 是CI&CD 流程预烙,后面的實例也將圍繞這個流程墨微。

image

下面先簡單介紹該流程。

1)程序員提交代碼扁掸。

2)Gerrit 做代碼審核翘县,通過提交到GitLab,能通過郵件通知相關(guān)人員谴分。

3)Sonar 做代碼靜態(tài)掃描锈麸,并把結(jié)果通知相關(guān)人員。

4)在GitLab 中貼標簽(通過WebHook 觸發(fā)Jenkins 作業(yè))或者手動在Jenkins 中觸發(fā)作業(yè)牺蹄,Maven 開始下拉代碼進行編譯掐隐,然后進行單元測試和打包。

5)打包完成后利用Docker cli 構(gòu)建鏡像。

6)把鏡像上傳到鏡像倉庫中虑省。

7)Jenkins 作業(yè)觸發(fā)Rancher 在測試環(huán)境中啟動容器匿刮,首先下拉鏡像,然后根據(jù)配置啟動容器探颈。

8)Rancher 自動或者按規(guī)則調(diào)度容器在哪臺機器上運行熟丸。

9)Rancher 負責容器生命周期管理(啟動、監(jiān)控伪节、健康檢查光羞、擴展等)。

10)進行自動化測試怀大。

11)測試通過后纱兑,Jenkins 觸發(fā)Rancher 在生產(chǎn)環(huán)境中啟動或者更新測試通過的服務(wù),當然化借,也可以手動在Rancher 中進行發(fā)布猿诸,當實例增加時只需要填寫實例數(shù)量即可快速擴展虱朵,在發(fā)布時可以支持灰度發(fā)布绪励、藍綠發(fā)布等個性化的發(fā)布需求黎烈。

注意:

1)我們一直不加上云平臺這個名稱,是因為云平臺的定義太廣蒜焊,我們并沒有產(chǎn)品接入功能倒信,比如提供數(shù)據(jù)存儲服務(wù)、緩存服務(wù)泳梆,以及提供大數(shù)據(jù)運算能力鳖悠。

2)當然,我們也具備云要提供的很多服務(wù)优妙,所以在把下面要講的一套東西落地后竞穷,也可以冠以云平臺之名,其他的功能可以慢慢補上來鳞溉●“欲立新功,行之有名熟菲;立人之先看政,憨享其成〕保”

由于要用的工具比較多允蚣,這些工具多由外國人開發(fā),譯過來叫法比較多呆贿,因此為了方便講述嚷兔,下面介紹術(shù)語森渐。

? 服務(wù):完成某一功能的程序。

? 服務(wù)實例:程序部署單元冒晰,比如一個訂單程序由Tomcat 啟動同衣,一個這樣的部署單元(一個JVM 實例)稱為一個服務(wù)實例。

? 容器:如Docker 容器壶运。

? 容器實例:鏡像的運行態(tài)叫容器實例耐齐,如果運行一個Nginx 鏡像,那么這就是一個容器實例蒋情,我們利用鏡像運行兩個Nginx埠况,那么實例數(shù)為2;這些實例稱為容器實例棵癣,一定語境下直接稱為實例辕翰。

1.7 本章小結(jié)

本章簡單敘述了進行CI&CD 的價值,以及通過CI&CD 的實施能夠幫我們解決什么問題狈谊。結(jié)合當前的CI&CD 技術(shù)棧喜命,我們知道要朝哪個方向去發(fā)力建立自己的私有云平臺。利用當前的開源技術(shù)實現(xiàn)CI&CD的畴,運行自己的私有云平臺渊抄,加速企業(yè)的系統(tǒng)集成效率尝胆,縮短部署時間丧裁,提高成功率。

本文摘自《持續(xù)集成與持續(xù)部署實踐》

《持續(xù)集成與持續(xù)部署實踐》

作者:陳志勇 錢琪 孫金飛 李誠誠


image.png
  • 騰訊含衔、阿里煎娇、滴滴等公司眾多專家推薦
  • 講述如何用Docker構(gòu)建集成容器、鏡像倉庫規(guī)劃及管理
  • 一書在手贪染,持續(xù)集成無憂缓呛。

本書來自一線的實踐經(jīng)驗,深入呈現(xiàn)技術(shù)細節(jié)杭隙;詳實的實操示例哟绊,即學即用的實戰(zhàn)技術(shù)。

講解了持續(xù)集成中引人入勝的內(nèi)容:CI/CD到底要解決什么問題痰憎?它與DevOps之間的關(guān)系是怎樣的票髓?程序員如何用工具化的系統(tǒng)持續(xù)進行代碼的版本管理、構(gòu)建铣耘、打包洽沟、集成、測試和部署蜗细?利用云平臺和容器技術(shù)實現(xiàn)彈性伸縮價值等裆操。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怒详,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子踪区,更是在濱河造成了極大的恐慌昆烁,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朽缴,死亡現(xiàn)場離奇詭異善玫,居然都是意外死亡,警方通過查閱死者的電腦和手機密强,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門茅郎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人或渤,你說我怎么就攤上這事系冗。” “怎么了薪鹦?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵掌敬,是天一觀的道長。 經(jīng)常有香客問我池磁,道長奔害,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任地熄,我火速辦了婚禮华临,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘端考。我一直安慰自己雅潭,他們只是感情好,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布却特。 她就那樣靜靜地躺著扶供,像睡著了一般。 火紅的嫁衣襯著肌膚如雪裂明。 梳的紋絲不亂的頭發(fā)上椿浓,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音闽晦,去河邊找鬼扳碍。 笑死,一個胖子當著我的面吹牛尼荆,可吹牛的內(nèi)容都是我干的左腔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼捅儒,長吁一口氣:“原來是場噩夢啊……” “哼液样!你這毒婦竟也來了振亮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鞭莽,失蹤者是張志新(化名)和其女友劉穎坊秸,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澎怒,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡褒搔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了喷面。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片星瘾。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惧辈,靈堂內(nèi)的尸體忽然破棺而出琳状,到底是詐尸還是另有隱情,我是刑警寧澤盒齿,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布念逞,位于F島的核電站,受9級特大地震影響边翁,放射性物質(zhì)發(fā)生泄漏翎承。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一符匾、第九天 我趴在偏房一處隱蔽的房頂上張望叨咖。 院中可真熱鬧,春花似錦待讳、人聲如沸芒澜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至南吮,卻和暖如春琳彩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背部凑。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工露乏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涂邀。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓瘟仿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親比勉。 傳聞我的和親對象是個殘疾皇子劳较,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

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