您的位置:首頁 > 網絡設備

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

                                            發布時間:2022-04-11 15:03:12  來源:IT資訊網    采編:author  背景:

                                            概述

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

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

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

                                            在持續集成中使用容器

                                            構建環境統一管理

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

                                            在持續集成中使用docker

                                            dockerrun--rm-vpwd:/workspace-v/tmp/.m2/repository:/root/.m2/repository--workdir/workspacemaven:3-jdk-8/bin/sh-c'mvncleanpackage'

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

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

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

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

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

                                            在持續集成中使用docker-compose

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

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

                                            build:command:sh-c'mvn--help'image:maven:3-jdk8links:[mysql]volumes:-'.:/code'-'/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以支持集成測試的需求

                                            docker-composerun--rmbuildsh-c'mvncleanpackage'&&docker-composestop&&docker-composerm-f

                                            rm 確保在構建命令執行完成后自動清理build所產生的容器。

                                            docker-compose stop && docker-compose rm -f 確保依賴的其它服務如mysql能夠正常的退出并且清理所產生的容器。

                                            建立持續交付解決方案

                                            建立基于共同目標的具有跨職能協同的研發團隊,是DevOps運動的根本。而自動化則是提高效率的基石?;谝陨衔覀兪侨绾位谌萜鹘⑽覀兊某掷m交付解決方案?

                                            基礎設施自動化

                                            使用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),并且發布到生產環境。

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

                                              聲明:本文僅為傳遞更多網絡信息,不代表IT資訊網觀點和意見,僅供參考了解,更不能作為投資使用依據。


                                            返回網站首頁 本文來源:IT資訊網

                                            本文評論
                                            到2026年,移動物聯網安全市場價值將達到80億美元
                                            擴大的威脅范圍、新的標準定義的安全協議,以及通過銷售
                                            日期:02-25
                                            品質為先 東芝企業級容量型硬盤技術峰會上都帶來了什么?
                                            近日,全球值得信賴的存儲產品供應商東芝在北京舉行“品
                                            日期:02-17
                                            互聯網整頓之后淫穢色情內容仍然存在 內容更加隱蔽
                                            今年以來,“凈網2018”行動引起社會各界的關
                                            日期:10-02
                                            企業數字化轉型的核心: SAP S\u002F4HANA
                                            在SAP論壇2016的現場,全部的內容也都是圍繞著S/4HANA來
                                            日期:02-16
                                            拿什么拯救你,我的Ansible
                                            在初期,使用Ansible感覺是比較新鮮的,還略微有點嗨,因為
                                            日期:02-13
                                            當超級APP越來越重,我們是否低估了輕量應用?
                                            如果要問當下互聯網最熱鬧的場景,無外乎各大新崛起的AP
                                            日期:10-02
                                            Kali Linux 2.0發布,基于Debian的Linux發行版
                                            Kali Linux 2.0 發布,該版本帶來了新的4.0內核,基于Debi
                                            日期:03-18
                                            電腦越用越慢?關鍵是這兩項設置,調整后運行流暢了
                                            你的電腦越用越慢了?可能你不知道有幾個設置在拖慢你的
                                            日期:02-14
                                            部署加速 LTE在中國騰飛
                                            2014年全國將有超過300個城市開啟4G服務,保守預計至少
                                            日期:02-27
                                            麒麟信安操作系統:挖掘場景,與云俱進
                                            ——攜手 openEuler 賦能關鍵行業應用。
                                            日期:02-13
                                            你的企業需要哪些AI處理單元?
                                            隨著越來越多的大型企業采用人工智能作為數字化轉型工
                                            日期:02-10
                                            MIT開發Twist編程語言:專門解決量子計算數據糾纏問題
                                            來自麻省理工學院計算機科學和人工智能(CSAIL)的科學家
                                            日期:03-02
                                             

                                            精品无码久久午夜福利