偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

我們應(yīng)該如何基于容器來進(jìn)行軟件的持續(xù)交付(一)

網(wǎng)絡(luò) 通信技術(shù)
在過去的一段時(shí)間里容器已經(jīng)大量的使用到了IT軟件生產(chǎn)的各個(gè)環(huán)節(jié)當(dāng)中:從軟件開發(fā),持續(xù)集成,持續(xù)部署,測試環(huán)境到生產(chǎn)環(huán)境。

概述

在過去的一段時(shí)間里容器已經(jīng)大量的使用到了IT軟件生產(chǎn)的各個(gè)環(huán)節(jié)當(dāng)中:從軟件開發(fā),持續(xù)集成,持續(xù)部署,測試環(huán)境到生產(chǎn)環(huán)境。

除了Docker官方的Docker Swarm, Docker Machine以及Docker Compose以外,開源軟件社區(qū)還涌現(xiàn)了一系列的與容器相關(guān)的工具,涵蓋了從容器編排,調(diào)度,監(jiān)控,日志等等各個(gè)方面的需求。

本文將從針對軟件研發(fā)流程,基于容器解決軟件的持續(xù)交付問題,以及團(tuán)隊(duì)協(xié)作問題。

在持續(xù)集成中使用容器

構(gòu)建環(huán)境統(tǒng)一管理

在傳統(tǒng)模式下使用持續(xù)集成工具諸如Jenkins,在部署企業(yè)持續(xù)持續(xù)集成平臺的***個(gè)問題就是多樣化的構(gòu)建構(gòu)建環(huán)境需求,而通常的做法是將構(gòu)建Agent(服務(wù)器或者虛擬機(jī))分配給團(tuán)隊(duì)由團(tuán)隊(duì)自己管理構(gòu)建服務(wù)器的環(huán)境配置信息,安裝相應(yīng)的構(gòu)建依賴等。

在持續(xù)集成中使用docker

  1. docker run --rm -v pwd :/workspace -v /tmp/.m2/repository:/root/.m2/repository --workdir /workspace maven:3-jdk-8 /bin/sh -c 'mvn clean package' 

如上所示,我們可以非常方便的通過容器來完成軟件包的構(gòu)建,其中有幾個(gè)點(diǎn)需要注意的是:

--rm 命令可以確保當(dāng)命令執(zhí)行完成后能夠自動清理構(gòu)建時(shí)產(chǎn)生的容器,我想你應(yīng)該不太希望需要不定期清理構(gòu)建服務(wù)器磁盤的問題吧。

-v 除了將當(dāng)前源碼掛載到容器當(dāng)中以外,我們還可以通過掛載磁盤來緩存一些構(gòu)建所需的依賴,比如maven下載的jar包,從而提高編譯效率。

--workerdir 用以指定構(gòu)建命令執(zhí)行的工作路徑,當(dāng)然需要和workspace保持一致。

如上,基于容器我們可以快速搭建適應(yīng)多種構(gòu)建需求的CI構(gòu)建環(huán)境,所有需要的一起就是你的構(gòu)建服務(wù)器上需要的只有Docker。

在持續(xù)集成中使用docker-compose

在某些情況下,在構(gòu)建或者集成測試階段我們可能需要使用到一些真正的第三方依賴,比如數(shù)據(jù)庫或者緩存服務(wù)器。在傳統(tǒng)的持續(xù)集成實(shí)踐中,通常要么你直接使用已經(jīng)部署的數(shù)據(jù)庫(記得清理測試數(shù)據(jù),并發(fā)如何保證),直接使用內(nèi)存數(shù)據(jù)庫來代替真實(shí)數(shù)據(jù)庫,要不使用mock或者stub來進(jìn)行測試。

當(dāng)然在理想情況下我們還是希望能夠使用與真實(shí)環(huán)境一直的真正的數(shù)據(jù)庫或者其他中間件服務(wù)?;赿ocker-compose我們可以非常方便的實(shí)現(xiàn)對于復(fù)雜構(gòu)建環(huán)境的需求。

  1. build: command: sh -c 'mvn --help' image: maven:3-jdk8 links: [mysql] volumes:  
  2. '.:/code'  
  3. '/tmp/.m2/repository:/root/.m2/repository' working_dir: /codemysql: environment: {MYSQL_DATABASE: test, MYSQL_PASSWORD: test, MYSQL_ROOT_PASSWORD: test, MYSQL_USER: test} image: mysql:5.5 

同樣我們以maven為例,假設(shè)我們需要在構(gòu)建中使用到mysql以支持集成測試的需求

  1. docker-compose run --rm build sh -c 'mvn clean package' && docker-compose stop && docker-compose rm -f 
  • rm 確保在構(gòu)建命令執(zhí)行完成后自動清理build所產(chǎn)生的容器。
  • docker-compose stop && docker-compose rm -f 確保依賴的其它服務(wù)如mysql能夠正常的退出并且清理所產(chǎn)生的容器。

建立持續(xù)交付解決方案

建立基于共同目標(biāo)的具有跨職能協(xié)同的研發(fā)團(tuán)隊(duì),是DevOps運(yùn)動的根本。而自動化則是提高效率的基石?;谝陨衔覀兪侨绾位谌萜鹘⑽覀兊某掷m(xù)交付解決方案?

基礎(chǔ)設(shè)施自動化

使用Rancher理由很簡單,Rancher是目前市面上***一個(gè)能滿足開箱即用的容器管理平臺,同時(shí)能夠支持多種編排引擎,如Rancher自己的Cattle,Google的K8S,以及Docker官方的Swarm作為容器編排引擎。同時(shí)Rancher提供的Catalog應(yīng)用商店能夠幫助研發(fā)團(tuán)隊(duì)自主創(chuàng)建所需要的服務(wù)實(shí)例。

創(chuàng)建持續(xù)交付流水線

建立持續(xù)交付流水線的核心問題是如何定義企業(yè)的軟件交付價(jià)值流動。

如下圖所示,我們總結(jié)了從開發(fā),持續(xù)集成,持續(xù)交付各個(gè)階段所使用的一些典型工具的使用,以及在各個(gè)階段中的相關(guān)團(tuán)隊(duì)的相關(guān)活動,典型的DevOps相關(guān)的活動。

 

在持續(xù)交付流水線下的團(tuán)隊(duì)協(xié)作

正如上文所說,創(chuàng)建持續(xù)交付流水線的本質(zhì)就是定義軟件的交付的價(jià)值流動,反應(yīng)正式的軟件交付流程。價(jià)值的流動則涉及到團(tuán)隊(duì)中各個(gè)職能的成員的高度協(xié)同。

基于容器的持續(xù)交付實(shí)踐當(dāng)中以鏡像作為在不同職能人員之間的價(jià)值傳遞物。

  • 開發(fā)人員:頻繁提交持續(xù)集成,通過持續(xù)的編譯,打包,測試,鏡像構(gòu)建,自動化驗(yàn)收測試等環(huán)節(jié)產(chǎn)生可測試的候選鏡像列表(如:0.1-dev)。
  • 測試人員:從候選測試鏡像列表中,選擇需要測試的目標(biāo)鏡像,標(biāo)記為測試版本(將0.1-dev標(biāo)記為0.1-test),并且將待測試鏡像自動部署到驗(yàn)收測試環(huán)境,完成手動探索性測試,對于已測試完成的鏡像標(biāo)記為預(yù)發(fā)布版本(0.1-test 標(biāo)記為 0.1-beta)。
  • 運(yùn)維人員:從預(yù)發(fā)布鏡像列表中選擇鏡像部署到預(yù)發(fā)布環(huán)境,并且在驗(yàn)證通過后標(biāo)記為release版本(如將0.1-beta 標(biāo)記為 0.1-release),并且發(fā)布到生產(chǎn)環(huán)境。

在基于容器的持續(xù)交付實(shí)現(xiàn)方案當(dāng)中,我們以鏡像為價(jià)值傳遞的單元,通過鏡像的持續(xù)測試以及驗(yàn)證,完成鏡像從開發(fā),測試到可發(fā)布的狀態(tài)轉(zhuǎn)變,完成軟件的交付流程。

責(zé)任編輯:武曉燕 來源: dockone
相關(guān)推薦

2017-10-19 09:47:55

容器化微服務(wù)集成

2024-07-18 08:08:06

2016-02-15 09:37:14

Docker持續(xù)交付應(yīng)用程序

2021-06-18 09:00:00

云計(jì)算開發(fā)存儲庫

2017-12-10 20:53:56

Docker持續(xù)交付容器

2017-02-27 18:28:45

持續(xù)交付部署

2017-02-14 20:15:15

docker容器持續(xù)交付

2018-06-15 22:41:06

開源軟件React軟件開發(fā)

2017-12-24 21:29:18

OpenShift持續(xù)交付集群

2021-04-23 08:00:00

Kubernetes容器工具

2017-02-27 18:35:23

集成交付部署

2016-08-05 17:19:37

持續(xù)集成持續(xù)交付系統(tǒng)運(yùn)維

2016-10-24 09:09:48

AnsibleVagrantFedora

2014-05-14 10:09:07

2017-07-17 06:46:06

2021-06-25 09:37:01

KubernetesDevtrongo

2017-02-27 18:50:42

運(yùn)維持續(xù)交付

2022-03-09 10:01:18

DevOps微服務(wù)架構(gòu)

2011-06-16 20:05:41

SEO

2024-08-02 10:00:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號