Jenkinsfile无法运行多个参数的docker
在我的jenkinsfile中,我有这个
stage ('Build Docker') { steps { script { image1 = docker.build "docker1:${BRANCH_NAME}" } script { image2 = docker.build "docker2:${BRANCH_NAME}" } } } stage ('Run Docker Acceptance Tests') { steps { script { container1 = image1.run "-v /tmp/${BRANCH_NAME}:/var/lib/data" container1Id = container1.id container1IP = sh script: "docker inspect ${container1Id} | grep IPAddress | grep -v null| cut -d \'\"\' -f 4 | head -1", returnStdout: true } //let containers start up sleep 20 script { container2= image2.run("-v /tmp/${BRANCH_NAME}:/var/lib/data --add-host=MY_HOST:${container1IP}") } } }
当它运行container2我得到这个输出。
[resources] Running shell script 00:01:33.775 + docker run -d -v /tmp/master:/var/lib/data --add-host=MY_HOST:172.17.0.3 00:01:33.775 "docker run" requires at least 1 argument(s). 00:01:33.775 See 'docker run --help'.
很显然,在运行docker镜像时不会附加容器名称。
我试图在IP地址硬编码,以testing它是否像这样工作
container2= image2.run("-v /tmp/${BRANCH_NAME}:/var/lib/data --add-host=MY_HOST:172.17.0.3")
然后它正常工作并运行命令
00:00:29.386 [resources] Running shell script 00:00:29.641 + docker run -d -v /tmp/master:/var/lib/data --add-host=MY_HOST:172.17.0.3 docker-name:branch
我不明白为什么它不拾起容器的图像名称。
我甚至试过这样做 – 得到同样的错误
container2= image2.run("-v /tmp/${BRANCH_NAME}:/var/lib/data --add-host=MY_HOST:${container1IP} docker2:${BRANCH_NAME}")
我尝试了最后一步
sh "docker run -v /tmp/${BRANCH_NAME}:/var/lib/data --add-host=MY_HOST:${container1IP} docker2:${BRANCH_NAME}"
再次,它似乎是解决$ {container1IP}后剥离最后的命令
设法解决它,这是由于一个隐藏的新行字符
container1IP = sh (script: "docker inspect ${container1Id} | grep IPAddress | grep -v null| cut -d \'\"\' -f 4 | head -1", returnStdout: true).trim()
修剪var修复它