我试图让Selenium Grid和Jenkins在GKE中一起工作。
我为Jenkins找到了Selenium插件(https://plugins.jenkins.io/selenium),但我不确定它是否可用于获取我想要的内容。
我按照这里的步骤站起来詹姆斯: https://github.com/GoogleCloudPlatform/kube-jenkins-imager (我将jenkins节点的图像更改为使用Jenkins 2.86)
这将创建一个在kubernetes中运行的Jenkins实例,根据需要将slaves生成到集群中。
但我不相信这与Selenium插件兼容。什么是最好的方式来获取我拥有的并让它与Jenkins这个实例一起工作?
我还能够使用以下方法获取Selenium的实例并进入同一群集: https://gist.github.com/elsonrodriguez/261e746cf369a60a5e2d (我从实例中删除了2.x版本以引入最新的容器。)
我不得不将k8s节点升级到n1-standard-2(2个vCPU,7.5 G内存)以使这些容器运行。
对于这个概念证明,SE节点不需要是短暂的。但我不确定哪种永久节点容器映像可以部署在具有必要SE驱动程序的k8s中。
另一方面,也许使用我发现的独立SE容器会更容易。如果是这样,我如何将它们与Jenkins2一起使用?
有没有其他人走这条路?
编辑:我目前对第三方硒服务不感兴趣。
答案 0 :(得分:0)
SauceLabs是云中的硒网格。
我写了Saucery,用C#或Java与NUnit2,NUnit3或JUnit 4轻松集成。
答案 1 :(得分:0)
这是我想出来的。
我看到许多迹象表明运行自己的Selenium网格实例是一件麻烦事。足够的时间可能已经过去了,比以前容易一点。似乎有几种方法可以做到。
Jenkins本身有一个插件可以将你的Jenkins集群变成Selenium 3网格:https://plugins.jenkins.io/selenium。我遇到的问题是我计划在云中托管这些实例,我希望詹金斯的奴隶是短暂的。我无法弄清楚如何让插件与短暂的奴隶一起工作。我试图尽快完成这项工作,所以我只花了三天时间来完成这个项目。
这些是我用于Jenkins解决方案的分叉回购: https://github.com/jnorment-q2/kube-jenkins-imager 基本上实现了这个: https://github.com/jnorment-q2/continuous-deployment-on-kubernetes
我指的是我自己的回购,以提供我在2017年10月下旬使用的确切内容。那些回购是从主要回购分支出来的,应该很容易比较差异。
我已经联系了谷歌支持部门的一个问题,他们回答说这个链接实际上可能更清楚了一些: https://cloud.google.com/solutions/jenkins-on-container-engine-tutorial
据我所知,这是我引用的更自动化脚本的手动版本。
为了站起来Selenium,我使用了这个: https://github.com/jnorment-q2/selenium-on-k8s
这是我根据自述文件中引用的要点构建的项目,它引用了由SeleniumHQ维护的项目。
这里的主要技巧是Selenium资源匮乏。我不得不使用第二层谷歌计算引擎,以便在Kubernetes中部署。我改编了用来站起来Jenkins的脚本,以类似的方式部署Selenium Grid。
另外值得注意的是,SeleniumHQ项目中似乎只有Firefox和Chrome选项。我还没有确定是否可以运行Safari的实例。
目前,这就是我们要采用的方式。
剩下的部分是如何从Jenkins打电话给Selenium网格。事实证明,selenium可以pip安装到短暂的奴隶中,webdriver.Remote可以用来进行调用。
这是我编写的演示脚本,用于证明一切正常: https://github.com/jnorment-q2/demo-se-webdriver-pytest/blob/master/test/testmod.py
它有一个Jenkins文件,所以它应该与一个新的Jenkins实例一起使用。只需创建一个新管道,将定义更改为“来自SCM的管道脚本”,Git,https://github.com/jnorment-q2/demo-se-webdriver-pytest,然后向上滚动并单击“使用参数运行”并添加参数SE_GRID_SERVER以及SE的完整URL(包括端口)网格服务器。
它应该运行三次测试并在第三次测试失败。 (第三个测试需要TEST_URL和TEST_URL_TITLE的附加参数)