如何让Selenium在GCP中使用Jenkins2

时间:2017-10-25 01:16:47

标签: linux selenium jenkins jenkins-plugins google-kubernetes-engine

我试图让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一起使用?

有没有其他人走这条路?

编辑:我目前对第三方硒服务不感兴趣。

2 个答案:

答案 0 :(得分:0)

SauceLabs是云中的硒网格。

我写了Saucery,用C#或Java与NUnit2,NUnit3或JUnit 4轻松集成。

您可以查看源代码hereherehere,或查看Github Pages网站here以获取更多信息。

答案 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的附加参数)