-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
docker-pipeline-plugin:1.9.1
Jenkins 2.19.4.2
The docker pipeline plugin used to honor the Dockerfile "entrypoint" until v1.8 in "docker.image('my-image').inside{...}". Since then, "entrypoint" is ignored.
The capability to do selenium tests with a selenium-standalone-server running inside the Docker container fails since 1.8.
This regression seems to be caused by JENKINS-37987 and the github commit "[FIXED JENKINS-37987] Override ENTRYPOINT, not just command, for WithContainerStep".
This Jira seem to be similar to JENKINS-39748
Testcase
Code
node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } }
Console
The check "curl http://127.0.0.1:4444/wd/hub" will fail.
Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed to connect to 127.0.0.1 port 4444: Connection refused [Pipeline] } $ docker stop --time=1 c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c $ docker rm -f c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline ERROR: script returned exit code 7 Finished: FAILURE
Workaround
The workaround is to manually start the Dockerfile entrypoint with sh "nohup /opt/bin/entry_point.sh &".
Code
node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // WORKAROUND: MANUALLY START THE DOCKERFILE ENTRYPOINT sh "nohup /opt/bin/entry_point.sh &" sh "sleep 5" // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } }
Console
Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + nohup /opt/bin/entry_point.sh [Pipeline] sh [testSelenium2] Running shell script + sleep 5 [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 [Pipeline] writeFile [Pipeline] sh [testSelenium2] Running shell script + python selenium_remote_web_driver_test.python [Pipeline] } $ docker stop --time=1 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 $ docker rm -f 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS
- duplicates
-
JENKINS-39748 Since 37987 images that use ENTRYPOINT for a reason cannot be used in testing
-
- In Review
-
- is related to
-
JENKINS-47890 "mvnw" won't work on docker-pipeline with the "maven" image because docker-pipeline doesn't honor docker image entrypoint
-
- Resolved
-
- relates to
-
JENKINS-37987 Image.inside fails for images specifying ENTRYPOINT
-
- Resolved
-
-
JENKINS-39485 withContainerStep fails if using entrypoint in DockerFile
-
- Resolved
-
-
JENKINS-39748 Since 37987 images that use ENTRYPOINT for a reason cannot be used in testing
-
- In Review
-
-
JENKINS-49446 Regression with 1.15 and WithContainerStep
-
- Closed
-
- links to
[JENKINS-41316] docker.image('my-image').inside{...} no longer honors Dockerfile "entrypoint" since version 1.8
Summary | Original: Dockerfile "entrypoint" no longer honored by docker-pipeline:1.8 | New: docker.image('my-image').inside{...} no longer honors Dockerfile "entrypoint" since version 1.8 |
Description |
Original:
The docker pipeline plugin used to honor the Dockerfile "entrypoint" until v1.8. Since then, "entrypoint" is ignored and the capability to do selenium tests fails. This regression seems to be caused by This Jira seem to be similar to JENKINS-39748 h3. Testcase h4. Code {code} node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } } {code} h4. Console The check "{{curl http://127.0.0.1:4444/wd/hub}}" will fail. {noformat} Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed to connect to 127.0.0.1 port 4444: Connection refused [Pipeline] } $ docker stop --time=1 c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c $ docker rm -f c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline ERROR: script returned exit code 7 Finished: FAILURE {noformat} h3. Workaround The workaround is to manually start the Dockerfile entrypoint with {{sh "nohup /opt/bin/entry_point.sh &"}}. h4. Code {code} node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // WORKAROUND: MANUALLY START THE DOCKERFILE ENTRYPOINT sh "nohup /opt/bin/entry_point.sh &" sh "sleep 5" // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } } {code} h4. Console {noformat} Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + nohup /opt/bin/entry_point.sh [Pipeline] sh [testSelenium2] Running shell script + sleep 5 [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 [Pipeline] writeFile [Pipeline] sh [testSelenium2] Running shell script + python selenium_remote_web_driver_test.python [Pipeline] } $ docker stop --time=1 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 $ docker rm -f 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS {noformat} |
New:
The docker pipeline plugin used to honor the Dockerfile "entrypoint" until v1.8 in {{docker.image('my-image').inside\{...\}}}. Since then, "entrypoint" is ignored and the capability to do selenium tests fails. This regression seems to be caused by This Jira seem to be similar to JENKINS-39748 h3. Testcase h4. Code {code} node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } } {code} h4. Console The check "{{curl http://127.0.0.1:4444/wd/hub}}" will fail. {noformat} Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed to connect to 127.0.0.1 port 4444: Connection refused [Pipeline] } $ docker stop --time=1 c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c $ docker rm -f c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline ERROR: script returned exit code 7 Finished: FAILURE {noformat} h3. Workaround The workaround is to manually start the Dockerfile entrypoint with {{sh "nohup /opt/bin/entry_point.sh &"}}. h4. Code {code} node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // WORKAROUND: MANUALLY START THE DOCKERFILE ENTRYPOINT sh "nohup /opt/bin/entry_point.sh &" sh "sleep 5" // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } } {code} h4. Console {noformat} Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + nohup /opt/bin/entry_point.sh [Pipeline] sh [testSelenium2] Running shell script + sleep 5 [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 [Pipeline] writeFile [Pipeline] sh [testSelenium2] Running shell script + python selenium_remote_web_driver_test.python [Pipeline] } $ docker stop --time=1 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 $ docker rm -f 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS {noformat} |
Description |
Original:
The docker pipeline plugin used to honor the Dockerfile "entrypoint" until v1.8 in {{docker.image('my-image').inside\{...\}}}. Since then, "entrypoint" is ignored and the capability to do selenium tests fails. This regression seems to be caused by This Jira seem to be similar to JENKINS-39748 h3. Testcase h4. Code {code} node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } } {code} h4. Console The check "{{curl http://127.0.0.1:4444/wd/hub}}" will fail. {noformat} Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed to connect to 127.0.0.1 port 4444: Connection refused [Pipeline] } $ docker stop --time=1 c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c $ docker rm -f c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline ERROR: script returned exit code 7 Finished: FAILURE {noformat} h3. Workaround The workaround is to manually start the Dockerfile entrypoint with {{sh "nohup /opt/bin/entry_point.sh &"}}. h4. Code {code} node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // WORKAROUND: MANUALLY START THE DOCKERFILE ENTRYPOINT sh "nohup /opt/bin/entry_point.sh &" sh "sleep 5" // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } } {code} h4. Console {noformat} Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + nohup /opt/bin/entry_point.sh [Pipeline] sh [testSelenium2] Running shell script + sleep 5 [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 [Pipeline] writeFile [Pipeline] sh [testSelenium2] Running shell script + python selenium_remote_web_driver_test.python [Pipeline] } $ docker stop --time=1 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 $ docker rm -f 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS {noformat} |
New:
The docker pipeline plugin used to honor the Dockerfile "entrypoint" until v1.8 in "{{docker.image('my-image').inside\{...\}}}". Since then, "entrypoint" is ignored. The capability to do selenium tests with a selenium-standalone-server running inside the Docker container fails since 1.8. This regression seems to be caused by This Jira seem to be similar to JENKINS-39748 h3. Testcase h4. Code {code} node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } } {code} h4. Console The check "{{curl http://127.0.0.1:4444/wd/hub}}" will fail. {noformat} Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed to connect to 127.0.0.1 port 4444: Connection refused [Pipeline] } $ docker stop --time=1 c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c $ docker rm -f c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline ERROR: script returned exit code 7 Finished: FAILURE {noformat} h3. Workaround The workaround is to manually start the Dockerfile entrypoint with {{sh "nohup /opt/bin/entry_point.sh &"}}. h4. Code {code} node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // WORKAROUND: MANUALLY START THE DOCKERFILE ENTRYPOINT sh "nohup /opt/bin/entry_point.sh &" sh "sleep 5" // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } } {code} h4. Console {noformat} Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + nohup /opt/bin/entry_point.sh [Pipeline] sh [testSelenium2] Running shell script + sleep 5 [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 [Pipeline] writeFile [Pipeline] sh [testSelenium2] Running shell script + python selenium_remote_web_driver_test.python [Pipeline] } $ docker stop --time=1 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 $ docker rm -f 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS {noformat} |
Description |
Original:
The docker pipeline plugin used to honor the Dockerfile "entrypoint" until v1.8 in "{{docker.image('my-image').inside\{...\}}}". Since then, "entrypoint" is ignored. The capability to do selenium tests with a selenium-standalone-server running inside the Docker container fails since 1.8. This regression seems to be caused by This Jira seem to be similar to JENKINS-39748 h3. Testcase h4. Code {code} node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } } {code} h4. Console The check "{{curl http://127.0.0.1:4444/wd/hub}}" will fail. {noformat} Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed to connect to 127.0.0.1 port 4444: Connection refused [Pipeline] } $ docker stop --time=1 c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c $ docker rm -f c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline ERROR: script returned exit code 7 Finished: FAILURE {noformat} h3. Workaround The workaround is to manually start the Dockerfile entrypoint with {{sh "nohup /opt/bin/entry_point.sh &"}}. h4. Code {code} node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // WORKAROUND: MANUALLY START THE DOCKERFILE ENTRYPOINT sh "nohup /opt/bin/entry_point.sh &" sh "sleep 5" // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } } {code} h4. Console {noformat} Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + nohup /opt/bin/entry_point.sh [Pipeline] sh [testSelenium2] Running shell script + sleep 5 [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 [Pipeline] writeFile [Pipeline] sh [testSelenium2] Running shell script + python selenium_remote_web_driver_test.python [Pipeline] } $ docker stop --time=1 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 $ docker rm -f 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS {noformat} |
New:
The docker pipeline plugin used to honor the Dockerfile "entrypoint" until v1.8 in "{{docker.image('my-image').inside\{...\}}}". Since then, "entrypoint" is ignored. The capability to do selenium tests with a selenium-standalone-server running inside the Docker container fails since 1.8. This regression seems to be caused by This Jira seem to be similar to JENKINS-39748 h3. Testcase h4. Code {code} node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } } {code} h4. Console The check "{{curl http://127.0.0.1:4444/wd/hub}}" will fail. {noformat} Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed to connect to 127.0.0.1 port 4444: Connection refused [Pipeline] } $ docker stop --time=1 c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c $ docker rm -f c65380bfd6c83d2290fc2e8fa8e5ae4cb0b84d1b21c66b4a3019c4a831f8833c [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline ERROR: script returned exit code 7 Finished: FAILURE {noformat} h3. Workaround The workaround is to manually start the Dockerfile entrypoint with {{sh "nohup /opt/bin/entry_point.sh &"}}. h4. Code {code} node ("docker") { docker.image('cloudbees/java-build-tools:2.0.0').inside { // WORKAROUND: MANUALLY START THE DOCKERFILE ENTRYPOINT sh "nohup /opt/bin/entry_point.sh &" sh "sleep 5" // verify that selenium-standalone-server has been started by the Dockerfile entrypoint /opt/bin/entry_point.sh sh "curl http://127.0.0.1:4444/wd/hub" // test with selenium python writeFile ( file: 'selenium_remote_web_driver_test.python', text: """#!/usr/bin/env python from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX) driver.get('http://python.org') assert 'Python' in driver.title """) sh "python selenium_remote_web_driver_test.python" } } {code} h4. Console {noformat} Started by user admin [Pipeline] node Running on agent-1 in /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + docker inspect -f . cloudbees/java-build-tools:2.0.0 . [Pipeline] withDockerContainer $ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2 -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/testSelenium2@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat cloudbees/java-build-tools:2.0.0 [Pipeline] { [Pipeline] sh [testSelenium2] Running shell script + nohup /opt/bin/entry_point.sh [Pipeline] sh [testSelenium2] Running shell script + sleep 5 [Pipeline] sh [testSelenium2] Running shell script + curl http://127.0.0.1:4444/wd/hub % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 [Pipeline] writeFile [Pipeline] sh [testSelenium2] Running shell script + python selenium_remote_web_driver_test.python [Pipeline] } $ docker stop --time=1 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 $ docker rm -f 804a1f9cac0e8040b5e882a7c3ebd052df53e9cb99b34c0a7ffba4d0abff5401 [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS {noformat} |
Link |
New:
This issue relates to |
Link | New: This issue relates to JENKINS-39748 [ JENKINS-39748 ] |
Link |
New:
This issue relates to |
It's not clear to me why your usecase is driving you to need docker.inside{}. When I use the selenium image, the withRun approach works great.