亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

mating / 3642人閱讀

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Docker對(duì)測(cè)試的影響

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

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

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

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

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

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

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

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

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

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

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

Jenkins + Docker自動(dòng)化環(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
# 啟動(dòng)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頁(yè)面

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

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

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

配置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控件請(qǐng)點(diǎn)擊這里。
接下來(lái)需要配置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é)測(cè)試任務(wù)的調(diào)度,不負(fù)責(zé)測(cè)試用例的執(zhí)行。而從節(jié)點(diǎn)接受主節(jié)點(diǎn)的調(diào)度,負(fù)責(zé)測(cè)試用例的執(zhí)行。

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

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

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

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

Kubernetes Plugin:通過(guò)由Kubernetes管理的多個(gè)Docker主機(jī)系統(tǒng)來(lái)動(dò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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/26622.html

相關(guān)文章

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

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

    saucxs 評(píng)論0 收藏0
  • Docker 個(gè)人用例

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

    W4n9Hu1 評(píng)論0 收藏0
  • Docker 個(gè)人用例

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

    since1986 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<