国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Docker在開發、測試中的應用

mating / 3540人閱讀

摘要:對測試的影響讓單元測試運行的更順暢單元測試驅動開發是一個很好的應用程序開發方式,單元測試往往也是和代碼一起被提交到代碼倉庫中。但是很多單元測試通常依賴于很多其他服務,而這些服務的標準化配置往往是一個難點,如數據庫的搭建防火墻的配置等。

傳統的軟件開發、測試、運維需要三個團隊在三個不同的環境中進行,而三個環境的不同引發了很多的問題。如:工作內容的重復;開發環境中可運行的程序在測試和運維環境下卻未必正常;開發人員提交代碼前的測試不充分而引入新的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.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add - && echo "deb http://pkg.jenkins-ci.org/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;

參考目錄:

《Docker技術入門與實踐》(楊保華 戴王劍 曹亞侖)

持續集成和Jenkins介紹

Jenkins百度百科

Jenkins官方網站

Jenkins+Github持續集成

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26622.html

相關文章

  • docker 的特點、組件、功能。

    摘要:鏡像鏡像是構建的基石。公司運營公共的叫做。標準集裝箱將貨物運往世界各地,將這個模型運用到自己的設計中,唯一不同的是集裝箱運輸貨物,而運輸軟件。這一點在面向服務的架構和重度依賴微型服務的部署由其實用。用創建隔離的環境來進行測試。 Docker特點1)上手快 用戶只需要幾分鐘,就可以把自己的程序Docker 化。Docker 依賴于寫時復制 (copy-on-write)模型,使修改應用程...

    saucxs 評論0 收藏0
  • Docker 個人用例

    摘要:避免我機器上可以運行無論是上一篇介紹的企業部署還是本文的個人用例,都提到了這個情況。如果你用的是,那么我給你一個建議從云主機提供商那兒租用一臺云主機我推薦使用系統的云主機。在云服務提供商之間移植大多數的云主機提供商已經全面支持。 在上篇文章 8 個你可能不知道的 Docker 知識 中介紹了 Docker 在生產環境中的用例,有些開發者可能還是不明白 Docker 對自己到底有多...

    W4n9Hu1 評論0 收藏0
  • Docker 個人用例

    摘要:避免我機器上可以運行無論是上一篇介紹的企業部署還是本文的個人用例,都提到了這個情況。如果你用的是,那么我給你一個建議從云主機提供商那兒租用一臺云主機我推薦使用系統的云主機。在云服務提供商之間移植大多數的云主機提供商已經全面支持。 在上篇文章 8 個你可能不知道的 Docker 知識 中介紹了 Docker 在生產環境中的用例,有些開發者可能還是不明白 Docker 對自己到底有多...

    since1986 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<