在Jenkins上运行Dockerized Selenium Grid

我试图让我的testing运行在jenkins。 我已经Docker化了我的testing运行器代码,并使用Dockerized Selenium集线器/网格。 我可以在我的机器上本地运行一切正常,并希望在Jenkins服务器上执行相同的操作。 所有容器都是使用docker shell命令启动的,它们都放在同一个Dockernetworking中,以便它们可以通信。 再次,一切工作正常本地,但是当我在Jenkins机器上尝试这个,我得到一个错误消息说:

Error forwarding the new session cannot find : Capabilities [{rotatable=false, ...

由于完全相同的命令在本地工作,我可以想到为什么这种失败的唯一原因是因为容器必须无法在Jenkins机器上进行通信。 也许他们是从另一个节点或奴隶开始的,我不确定。 有没有人有经验在Jenkins机器上运行多个容器? 还是有没有人有任何其他的想法,为什么这是失败?

我不能复制你的错误,但这个简单的Selenium集线器使用docker进行chrome和firefoxtesting正在我的基础架构中部署的Jenkins slave(基于docker)工作:

https://github.com/carloscaverobarca/jenkins-pipelines/blob/master/docker-selenium/docker-selenium.groovy

这个错误是由运行之间悬挂的共享卷引起的。 容器是一样的,但共享卷的数据是旧的,不正确,因此在Jenkins环境中运行时的差异。 故事的道德是确保Docker运行之间的一切都被清理干净。 不只是容器,卷和networking也可以。

如果您正在使用Jenkins容器让Jenkins直接连接到Selenium-Hub容器的内部IP,而不是通过本地主机或FQDN,