Jenkins shell不解释$variables

Jenkins shell不解释$variables,shell,jenkins,jenkins-scriptler,Shell,Jenkins,Jenkins Scriptler,我正在尝试使用jenkins在prod机器上的docker容器内部署nodejs应用程序 我有这个贝壳: ssh -tt vagrant@10.2.3.129<<EOF cd ~/app/backend git pull cat <<EOM >./Dockerfile FROM node:8 WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD [ "n

我正在尝试使用jenkins在prod机器上的docker容器内部署nodejs应用程序

我有这个贝壳:

ssh -tt vagrant@10.2.3.129<<EOF
cd ~/app/backend
git pull
cat <<EOM >./Dockerfile
FROM node:8
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]
EOM
docker build -t vagrant/node-web-app .
docker kill $(docker ps -q)
docker rm $(docker ps -a -q)
docker run -p 3000:3000 -d vagrant/node-web-app
exit
EOF
詹金斯似乎不执行“
$(docker ps-q)
” 和“
$(docker ps-a-q)

因此,
docker kill
docker rm
得到了0个参数

但是为什么会发生这种情况呢?

我发现了这个问题

我只需要将“
$
”替换为“
\$
”。 这就解决了问题

Successfully built 8e5796ea9846
vagrant@ubuntu-xenial:~$ docker kill 

"docker kill" requires at least 1 argument.
See 'docker kill --help'.

Usage:  docker kill [OPTIONS] CONTAINER [CONTAINER...]

Kill one or more running containers
vagrant@ubuntu-xenial:~$ docker rm 
"docker rm" requires at least 1 argument.
See 'docker rm --help'.

Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]

Remove one or more containers
vagrant@ubuntu-xenial:~$ docker run -p 3000:3000 -d vagrant/node-web-app
0cc8b5b67f70065ace03e744500b5b66c79941b4cb36d53a3186845445435bb5
docker: Error response from daemon: driver failed programming external connectivity on endpoint stupefied_margulis (d0e4cdd5642c288a31537e1bb8feb7dde2d19c0f83fe5d8fdb003dcba13f53a0): Bind for 0.0.0.0:3000 failed: port is already allocated.
vagrant@ubuntu-xenial:~$ exit
logout
Connection to 10.2.1.129 closed.
Build step 'Execute shell' marked build as failure
Finished: FAILURE