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修复它