Docker Swarm在持续集成测试中怎么应用


这篇文章主要介绍了Docker Swarm在持续集成测试中怎么应用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Docker Swarm在持续集成测试中怎么应用文章都会有所收获,下面我们一起来看看吧。背景敏捷(agile)模式被广泛应用,测试显得尤为重要。由于需要频繁发布新的版本,我们需要更加频繁的执行测试用例,以确保没有新的 bug 被引入到版本中。一个完整的测试流程所需要占用的时间和资源也不可忽视,包括对测试结果的分析都要占用大量的资源。如何在更短时间内,提供完整、全面的测试以保证质量,是我们急于解决的问题,也是保证敏捷开发能顺利进行的关键。jenkins 实现了无人值守的测试流程,开发结束后,一旦在测试环境部署成功,下游的测试任务就会即刻执行。jenkins 的应用在一定程度上节省了人力资源,而 docker 技术可以实现容器 (container) 快速的拓展,从而节省了大量的设备资源和时间,快速的完成测试。这在 jenkins pipeline(代码流水线管理)中是非常重要的一个环节,如图 1 所示:图 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.1m2:10.13.181.2docker engine 从 v1.12.0 版本开始,原生集成了 docker swarm,所以只要在每台机器上安装 docker,就可以直接使用 docker swarm。在这里,关于 docker 的安装不再详细介绍,请按照官方 docker swarm 文档 进行安装。安装完成后,在每台机器上将 docker 服务启动。提示:注意:最好关闭机器上的防火墙,否则可能会出现 swarm 集群网络连接问题。关闭防火墙的命令:systemctl stop firewalld.service禁止防火墙开机启动命令:systemctl disable firewalld.service步骤1、创建管理节点。我们将机器 m1 作为 ma免费云主机域名nager 节点,在这台机器上执行命令来初始化集群环境。命令如下:执行此命令后,会返回一个用于加入集群的令牌(token),以便其他 worker 加入此集群。清单 1. 加入集群令牌示例:复制代码代码如下:docker swarm join –token swmtkn-1-5p3kzxhsvlqonst5wr02hdo185kcpdajcu9omy4z5dpmlsyrzj-
3phtv1qkfdly2kchzxh0h1xft 10.13.181.1:2377如果想再次获取加入集群的命令,可以通过执行以下命令获取:2、将机器 m1 也作为 worker 节点添加到集群。在 manager 节点机器上运行清单 1 的命令,即可将机器 m1 也作为 worker 加入 swarm 集群当中。3、将另一台机器 m2 作为 worker 节点添加到集群。在机器 m2 上执行上述清单 1 中的命令,即可实现 m2 加入集群的功能。4、运行如下命令创建集群网络:这里,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/hubb. 创建 selenium grid firefox 节点服务并连接到刚创建 hub 服务。如清单 3 所示。清单 3. 创建 selenium grid firefox 节点服务:参数说明:-p: 7900:5900 将 docker 内部 vnc5900 暴露到宿主机的 7900 端口,使得用户可以通过 vnc 从外面监控 docker 内部的执行情况。c. 创建 selenium grid chrome node 服务并连接到刚创建 hub 服务。如清单 4 所示。清单 4. 创建节点服务:参数说明:-p: 7901:5900 将 docker 内部 vnc5900 暴露到宿主机的 7901 端口,使得用户可以通过 vnc 从外面监控 docker 内部的执行情况。6、检查环境搭建是否成功。在机器 m1 上执行以下命令,查看每个服务是否启动成功:可以看到 selenium hub 和 firefox 节点、chrome 节点都已经成功启动。firefox 的节点副本是 5,chrome 的节点副本是 3,如图 2 所示。图 2. docker 服务清单我们再通过任意一台机器的 ip 加 4444 端口来打开 selenium hub url 来查看已启动的 firefox 和 chrome 节点是否已经成功挂载到 hub 节点上,如图 3 所示。hub url: 10.13.181.1:4444图 3. selenium hub 的界面图从图 3 可以看出,5 个 firefox 节点和 3 个 chrome 节点都已经成功挂载到 hub 节点上。说明此时 docker swarm 环境里已经提供了 5 个 firefox 节点和 3 个 chrome 节点可以用来执行 selenium 自动化测试脚本。扩容方法用户可以根据脚本执行数量,随时动态的扩容各个节点的数量,提高自动化脚本的执行效率,例如我们需要 10 个可以运行 firefox 浏览器的 container,对应的命令如下:在 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图 4. 自动化脚本的代码截图通过调用上述的 driver,就可以实现将自动化脚本运行在 docker container 中。关于“Docker Swarm在持续集成测试中怎么应用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Docker Swarm在持续集成测试中怎么应用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。

相关推荐: 基于Vue+echarts怎么编写一个折线图

这篇文章主要讲解了“基于Vue+echarts怎么编写一个折线图”,文中的讲解内容简单清晰,易于学习与理解,下面请大免费云主机域名家跟着小编的思路慢慢深入,一起来研究和学习“基于Vue+echarts怎么编写一个折线图”吧!以下是在Vue中使用ECharts创…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/20 21:07
下一篇 07/20 21:07

相关推荐