【问题标题】:Jenkins shell dont interpret $ variablesJenkins shell 不解释 $ 变量
【发布时间】:2018-12-18 10:58:59
【问题描述】:

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

jenkins 似乎没有执行“$(docker ps -q)” 和“$(docker ps -a -q)

所以 docker killdocker rm 有 0 个参数。

但是为什么会这样呢?

【问题讨论】:

    标签: shell jenkins jenkins-scriptler


    【解决方案1】:

    我发现了问题,

    只是我必须将 "$" 替换为 "\$" 。 这解决了问题。

    【讨论】:

      猜你喜欢
      • 2020-12-21
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      • 2020-10-27
      相关资源
      最近更新 更多