久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    Docker在開發、測試中的應用

     自由裸奔者 2018-03-06

    傳統的軟件開發、測試、運維需要三個團隊在三個不同的環境中進行,而三個環境的不同引發了很多的問題。如:工作內容的重復;開發環境中可運行的程序在測試和運維環境下卻未必正常;開發人員提交代碼前的測試不充分而引入新的BUG,沒有有效的機制進行提交前的充分測試;測試出的BUG因為環境的復雜使得開發人員難以復現等等。

    Docker的出現讓一切都不同以往,Docker可以將系統與應用打包成一個鏡像,可以根據Dockerfile和一個簡單的構建命令輕易的重現開發和測試的環境。將Docker引入持續集成(Continuous Integration - CI)構建系統中,保證了開發、測試、運維環境的統一。結合Github和Jenkins可以實現自動化測試和自動部署。現已有很多基于Docker容器技術的開發、測試、運維一站式解決方案。Docker相關產品應用的出現使得Docker的使用越來越方便。

    持續集成的特點:

    • 它是一個自動化的周期性的集成測試過程,從檢出代碼、編譯構建、運行測試、結果記錄、測試統計等都是自動完成的,無需人工干預;

    • 需要有專門的集成服務器來執行集成構建;

    • 需要有代碼托管工具支持;

    持續集成的作用:

    • 保證團隊開發人員提交代碼的質量,減輕了軟件發布時的壓力;

    • 持續集成中的任何一個環節都是自動完成的,無需太多的人工干預,有利于減少重復過程以節省時間、費用和工作量;

    開源項目Jenkins是一個基于Java開發的開放易用的持續集成平臺,可用于執行和監控重復性的工作:持續的軟件版本發布/測試項目;監控外部調用執行的工作。可以方便的安裝第三方插件,可以實時監控持續集成過程中存在的錯誤,并提供詳細的日志文件,還具備提醒功能,還能用圖表的形式形象地展示項目構建的趨勢和穩定性。其具備以下特點:

    • 易安裝:僅僅一個 java -jar jenkins.war,從官網下載該文件后,直接運行,無需額外的安裝,更無需安裝數據庫;

    • 易配置:提供友好的GUI配置界面;

    • 變更支持:Jenkins能從代碼倉庫(Subversion/CVS)中獲取并產生代碼更新列表并輸出到編譯輸出信息中;

    • 支持永久鏈接:用戶是通過web來訪問Jenkins的,而這些web頁面的鏈接地址都是永久鏈接地址,因此,你可以在各種文檔中直接使用該鏈接;

    • 集成E-Mail/RSS/IM:當完成一次集成時,可通過這些工具實時告訴你集成結果(據我所知,構建一次集成需要花費一定時間,有了這個功能,你就可以在等待結果過程中,干別的事情);

    • JUnit/TestNG測試報告:也就是用以圖表等形式提供詳細的測試報表功能;

    • 支持分布式構建:Jenkins可以把集成構建等工作分發到多臺計算機中完成;

    • 文件指紋信息:Jenkins會保存哪次集成構建產生了哪些jars文件,哪一次集成構建使用了哪個版本的jars文件等構建記錄;

    • 支持第三方插件:使得 Jenkins 變得越來越強大;

    想了解更多詳細信息請移步Jenkins官方網站

    BuildPipeline:這是Jenkins的一個插件,它可以將多個需要協同工作的Jenkins任務按照流水線進行排序,將各任務間的關系變為可視化的圖表,使得部署流程清晰可見。

    通過Docker可以將每一個任務模塊化,并通過Dockerfile制作有針對性的鏡像來運行任務,并可以通過管道獲取各任務的執行時間和結果,為產品的成功發布奠定基礎。接下來就是根據自身情況合理的利用和調度Docker。

    Docker對測試的影響

    • 讓單元測試運行的更順暢;
      單元測試驅動開發是一個很好的應用程序開發方式,單元測試往往也是和代碼一起被提交到代碼倉庫中。但是很多單元測試通常依賴于很多其他服務,而這些服務的標準化配置往往是一個難點,如數據庫的搭建、防火墻的配置等。而Docker容器則可以將這些配置一起打包到新的鏡像中,從而輕松的完成這些測試。

    • 讓虛擬機不再困擾集成測試和功能測試;
      為降低成本,過去很多不同業務的測試會運行在同一個虛擬機中,這樣的測試環境并不純粹。而通過Docker則可以在數秒內部署出一套清潔的測試環境,包括微服務的架構的測試環境,同時這些測試環境是可以共享的。

    • 測試團隊和客戶無需再配置冗長的配置文件;
      通常軟件的復雜度越高,其環境配置也就越復雜,傳統的測試通常需要先根據用戶文檔進行環境配置,而且還不一定一次性成功,錯誤的環境配置也更容易報出Bug。而Docker則可以通過打包鏡像保證開發、測試、運維環境的一致性,包括配置文件、路徑、權限等。

    • 可以輕易復現Bug場景;
      傳統開發過程中,客戶的環境往往無法共享給開發團隊,導致Bug的復現出現困難,不得不通過客戶的log進行分析。而Docker則可以通過鏡像立刻復現客戶的運行場景,更快的定位問題。

    • Dockerfile可以構建流程清晰可見;
      Dockerfile是描述Docker鏡像構建步驟的一個文檔,從FROM開始,每一步都是以上一步指令產生的鏡像為基礎,執行當前的命令,然后將執行結束后的整個環境打包成一個新的鏡像層并添加到基礎鏡像之后。以哪個鏡像為基礎,又先后對該鏡像進行了哪些操作都清晰可見,而鏡像的構建又是嚴格依照該文件描述的步驟進行,所以說,只要Dockerfile相同,依據其所構建的鏡像也是相同的,當然,前提條件是你的基礎鏡像也相同。

    • 成熟的測試套件和工具可以通過鏡像共享;
      軟件廠商發布的測試套件和工具可以直接打包進鏡像進行發布。環境的配置直接使用鏡像即可,而不再是根據用戶手冊進行配置。

    Docker技術適用范圍

    Docker的目標:Build,Ship,and Run Any App,Anywhere;即在任何地方構建、部署、運行任何應用程序。
    但是Docker依然有它自身的局限性:

    • 因為容器與主機公用內核,所以如果容器需要使用不同的內核版本,主機內核就需要做同步變更;

    • 不能修改內核參數或自主定制內核;

    • 對內核版本有依賴,Docker通常需要3.10或以上版本的內核;

    • 在容器中加載或卸載內核模塊會影響到主機和其他容器;

    • 跨主機通信能力不足;

    • 無法像qemu一樣模擬嵌入式系統運行環境;

    雖然某些舊版本內核也可以運行Docker,但是Docker官方對這類內核不提供支持,而這類內核很可能潛在諸多問題。另外,運行Docker對很多內核編譯選項有要求,基于舊版本內核的Linux發行版不一定開啟了這些編譯選項,可能需要用戶重新編譯內核才能運行。

    Jenkins Docker自動化環境配置

    搭建Jenkins環境

    • 方法一:直接在主機中配置Jenkins環境;

      wget -qO - http://pkg./debian/.key | apt-key add - && echo 'deb http://pkg./debian binary/' | tee /etc/apt/sources.list.d/jenkins.list && apt-get update && apt-get -y install jenkins
    • 方法二:使用Docker鏡像配置Jenkins環境;

      # 拉取Jenkins鏡像 $ docker pull jenkins && mkdir /opt/jenkins/data # 啟動jenkins容器 $ docker run -d --name jenkins-server -p 7780:8080 -p 50000:50000 -v /opt/jenkins/data:/var/jenkins_home -u root --restart always jenkins # 在瀏覽器中訪問容器所在宿主機ip:7780或domainname:7780即可進入Jenkins頁面

    大多數工具基本都是這兩種安裝方式。

    構建Gitlab環境

    Gitlab類似于Github,是一個項目管理程序,可以瀏覽源代碼、管理缺陷和注釋,不同的是Github私有項目收費,而Gitlab則是搭建在自己的服務器上的。具體操作請參照Gitlab官方網站。當然你也可以選擇Github,很多有名的開源項目都是放在Github上的,你也可以找到更多的幫助和說明文檔。

    配置Jenkins環境

    需要的Jenkins控件(系統管理 - 管理插件):

    • GIT client plugin:1.18.0

    • GIT plugin:2.4.0

    • Gitlab Merge Request Builder:1.2.2

    • GitLab Plugin:1.1.25

    • SCM API Plugin

    如果需要更多的Jenkins控件請點擊這里
    接下來需要配置Jenkins的從節點。在從節點主機上安裝Java包:

    apt-get -y install default-jre

    Jenkins主節點是Jenkins Web Server所在的主機,負責測試任務的調度,不負責測試用例的執行。而從節點接受主節點的調度,負責測試用例的執行。

    配置Gitlab中的項目參數

    Jenkins中的常用Docker插件

    • Docker build step plugin:可以添加Docker命令到構建步驟中;

    • CloudBees Docker Build and Publish plugin:提供通過Dockerfile構建工程的能力并將制作好的鏡像發布到Docker倉庫中;

    • Docker Plugin:可以使用Docker主機動態分配的容器作為Jenkins的從節點;

    • Kubernetes Plugin:通過由Kubernetes管理的多個Docker主機系統來動態分配的容器作為Jenkins的從節點;

    • Docker Commons Plugin:為其他與Docker相關的插件提供API;

    參考目錄:

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 中文人妻av高清一区二区| 亚洲VA中文字幕无码久久| 国产精品99中文字幕| 99久久精品国产一区二区蜜芽| 玩弄放荡人妻少妇系列| 2020年最新国产精品正在播放| 一級特黃色毛片免費看| 色综合久久久无码中文字幕| 国产成人8X人网站视频| 色悠久久久久综合网伊| 亚洲乱理伦片在线观看中字| 国产亚洲精久久久久久无码| 亚洲欧美人成电影在线观看| 中文字幕无码无码专区| 国内少妇偷人精品免费| 精品无码国产自产拍在线观看| 在线看无码的免费网站| 内射女校花一区二区三区| 成人看的污污超级黄网站免费| 久久久久亚洲AV成人网人人软件| 亚洲色大成网站WWW永久麻豆| 又大又粗又硬又爽黄毛少妇| 国产精品福利自产拍久久| 少妇内射高潮福利炮| 国产美女MM131爽爽爽| 四虎影视一区二区精品| 亚洲精品高清国产一久久| 亚洲人成电影在线天堂色| 99久久99久久精品国产片| 国产精品美女久久久久久麻豆| 国产精品黑色丝袜在线观看| 国产成人AV性色在线影院| 最新国产精品中文字幕| 国产激情视频一区二区三区| 免费A级毛片免费观看视频| 国产一区二区波多野结衣| 国产成人无码A区在线观看视频| 欧美综合婷婷欧美综合五月| 日本欧美大码a在线观看| 久久精品国产一区二区三区| 五月天天天综合精品无码|