使用Jenkins CI在Docker Container中运行自动Selenium Nightwatch.jstesting

我的自动化testing基于Nightwatch-CucumberNightwatch.js 。 我创build了Dockerfile,并将构build好的Docker镜像推送到Docker Cloud。

目前我使用Nightwatch-CucumberNightwatch.js进行的自动化testing将在我创build的Docker图像/容器上的无头Chrome上通过GitLab CI成功执行。 所以我创build了一个gitlab-ci.yml

 image: "grme/nightwatch-chrome-firefox:0.0.1" stages: - "chrome-tests" before_script: - "npm install" - "npm install -y nightwatch-cucumber@7.1.10" - "npm install -y chromedriver@2.30.1" - "npm install -y geckodriver@1.7.1" - "npm install -y cucumber-html-reporter@2.0.3" - "npm install -y multiple-cucumber-html-reporter@0.2.0" cache: paths: - node_modules/ run-tests-on-chrome: stage: "chrome-tests" script: - "xvfb-run --server-args='-screen 0 1600x1200x24' npm run test-chrome" only: - "master@xxx/e2e-web-tests" 

现在我想把这个testing执行移植到Jenkins CI 。 所以,我想以与GitLab CI相同的方式执行我的testing。

起初我想用一个本地Jenkins CI实例来执行我​​的testing。 我想创造两个工作:

  1. 执行testing项目的推送testing(相当于当前的GitLab CI解决scheme)
  2. 通过Jenkins CI手动启动testing
  3. 通过Jenkins CI的时间触发来执行testing

如果testing未通过,我希望构build失败,并且希望在每次执行Cucumber Report Jenkins Plugin后创build一个Cucumber报告。

我的第一个想法是创build一个shell脚本启动容器,并在容器中执行testing。 但是我没有得到回Jenkins CItesting结果呢?

Nightwatch.js的过程与Selenium的Java实现不同。 所以,我第一次使用Nightwatch.jsNightwatch.jstesting必须在Docker容器内执行,testing结果必须返回给Jenkins CI

另外,我可以在我创build的Docker容器中运行Jenkins,但我想分开它。 jenkins应该是一个修复实例,只需要在Docker容器上启动testing。

但是我怎么能意识到呢? 你怎么会意识到我的设置?

我不完全确定Jenkins CI是如何工作的,但是我可以在Jenkins中运行一个docker容器,它带有入口nightwatch (所以它运行nightwatch,然后停止容器),并得到结果作为输出。 简单地docker run [containername]将做的伎俩。 如果将junit.xml作为输出,则可以使用docker docker cp [containername]:[absolute_path_to_file_in_container] [destination] ,即使从已停止的容器中,

还有Jenkins插件可用于分析该junit文件,它可以设置作业状态并发布结果。