-
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