成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Docker在開發(fā)、測試中的應(yīng)用

mating / 3561人閱讀

摘要:對測試的影響讓單元測試運(yùn)行的更順暢單元測試驅(qū)動開發(fā)是一個很好的應(yīng)用程序開發(fā)方式,單元測試往往也是和代碼一起被提交到代碼倉庫中。但是很多單元測試通常依賴于很多其他服務(wù),而這些服務(wù)的標(biāo)準(zhǔn)化配置往往是一個難點(diǎn),如數(shù)據(jù)庫的搭建防火墻的配置等。

傳統(tǒng)的軟件開發(fā)、測試、運(yùn)維需要三個團(tuán)隊(duì)在三個不同的環(huán)境中進(jìn)行,而三個環(huán)境的不同引發(fā)了很多的問題。如:工作內(nèi)容的重復(fù);開發(fā)環(huán)境中可運(yùn)行的程序在測試和運(yùn)維環(huán)境下卻未必正常;開發(fā)人員提交代碼前的測試不充分而引入新的BUG,沒有有效的機(jī)制進(jìn)行提交前的充分測試;測試出的BUG因?yàn)榄h(huán)境的復(fù)雜使得開發(fā)人員難以復(fù)現(xiàn)等等。

Docker的出現(xiàn)讓一切都不同以往,Docker可以將系統(tǒng)與應(yīng)用打包成一個鏡像,可以根據(jù)Dockerfile和一個簡單的構(gòu)建命令輕易的重現(xiàn)開發(fā)和測試的環(huán)境。將Docker引入持續(xù)集成(Continuous Integration - CI)構(gòu)建系統(tǒng)中,保證了開發(fā)、測試、運(yùn)維環(huán)境的統(tǒng)一。結(jié)合Github和Jenkins可以實(shí)現(xiàn)自動化測試和自動部署?,F(xiàn)已有很多基于Docker容器技術(shù)的開發(fā)、測試、運(yùn)維一站式解決方案。Docker相關(guān)產(chǎn)品應(yīng)用的出現(xiàn)使得Docker的使用越來越方便。

持續(xù)集成的特點(diǎn):

它是一個自動化的周期性的集成測試過程,從檢出代碼、編譯構(gòu)建、運(yùn)行測試、結(jié)果記錄、測試統(tǒng)計(jì)等都是自動完成的,無需人工干預(yù);

需要有專門的集成服務(wù)器來執(zhí)行集成構(gòu)建;

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

持續(xù)集成的作用:

保證團(tuán)隊(duì)開發(fā)人員提交代碼的質(zhì)量,減輕了軟件發(fā)布時的壓力;

持續(xù)集成中的任何一個環(huán)節(jié)都是自動完成的,無需太多的人工干預(yù),有利于減少重復(fù)過程以節(jié)省時間、費(fèi)用和工作量;

開源項(xiàng)目Jenkins是一個基于Java開發(fā)的開放易用的持續(xù)集成平臺,可用于執(zhí)行和監(jiān)控重復(fù)性的工作:持續(xù)的軟件版本發(fā)布/測試項(xiàng)目;監(jiān)控外部調(diào)用執(zhí)行的工作??梢苑奖愕陌惭b第三方插件,可以實(shí)時監(jiān)控持續(xù)集成過程中存在的錯誤,并提供詳細(xì)的日志文件,還具備提醒功能,還能用圖表的形式形象地展示項(xiàng)目構(gòu)建的趨勢和穩(wěn)定性。其具備以下特點(diǎn):

易安裝:僅僅一個 java -jar jenkins.war,從官網(wǎng)下載該文件后,直接運(yùn)行,無需額外的安裝,更無需安裝數(shù)據(jù)庫;

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

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

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

集成E-Mail/RSS/IM:當(dāng)完成一次集成時,可通過這些工具實(shí)時告訴你集成結(jié)果(據(jù)我所知,構(gòu)建一次集成需要花費(fèi)一定時間,有了這個功能,你就可以在等待結(jié)果過程中,干別的事情);

JUnit/TestNG測試報(bào)告:也就是用以圖表等形式提供詳細(xì)的測試報(bào)表功能;

支持分布式構(gòu)建:Jenkins可以把集成構(gòu)建等工作分發(fā)到多臺計(jì)算機(jī)中完成;

文件指紋信息:Jenkins會保存哪次集成構(gòu)建產(chǎn)生了哪些jars文件,哪一次集成構(gòu)建使用了哪個版本的jars文件等構(gòu)建記錄;

支持第三方插件:使得 Jenkins 變得越來越強(qiáng)大;

想了解更多詳細(xì)信息請移步Jenkins官方網(wǎng)站。

BuildPipeline:這是Jenkins的一個插件,它可以將多個需要協(xié)同工作的Jenkins任務(wù)按照流水線進(jìn)行排序,將各任務(wù)間的關(guān)系變?yōu)榭梢暬膱D表,使得部署流程清晰可見。

通過Docker可以將每一個任務(wù)模塊化,并通過Dockerfile制作有針對性的鏡像來運(yùn)行任務(wù),并可以通過管道獲取各任務(wù)的執(zhí)行時間和結(jié)果,為產(chǎn)品的成功發(fā)布奠定基礎(chǔ)。接下來就是根據(jù)自身情況合理的利用和調(diào)度Docker。

Docker對測試的影響

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

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

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

可以輕易復(fù)現(xiàn)Bug場景;
傳統(tǒng)開發(fā)過程中,客戶的環(huán)境往往無法共享給開發(fā)團(tuán)隊(duì),導(dǎo)致Bug的復(fù)現(xiàn)出現(xiàn)困難,不得不通過客戶的log進(jìn)行分析。而Docker則可以通過鏡像立刻復(fù)現(xiàn)客戶的運(yùn)行場景,更快的定位問題。

Dockerfile可以構(gòu)建流程清晰可見;
Dockerfile是描述Docker鏡像構(gòu)建步驟的一個文檔,從FROM開始,每一步都是以上一步指令產(chǎn)生的鏡像為基礎(chǔ),執(zhí)行當(dāng)前的命令,然后將執(zhí)行結(jié)束后的整個環(huán)境打包成一個新的鏡像層并添加到基礎(chǔ)鏡像之后。以哪個鏡像為基礎(chǔ),又先后對該鏡像進(jìn)行了哪些操作都清晰可見,而鏡像的構(gòu)建又是嚴(yán)格依照該文件描述的步驟進(jìn)行,所以說,只要Dockerfile相同,依據(jù)其所構(gòu)建的鏡像也是相同的,當(dāng)然,前提條件是你的基礎(chǔ)鏡像也相同。

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

Docker技術(shù)適用范圍

Docker的目標(biāo):Build,Ship,and Run Any App,Anywhere;即在任何地方構(gòu)建、部署、運(yùn)行任何應(yīng)用程序。
但是Docker依然有它自身的局限性:

因?yàn)槿萜髋c主機(jī)公用內(nèi)核,所以如果容器需要使用不同的內(nèi)核版本,主機(jī)內(nèi)核就需要做同步變更;

不能修改內(nèi)核參數(shù)或自主定制內(nèi)核;

對內(nèi)核版本有依賴,Docker通常需要3.10或以上版本的內(nèi)核;

在容器中加載或卸載內(nèi)核模塊會影響到主機(jī)和其他容器;

跨主機(jī)通信能力不足;

無法像qemu一樣模擬嵌入式系統(tǒng)運(yùn)行環(huán)境;

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

Jenkins + Docker自動化環(huán)境配置 搭建Jenkins環(huán)境

方法一:直接在主機(jī)中配置Jenkins環(huán)境;

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環(huán)境;

# 拉取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
# 在瀏覽器中訪問容器所在宿主機(jī)ip:7780或domainname:7780即可進(jìn)入Jenkins頁面

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

構(gòu)建Gitlab環(huán)境

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

配置Jenkins環(huán)境

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

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控件請點(diǎn)擊這里。
接下來需要配置Jenkins的從節(jié)點(diǎn)。在從節(jié)點(diǎn)主機(jī)上安裝Java包:

apt-get -y install default-jre

Jenkins主節(jié)點(diǎn)是Jenkins Web Server所在的主機(jī),負(fù)責(zé)測試任務(wù)的調(diào)度,不負(fù)責(zé)測試用例的執(zhí)行。而從節(jié)點(diǎn)接受主節(jié)點(diǎn)的調(diào)度,負(fù)責(zé)測試用例的執(zhí)行。

配置Gitlab中的項(xiàng)目參數(shù) Jenkins中的常用Docker插件

Docker build step plugin:可以添加Docker命令到構(gòu)建步驟中;

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

Docker Plugin:可以使用Docker主機(jī)動態(tài)分配的容器作為Jenkins的從節(jié)點(diǎn);

Kubernetes Plugin:通過由Kubernetes管理的多個Docker主機(jī)系統(tǒng)來動態(tài)分配的容器作為Jenkins的從節(jié)點(diǎn);

Docker Commons Plugin:為其他與Docker相關(guān)的插件提供API;

參考目錄:

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

持續(xù)集成和Jenkins介紹

Jenkins百度百科

Jenkins官方網(wǎng)站

Jenkins+Github持續(xù)集成

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26622.html

相關(guān)文章

  • docker 的特點(diǎn)、組件、功能。

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

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

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

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

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

    since1986 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<