1

环境:

  • 泊坞窗插件版本:1.1.2;
  • 詹金斯版本:2.0.50727;
  • docker客户端/服务器版本:17.12.0-ce;
  • 赢 10 专业版 x64;

场景 1: 我尝试使用以下命令通过 Jenkinsfile 运行 Selenoid 映像:

stage('Start services') {
        docker.image('aerokube/selenoid').
                run('--name selenoid ' +
                        '-p 4444:4444 ' +
                        '-v C:/workspace/selenoid:/etc/selenoid ' +
                        '-v C:/workspace/output:/opt/selenoid/video ' +
                        '-v //var/run/docker.sock:/var/run/docker.sock ' +
                        '-e "OVERRIDE_VIDEO_OUTPUT_DIR=/C/workspace/output/"')
}

实际结果: 容器已创建,我在 docker ps 输出中看到 Selenoid 容器。

场景二:

当我在一个点之后添加任何命令时 - 容器不会创建。请参阅以下内容:

stage('Start services') {
        docker.image('aerokube/selenoid').
                run('--name selenoid ' +
                        '-p 4444:4444 ' +
                        '-v C:/workspace/selenoid:/etc/selenoid ' +
                        '-v C:/workspace/output:/opt/selenoid/video ' +
                        '-v //var/run/docker.sock:/var/run/docker.sock ' +
                        '-e "OVERRIDE_VIDEO_OUTPUT_DIR=/C/workspace/output/"',
                '-video-output-dir /output')
}

在这种情况下,我添加了-video-output-dir /output. 顺便说一句,我尝试在一个点之后添加下一个命令: -limit 10, -conf /etc/selenoid/browsers.json-> 但仍然无济于事。

另外,请参阅 Jenkins 工作的以下日志:

[Pipeline] sh
[C:\Jenkins\workspace\pplication_react-app_master-6UL22J3ZHJJMMTIKZO5LDRETFMNMM4TSEGGCZJKAGTM5HBOEAEYQ] Running shell script
+ docker run -d --name selenoid -p 4444:4444 -v C:/workspace/selenoid:/etc/selenoid -v C:/workspace/output:/opt/selenoid/video -v //var/run/docker.sock:/var/run/docker.sock -e OVERRIDE_VIDEO_OUTPUT_DIR=/C/workspace/output/ aerokube/selenoid -video-output-dir /output
[Pipeline] dockerFingerprintRun
[Pipeline] bat
[pplication_react-app_master-6UL22J3ZHJJMMTIKZO5LDRETFMNMM4TSEGGCZJKAGTM5HBOEAEYQ] Running batch script

C:\Jenkins\workspace\pplication_react-app_master-6UL22J3ZHJJMMTIKZO5LDRETFMNMM4TSEGGCZJKAGTM5HBOEAEYQ>docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Docker ps命令输出为空...

我做错了什么?也许我没有args转移到 run() 部分?

4

1 回答 1

0

看看 Selenoid Dockerfile。重要的线路是:

ENTRYPOINT ["/usr/bin/selenoid"]

CMD ["-listen", ":4444", "-conf", "/etc/selenoid/browsers.json", "-video-output-dir", "/opt/selenoid/video/"]

这意味着入口点命令始终在运行,并且CMD只有在没有明确传递参数的情况下,其中的所有内容才适用。在您的情况下,您正在添加自己的参数:

'-video-output-dir /output'

这意味着CMD不再应用部分内容。But-conf是一个必需的参数,默认为config/browsers.json,而不是/etc/selenoid/browsers.json。因此,正确的解决方案是添加-conf /etc/selenoid/browsers.json到您的表达式中。

于 2018-02-16T03:24:31.430 回答