国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 服務(wù)器 > Web服務(wù)器 > 正文

詳解Docker Swarm 在持續(xù)集成測(cè)試中的應(yīng)用

2024-09-01 13:55:58
字體:
供稿:網(wǎng)友

背景

敏捷(Agile)模式被廣泛應(yīng)用,測(cè)試顯得尤為重要。由于需要頻繁發(fā)布新的版本,我們需要更加頻繁的執(zhí)行測(cè)試用例,以確保沒有新的 bug 被引入到版本中。

一個(gè)完整的測(cè)試流程所需要占用的時(shí)間和資源也不可忽視,包括對(duì)測(cè)試結(jié)果的分析都要占用大量的資源。如何在更短時(shí)間內(nèi),提供完整、全面的測(cè)試以保證質(zhì)量,是我們急于解決的問題,也是保證敏捷開發(fā)能順利進(jìn)行的關(guān)鍵。

Jenkins 實(shí)現(xiàn)了無人值守的測(cè)試流程,開發(fā)結(jié)束后,一旦在測(cè)試環(huán)境部署成功,下游的測(cè)試任務(wù)就會(huì)即刻執(zhí)行。

Jenkins 的應(yīng)用在一定程度上節(jié)省了人力資源,而 Docker 技術(shù)可以實(shí)現(xiàn)容器 (Container) 快速的拓展,從而節(jié)省了大量的設(shè)備資源和時(shí)間,快速的完成測(cè)試。這在 Jenkins Pipeline(代碼流水線管理)中是非常重要的一個(gè)環(huán)節(jié),如圖 1 所示:

Docker,Swarm,持續(xù)集成

圖 1. Jenkins Pipeline

本文主要介紹如何利用 Docker Swarm 集群功能和 Selenium Grid 腳本分發(fā)功能,來搭建一個(gè)可以動(dòng)態(tài)擴(kuò)容的 Selenium 自動(dòng)化腳本執(zhí)行環(huán)境。相比于用真實(shí)的機(jī)器作為 Selenium 自動(dòng)化腳本執(zhí)行環(huán)境,使用此套環(huán)境可以極大的減少對(duì)執(zhí)行環(huán)境的維護(hù)工作,比如各種瀏覽器類型的管理和版本的管理。也能極大的減少對(duì)腳本執(zhí)行環(huán)境的物質(zhì)投入,節(jié)省各類資源。

搭建 Docker Swarm 集群

Swarm 簡(jiǎn)介

Swarm 是 Docker 官方提供的一款集群管理工具,用來管理 Docker 集群,它將若干臺(tái) Docker 主機(jī)抽象為一個(gè)整體,并且通過一個(gè)入口統(tǒng)一管理這些 Docker 主機(jī)上的各種 Docker 資源。

Swarm 只是一個(gè)調(diào)度器(Scheduler)加路由器(Router),Swarm 自己不運(yùn)行容器,它只是接受 Docker 客戶端發(fā)送過來的請(qǐng)求,調(diào)度適合的節(jié)點(diǎn)來運(yùn)行容器,這意味著,即使 Swarm 由于某些原因掛掉了,集群中的節(jié)點(diǎn)也會(huì)照常運(yùn)行,當(dāng) Swarm 重新恢復(fù)運(yùn)行之后,它會(huì)收集重建集群信息。

Swarm 和 Kubernetes 比較類似,但是更加輕,具有的功能也較 Kubernetes 更少一些。

環(huán)境準(zhǔn)備

為了搭建 Docker Swarm 集群環(huán)境,我在示例中準(zhǔn)備了兩臺(tái)機(jī)器。一臺(tái)作為 manager 節(jié)點(diǎn),同時(shí)也作為一個(gè) worker 節(jié)點(diǎn),另一臺(tái)只作為一個(gè) worker 節(jié)點(diǎn)。

這里假設(shè)我們的兩個(gè)機(jī)器 IP 信息如下:

  • M1:10.13.181.1
  • M2:10.13.181.2

Docker Engine 從 V1.12.0 版本開始,原生集成了 Docker Swarm,所以只要在每臺(tái)機(jī)器上安裝 Docker,就可以直接使用 Docker Swarm。在這里,關(guān)于 Docker 的安裝不再詳細(xì)介紹,請(qǐng)按照官方 Docker Swarm 文檔 進(jìn)行安裝。安裝完成后,在每臺(tái)機(jī)器上將 Docker 服務(wù)啟動(dòng)。

提示:

注意:最好關(guān)閉機(jī)器上的防火墻,否則可能會(huì)出現(xiàn) Swarm 集群網(wǎng)絡(luò)連接問題。

關(guān)閉防火墻的命令:systemctl stop firewalld.service

禁止防火墻開機(jī)啟動(dòng)命令:systemctl disable firewalld.service

步驟

1、創(chuàng)建管理節(jié)點(diǎn)。

我們將機(jī)器 M1 作為 manager 節(jié)點(diǎn),在這臺(tái)機(jī)器上執(zhí)行命令來初始化集群環(huán)境。命令如下:

sudo docker swarm init --advertise-addr 10.13.181.1

執(zhí)行此命令后,會(huì)返回一個(gè)用于加入集群的令牌(Token),以便其他 worker 加入此集群。

清單 1. 加入集群令牌示例:

 

復(fù)制代碼代碼如下:
docker swarm join --token SWMTKN-1-5p3kzxhsvlqonst5wr02hdo185kcpdajcu9omy4z5dpmlsyrzj-
3phtv1qkfdly2kchzxh0h1xft 10.13.181.1:2377

 

如果想再次獲取加入集群的命令,可以通過執(zhí)行以下命令獲取:

sudo docker swarm join-token worker

2、將機(jī)器 M1 也作為 worker 節(jié)點(diǎn)添加到集群。

在 manager 節(jié)點(diǎn)機(jī)器上運(yùn)行清單 1 的命令,即可將機(jī)器 M1 也作為 worker 加入 swarm 集群當(dāng)中。

3、將另一臺(tái)機(jī)器 M2 作為 worker 節(jié)點(diǎn)添加到集群。

在機(jī)器 M2 上執(zhí)行上述清單 1 中的命令,即可實(shí)現(xiàn) M2 加入集群的功能。

4、運(yùn)行如下命令創(chuàng)建集群網(wǎng)絡(luò):

sudo docker network create -d overlay seleniumnet

這里,seleniumnet 即是我們所創(chuàng)建的集群網(wǎng)絡(luò)名稱。

5、在新建的集群網(wǎng)絡(luò)上創(chuàng)建 Selenium Grid 服務(wù)。

a. 創(chuàng)建 Selenium Grid Hub 服務(wù)。基于集群網(wǎng)絡(luò) seleniumnet,將 4444 端口映射到集群的 4444 端口,將 timeout 時(shí)間設(shè)置為 120 秒,可以增大或減少 timeout 時(shí)間,如清單 2 所示。

清單 2. 創(chuàng)建 Selenium Grid Hub 服務(wù):

 

復(fù)制代碼代碼如下:
sudo docker service create --name selenium-hub --network seleniumnet -p 4444:4444 -e 
GRID_TIMEOUT=120 selenium/hub

 

b. 創(chuàng)建 Selenium Grid Firefox 節(jié)點(diǎn)服務(wù)并連接到剛創(chuàng)建 Hub 服務(wù)。如清單 3 所示。

清單 3. 創(chuàng)建 Selenium Grid Firefox 節(jié)點(diǎn)服務(wù):

sudo docker service create /--name node-firefox /--replicas 5 /-p 7900:5900 /--network seleniumnet /-e HUB_PORT_4444_TCP_ADDR=selenium-hub /-e HUB_PORT_4444_TCP_PORT=4444 /selenium/node-firefox-debug bash -c 'SE_OPTS="-host $HOSTNAME" /opt/bin/entry_point.sh'

參數(shù)說明:

-p: 7900:5900 將 Docker 內(nèi)部 VNC5900 暴露到宿主機(jī)的 7900 端口,使得用戶可以通過 VNC 從外面監(jiān)控 Docker 內(nèi)部的執(zhí)行情況。

c. 創(chuàng)建 Selenium Grid Chrome Node 服務(wù)并連接到剛創(chuàng)建 Hub 服務(wù)。如清單 4 所示。

清單 4. 創(chuàng)建節(jié)點(diǎn)服務(wù):

sudo docker service create /--name node-chrome /--replicas 3 /-p 7901:5900 /--network seleniumnet /-e HUB_PORT_4444_TCP_ADDR=selenium-hub /-e HUB_PORT_4444_TCP_PORT=4444 /selenium/node-chrome-debug bash -c 'SE_OPTS="-host $HOSTNAME" /opt/bin/entry_point.sh'

參數(shù)說明:

-p: 7901:5900 將 Docker 內(nèi)部 VNC5900 暴露到宿主機(jī)的 7901 端口,使得用戶可以通過 VNC 從外面監(jiān)控 Docker 內(nèi)部的執(zhí)行情況。

6、檢查環(huán)境搭建是否成功。在機(jī)器 M1 上執(zhí)行以下命令,查看每個(gè)服務(wù)是否啟動(dòng)成功:

sudo docker service ls

可以看到 Selenium Hub 和 Firefox 節(jié)點(diǎn)、Chrome 節(jié)點(diǎn)都已經(jīng)成功啟動(dòng)。Firefox 的節(jié)點(diǎn)副本是 5,Chrome 的節(jié)點(diǎn)副本是 3,如圖 2 所示。

Docker,Swarm,持續(xù)集成

圖 2. Docker 服務(wù)清單

我們?cè)偻ㄟ^任意一臺(tái)機(jī)器的 IP 加 4444 端口來打開 Selenium Hub URL 來查看已啟動(dòng)的 Firefox 和 Chrome 節(jié)點(diǎn)是否已經(jīng)成功掛載到 Hub 節(jié)點(diǎn)上,如圖 3 所示。

Hub url: 10.13.181.1:4444

Docker,Swarm,持續(xù)集成

圖 3. Selenium Hub 的界面圖

從圖 3 可以看出,5 個(gè) Firefox 節(jié)點(diǎn)和 3 個(gè) Chrome 節(jié)點(diǎn)都已經(jīng)成功掛載到 Hub 節(jié)點(diǎn)上。說明此時(shí) Docker Swarm 環(huán)境里已經(jīng)提供了 5 個(gè) Firefox 節(jié)點(diǎn)和 3 個(gè) Chrome 節(jié)點(diǎn)可以用來執(zhí)行 Selenium 自動(dòng)化測(cè)試腳本。

擴(kuò)容方法

用戶可以根據(jù)腳本執(zhí)行數(shù)量,隨時(shí)動(dòng)態(tài)的擴(kuò)容各個(gè)節(jié)點(diǎn)的數(shù)量,提高自動(dòng)化腳本的執(zhí)行效率,例如我們需要 10 個(gè)可以運(yùn)行 Firefox 瀏覽器的 Container,對(duì)應(yīng)的命令如下:

sudo docker service scale node-firefox=10

在 Docker Swarm 運(yùn)行 Jenkins Job

用戶在 Docker Swarm 中運(yùn)行 Jenkins Job,并不需要在 Jenkins 做多余的配置,而是需要在對(duì)應(yīng)的自動(dòng)化腳本中調(diào)用 Selenium Hub,從而以遠(yuǎn)程的方式調(diào)用 WebDriver。這樣就實(shí)現(xiàn)了在 Docker Container 中運(yùn)行 Selenium 腳本。

以本文中的場(chǎng)景為例,只需要在自動(dòng)化腳本中調(diào)用遠(yuǎn)程 Selenium Hub 即可,如下所示:http://9.111.139.104:4444/wd/hub

在 Selenium Grid 中運(yùn)行自動(dòng)化腳本

基本概念

Selenium Grid,用于分布式自動(dòng)化測(cè)試,也就是說一套 Selenium 代碼可在不同的環(huán)境上運(yùn)行,這樣做可以方便的將應(yīng)用運(yùn)行在 Docker 所提供的不同 Container 中。

Selenium Grid 有兩個(gè)概念:

  • Hub:主節(jié)點(diǎn),你可以看作總調(diào)度中心。
  • Node:分支節(jié)點(diǎn),你可以看作是真正執(zhí)行任務(wù)的 worker。

也就是說在 Selenium Grid 中只能有一個(gè)主 Hub,但可以在本地或遠(yuǎn)程建立 N 多個(gè)分支節(jié)點(diǎn),測(cè)試腳本指向主 Hub,由主 Hub 分配給本地/遠(yuǎn)程節(jié)點(diǎn)運(yùn)行測(cè)試用例。

實(shí)現(xiàn)方式

要實(shí)現(xiàn)在 Selenium Grid 中運(yùn)行自動(dòng)化腳本,首先我們要?jiǎng)?chuàng)建一個(gè) remote driver 的對(duì)象,可以通過圖 4 源碼實(shí)現(xiàn),截圖中所對(duì)應(yīng)的輸入?yún)?shù) selhub 是 Selenium hub 的 URL:http://9.111.139.104:4444/wd/hub

Docker,Swarm,持續(xù)集成

圖 4. 自動(dòng)化腳本的代碼截圖

通過調(diào)用上述的 driver,就可以實(shí)現(xiàn)將自動(dòng)化腳本運(yùn)行在 Docker Container 中。

結(jié)束語

在持續(xù)集成測(cè)試中,將測(cè)試部署到 Docker Swarm 中,通過 Selenium Grid 自動(dòng)分配執(zhí)行測(cè)試的節(jié)點(diǎn),可以提升測(cè)試效率,增大測(cè)試的范圍,在快速迭代中能夠更好的保證所交付的產(chǎn)品質(zhì)量,節(jié)省測(cè)試資源。

原文鏈接: https://www.ibm.com/developerw ... .html


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到服務(wù)器教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产区在线看| 日本一本久久| 九九热视频精品在线观看| 中文字幕av高清| 国产在线观看色| 国产污视频在线| 影音先锋在线中文字幕| 日本黄在线观看| 国产午夜精品一区理论片| 精品国产福利一区二区在线| 亚洲精品在线播放视频| 久久精品最新免费国产成人| 国产一区二区三区不卡免费观看 | 超碰在线国产| 国产免费专区| 尤物视频在线观看视频| 日本最新在线视频| 精品免费视频一卡2卡三卡4卡不卡| 亚洲成年人视频| 国产视频中文字幕| 欧美日韩亚洲国内综合网| 怡红院av在线| 国产黄色在线网站| 国产蜜臀av在线播放| 影音先锋在线中文字幕| 国产小视频在线高清播放| 久热国产在线| 超碰在线影院| 欧美日韩亚洲第一页| 精品无吗乱吗av国产爱色| 午夜视频在线观看网站午夜视频在线 | 国产你懂的在线观看| 精品偷拍激情视频在线观看| 中文字幕在线视频免费观看| 九九99精品| 日p在线观看| gogo高清在线播放免费| 中文视频在线| 国产精品国精产品一二| 尤物视频免费在线观看| 黄色网页网址在线免费| 另类高清dbsm日本tvav| 蜜桃av网站| 高清av中文在线字幕观看1| www亚洲天堂| 欧美亚洲另类在线观看| 老司机精品视频一区二区| 狠狠干在线视频| 国产日产一区二区三区| 精品伦理一区二区| 在线视频观看你懂的| 在线国产中文字幕| 久久久久久久久久久久久91| 美女国产在线| 中文字幕免费中文| 国产成人福利| 日本国产在线| 国产美女在线一区二区三区| 中文字幕国产欧美| 国产福利三区| 成年女人在线视频| 国产精品入口麻豆免费| 在线中文字幕资源| 国产在线超碰| 2020国产在线视频| 国内a∨免费播放| 精品无吗乱吗av国产爱色| 免费日本黄色| 国产区视频在线观看| v天堂福利视频在线观看| 国产精品免费视频一区一| av中文在线| 国产国产国产国产国产国产 | 中文字幕av免费| 麻豆电影传媒二区| 国产高清av| 五月婷婷视频在线观看| 亚洲电影视频在线| 国产黄色在线免费观看| 久久五月精品| av文字幕在线观看| 国产一二区视频| 日本在线天堂| 亚洲精品午夜级久久久久| 国产三级视频在线看| 九九热精品在线视频| 精品剧情v国产在线观看| 国产精品亚洲第五区在线| 亚洲日本一区二区三区在线观看 | 在线播放黄色网址| 国产精品美女一区二区三区四区| 欧美韩日国产| 亚洲人在线播放| 精品国产一区二区三区不卡在线 | 日韩av成人| 国产永久在线观看| 欧美韩日国产| 九九热视频免费在线观看| www在线免费观看视频| 夜夜操com| 天天插天天干| 欧美性xxxx交| 国产免费电影网站入口| 国产字幕在线看| 午夜视频在线观看网站午夜视频在线| 欧美精品se| 九七电影韩国女主播在线观看| 免费在线超碰| 免费在线黄色网址| 国产毛片毛片| 国产对白在线| 亚洲人成电影| 国产女人在线观看| 国产黄视频在线观看| 中文av资源在线| www.操操操.com| 国产美女在线一区二区三区| 中文字幕在线免费观看| 国产视频二区| 在线观看电影av| 男人操女人免费网站| 91av资源在线| 992tv在线观看在线播放| 在线观看精品视频一区二区三区 | 国产精品美女一区二区三区四区| 精品视频一二三| 浪潮av一区| 97最新国自产拍视频在线完整在线看| 日本韩国精品一区二区| 久久精品国产麻豆| 91亚洲欧美| 国产亚洲精品午夜高清影院| 亚洲天堂久久久| 国产一卡二卡3卡4卡四卡在线| 亚洲国产精华液| 国产免费网址| 女子免费在线观看视频www| 国产视频三级在线观看播放| 亚洲最新永久观看在线| 国产小视频免费在线观看| av在线日韩国产精品| 国产精品久久久久久久牛牛| 日韩中文字幕久久久经典网| 国产黄视频在线观看| 狠狠操视频网| 日本福利在线观看| 97在线免费| 国产亚洲精品久久久久久移动网络| 天堂在线国产| av在线1区2区| 精品麻豆视频| 国产黄色一级片| 国产网站观看9久| 最近中文字幕mv2018在线高清 | 日本电影在线观看| 中文字幕2019第三页| 国产精品国产三级国产试看| 国产精品一区二区三区视频网站| 欧美日韩一区二区三区视视频| 97在线超碰| 亚洲伊人网在线观看| 亚洲网站一区| 日日夜夜中文字幕| 青青九九免费视频在线| 精品欧美色视频网站在线观看| 国产网红在线| 国产h在线观看| 在线免费看av| 开心快乐六月丁香婷婷| 黄色片视频在线观看| 免费在线观看a| 五月天婷婷基地| 国产福利微拍精品一区二区| 91这里只有精品| 亚洲欧美精品日韩欧美 | 国内自拍视频在线观看| 丁香综合在线| 国产黄色在线观看| 夜夜操天天干| 中文字幕在线永久在线视频| 91福利在线视频| 日本电影在线观看| 午夜av在线播放| 亚洲视频网站在线| 国产免费a∨片在线观看不卡| 国产欧美在线观看视频| 在线免费国产视频| 黄色毛片在线观看| 精品卡1卡2卡三卡免费网站| 国产在线视频自拍| 国产精品视频二区三区| 在线观看免费高清完整| 国产69精品久久app免费版| 国产精品伦一区二区三区级视频频| 伊人春色在线| 午夜伦全在线观看| eeuss影院www在线观看| 国产污污在线观看| 久久久久久久久免费视频| 国产福利av网站|