中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker Swarm在持續集成測試中怎么應用

發布時間:2022-03-24 17:42:36 來源:億速云 閱讀:182 作者:iii 欄目:web開發

這篇文章主要介紹了Docker Swarm在持續集成測試中怎么應用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Docker Swarm在持續集成測試中怎么應用文章都會有所收獲,下面我們一起來看看吧。

背景

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

一個完整的測試流程所需要占用的時間和資源也不可忽視,包括對測試結果的分析都要占用大量的資源。如何在更短時間內,提供完整、全面的測試以保證質量,是我們急于解決的問題,也是保證敏捷開發能順利進行的關鍵。

jenkins 實現了無人值守的測試流程,開發結束后,一旦在測試環境部署成功,下游的測試任務就會即刻執行。

jenkins 的應用在一定程度上節省了人力資源,而 docker 技術可以實現容器 (container) 快速的拓展,從而節省了大量的設備資源和時間,快速的完成測試。這在 jenkins pipeline(代碼流水線管理)中是非常重要的一個環節,如圖 1 所示:

Docker Swarm在持續集成測試中怎么應用

圖 1. jenkins pipeline

本文主要介紹如何利用 docker swarm 集群功能和 selenium grid 腳本分發功能,來搭建一個可以動態擴容的 selenium 自動化腳本執行環境。相比于用真實的機器作為 selenium 自動化腳本執行環境,使用此套環境可以極大的減少對執行環境的維護工作,比如各種瀏覽器類型的管理和版本的管理。也能極大的減少對腳本執行環境的物質投入,節省各類資源。

搭建 docker swarm 集群

swarm 簡介

swarm 是 docker 官方提供的一款集群管理工具,用來管理 docker 集群,它將若干臺 docker 主機抽象為一個整體,并且通過一個入口統一管理這些 docker 主機上的各種 docker 資源。

swarm 只是一個調度器(scheduler)加路由器(router),swarm 自己不運行容器,它只是接受 docker 客戶端發送過來的請求,調度適合的節點來運行容器,這意味著,即使 swarm 由于某些原因掛掉了,集群中的節點也會照常運行,當 swarm 重新恢復運行之后,它會收集重建集群信息。

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

環境準備

為了搭建 docker swarm 集群環境,我在示例中準備了兩臺機器。一臺作為 manager 節點,同時也作為一個 worker 節點,另一臺只作為一個 worker 節點。

這里假設我們的兩個機器 ip 信息如下:

  • m1:10.13.181.1

  • m2:10.13.181.2

docker engine 從 v1.12.0 版本開始,原生集成了 docker swarm,所以只要在每臺機器上安裝 docker,就可以直接使用 docker swarm。在這里,關于 docker 的安裝不再詳細介紹,請按照官方 docker swarm 文檔 進行安裝。安裝完成后,在每臺機器上將 docker 服務啟動。

提示:

注意:最好關閉機器上的防火墻,否則可能會出現 swarm 集群網絡連接問題。

關閉防火墻的命令:systemctl stop firewalld.service

禁止防火墻開機啟動命令:systemctl disable firewalld.service

步驟

1、創建管理節點。

我們將機器 m1 作為 manager 節點,在這臺機器上執行命令來初始化集群環境。命令如下:

sudo docker swarm init --advertise-addr 10.13.181.1

執行此命令后,會返回一個用于加入集群的令牌(token),以便其他 worker 加入此集群。

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

復制代碼 代碼如下:

docker swarm join --token swmtkn-1-5p3kzxhsvlqonst5wr02hdo185kcpdajcu9omy4z5dpmlsyrzj-
3phtv1qkfdly2kchzxh0h1xft 10.13.181.1:2377

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

sudo docker swarm join-token worker

2、將機器 m1 也作為 worker 節點添加到集群。

在 manager 節點機器上運行清單 1 的命令,即可將機器 m1 也作為 worker 加入 swarm 集群當中。

3、將另一臺機器 m2 作為 worker 節點添加到集群。

在機器 m2 上執行上述清單 1 中的命令,即可實現 m2 加入集群的功能。

4、運行如下命令創建集群網絡:

sudo docker network create -d overlay seleniumnet

這里,seleniumnet 即是我們所創建的集群網絡名稱。

5、在新建的集群網絡上創建 selenium grid 服務。

a. 創建 selenium grid hub 服務。基于集群網絡 seleniumnet,將 4444 端口映射到集群的 4444 端口,將 timeout 時間設置為 120 秒,可以增大或減少 timeout 時間,如清單 2 所示。

清單 2. 創建 selenium grid hub 服務:

復制代碼 代碼如下:

sudo docker service create --name selenium-hub --network seleniumnet -p 4444:4444 -e
grid_timeout=120 selenium/hub

b. 創建 selenium grid firefox 節點服務并連接到剛創建 hub 服務。如清單 3 所示。

清單 3. 創建 selenium grid firefox 節點服務:

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'

參數說明:

-p: 7900:5900 將 docker 內部 vnc5900 暴露到宿主機的 7900 端口,使得用戶可以通過 vnc 從外面監控 docker 內部的執行情況。

c. 創建 selenium grid chrome node 服務并連接到剛創建 hub 服務。如清單 4 所示。

清單 4. 創建節點服務:

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'

參數說明:

-p: 7901:5900 將 docker 內部 vnc5900 暴露到宿主機的 7901 端口,使得用戶可以通過 vnc 從外面監控 docker 內部的執行情況。

6、檢查環境搭建是否成功。在機器 m1 上執行以下命令,查看每個服務是否啟動成功:

sudo docker service ls

可以看到 selenium hub 和 firefox 節點、chrome 節點都已經成功啟動。firefox 的節點副本是 5,chrome 的節點副本是 3,如圖 2 所示。

Docker Swarm在持續集成測試中怎么應用

圖 2. docker 服務清單

我們再通過任意一臺機器的 ip 加 4444 端口來打開 selenium hub url 來查看已啟動的 firefox 和 chrome 節點是否已經成功掛載到 hub 節點上,如圖 3 所示。

hub url: 10.13.181.1:4444

Docker Swarm在持續集成測試中怎么應用

圖 3. selenium hub 的界面圖

從圖 3 可以看出,5 個 firefox 節點和 3 個 chrome 節點都已經成功掛載到 hub 節點上。說明此時 docker swarm 環境里已經提供了 5 個 firefox 節點和 3 個 chrome 節點可以用來執行 selenium 自動化測試腳本。

擴容方法

用戶可以根據腳本執行數量,隨時動態的擴容各個節點的數量,提高自動化腳本的執行效率,例如我們需要 10 個可以運行 firefox 瀏覽器的 container,對應的命令如下:

sudo docker service scale node-firefox=10

在 docker swarm 運行 jenkins job

用戶在 docker swarm 中運行 jenkins job,并不需要在 jenkins 做多余的配置,而是需要在對應的自動化腳本中調用 selenium hub,從而以遠程的方式調用 webdriver。這樣就實現了在 docker container 中運行 selenium 腳本。

以本文中的場景為例,只需要在自動化腳本中調用遠程 selenium hub 即可,如下所示:http://9.111.139.104:4444/wd/hub

在 selenium grid 中運行自動化腳本

基本概念

selenium grid,用于分布式自動化測試,也就是說一套 selenium 代碼可在不同的環境上運行,這樣做可以方便的將應用運行在 docker 所提供的不同 container 中。

selenium grid 有兩個概念:

  • hub:主節點,你可以看作總調度中心。

  • node:分支節點,你可以看作是真正執行任務的 worker。

也就是說在 selenium grid 中只能有一個主 hub,但可以在本地或遠程建立 n 多個分支節點,測試腳本指向主 hub,由主 hub 分配給本地/遠程節點運行測試用例。

實現方式

要實現在 selenium grid 中運行自動化腳本,首先我們要創建一個 remote driver 的對象,可以通過圖 4 源碼實現,截圖中所對應的輸入參數 selhub 是 selenium hub 的 url:http://9.111.139.104:4444/wd/hub

Docker Swarm在持續集成測試中怎么應用

圖 4. 自動化腳本的代碼截圖

通過調用上述的 driver,就可以實現將自動化腳本運行在 docker container 中。

關于“Docker Swarm在持續集成測試中怎么應用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Docker Swarm在持續集成測試中怎么應用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

应用必备| 漯河市| 栾城县| 东山县| 桐庐县| 铁岭县| 青铜峡市| 丘北县| 周宁县| 三都| 常山县| 麻阳| 启东市| 雅安市| 木兰县| 高州市| 循化| 当阳市| 贵德县| 昌平区| 兴安盟| 左云县| 鸡西市| 容城县| 搜索| 资源县| 濉溪县| 讷河市| 沈阳市| 达日县| 湖北省| 三明市| 合水县| 龙山县| 都安| 宜城市| 淳化县| 嘉祥县| 开阳县| 九台市| 凤阳县|