Jenkins shell dont interpret $ variables



我正试图使用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

这将通过ssh连接到prod机器并创建一个Dockerfile,然后构建并运行映像。但它失败了。这是詹金斯日志的一部分:

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

詹金斯似乎没有执行"$(docker ps -q)"one_answers"$(docker ps -a -q)">

因此CCD_ 3和CCD_。

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

我发现了问题,

我只需要把"$"换成"$"。这就解决了问题。

最新更新