成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們應該如何基于容器來進行軟件的持續交付(一)

網絡 通信技術
在過去的一段時間里容器已經大量的使用到了IT軟件生產的各個環節當中:從軟件開發,持續集成,持續部署,測試環境到生產環境。

概述

在過去的一段時間里容器已經大量的使用到了IT軟件生產的各個環節當中:從軟件開發,持續集成,持續部署,測試環境到生產環境。

除了Docker官方的Docker Swarm, Docker Machine以及Docker Compose以外,開源軟件社區還涌現了一系列的與容器相關的工具,涵蓋了從容器編排,調度,監控,日志等等各個方面的需求。

本文將從針對軟件研發流程,基于容器解決軟件的持續交付問題,以及團隊協作問題。

在持續集成中使用容器

構建環境統一管理

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

在持續集成中使用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' 

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

--rm 命令可以確保當命令執行完成后能夠自動清理構建時產生的容器,我想你應該不太希望需要不定期清理構建服務器磁盤的問題吧。

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

--workerdir 用以指定構建命令執行的工作路徑,當然需要和workspace保持一致。

如上,基于容器我們可以快速搭建適應多種構建需求的CI構建環境,所有需要的一起就是你的構建服務器上需要的只有Docker。

在持續集成中使用docker-compose

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

當然在理想情況下我們還是希望能夠使用與真實環境一直的真正的數據庫或者其他中間件服務。基于docker-compose我們可以非常方便的實現對于復雜構建環境的需求。

  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為例,假設我們需要在構建中使用到mysql以支持集成測試的需求

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

建立持續交付解決方案

建立基于共同目標的具有跨職能協同的研發團隊,是DevOps運動的根本。而自動化則是提高效率的基石。基于以上我們是如何基于容器建立我們的持續交付解決方案?

基礎設施自動化

使用Rancher理由很簡單,Rancher是目前市面上***一個能滿足開箱即用的容器管理平臺,同時能夠支持多種編排引擎,如Rancher自己的Cattle,Google的K8S,以及Docker官方的Swarm作為容器編排引擎。同時Rancher提供的Catalog應用商店能夠幫助研發團隊自主創建所需要的服務實例。

創建持續交付流水線

建立持續交付流水線的核心問題是如何定義企業的軟件交付價值流動。

如下圖所示,我們總結了從開發,持續集成,持續交付各個階段所使用的一些典型工具的使用,以及在各個階段中的相關團隊的相關活動,典型的DevOps相關的活動。

 

在持續交付流水線下的團隊協作

正如上文所說,創建持續交付流水線的本質就是定義軟件的交付的價值流動,反應正式的軟件交付流程。價值的流動則涉及到團隊中各個職能的成員的高度協同。

基于容器的持續交付實踐當中以鏡像作為在不同職能人員之間的價值傳遞物。

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

在基于容器的持續交付實現方案當中,我們以鏡像為價值傳遞的單元,通過鏡像的持續測試以及驗證,完成鏡像從開發,測試到可發布的狀態轉變,完成軟件的交付流程。

責任編輯:武曉燕 來源: dockone
相關推薦

2017-10-19 09:47:55

容器化微服務集成

2024-07-18 08:08:06

2016-02-15 09:37:14

Docker持續交付應用程序

2021-06-18 09:00:00

云計算開發存儲庫

2017-12-10 20:53:56

Docker持續交付容器

2017-02-27 18:28:45

持續交付部署

2017-02-14 20:15:15

docker容器持續交付

2018-06-15 22:41:06

開源軟件React軟件開發

2017-12-24 21:29:18

OpenShift持續交付集群

2021-04-23 08:00:00

Kubernetes容器工具

2017-02-27 18:35:23

集成交付部署

2016-08-05 17:19:37

持續集成持續交付系統運維

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

運維持續交付

2022-03-09 10:01:18

DevOps微服務架構

2011-06-16 20:05:41

SEO

2024-08-02 10:00:00

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人欧美一区二区 | 亚洲国产成人久久综合一区,久久久国产99 | 日韩成人影院 | 精品综合久久久 | av片免费观看 | 一区二区三区国产精品 | 亚洲视频免费播放 | 三级在线观看 | 久青草影院 | 午夜免费精品视频 | 天天爱天天操 | 99视频入口 | 国产精品日韩一区二区 | 老头搡老女人毛片视频在线看 | 国产网站在线免费观看 | 国产精品久久久久一区二区三区 | 黄色在线免费网站 | 91精品国产91久久久久久吃药 | 高清亚洲 | 青草青草久热精品视频在线观看 | 婷婷精品 | 欧美区日韩区 | 国产精品成人在线 | 伊人影院在线观看 | 欧美激情一区二区三区 | 日韩国产高清在线观看 | 综合五月 | 亚洲久久久 | 成人动漫视频网站 | 久久久久国产一级毛片 | 亚洲欧美国产一区二区三区 | 国产精品久久久久久久久久免费看 | 91极品视频 | 精品国产伦一区二区三区观看说明 | 日本小电影网站 | 久久久久久久久91 | 日韩一二区 | 国产精品久久在线观看 | 一本一道久久a久久精品蜜桃 | 日韩成人在线播放 | 欧美日韩在线一区二区 |