jenkins并没有等待Docker命令完成
我试图让Jenkins在Jenkins从站的docker中运行以下命令:
docker run -i -v `pwd`:/opt/myapp -w /opt/myapp -t mydockerimage /bin/bash -c "./setup_dev_env.sh && make all"
麻烦的是,当我从Jenkins中运行这个Docker进程时,Jenkins并不等待它,并立即返回成功。 但是,如果我用无限循环replaceDocker命令,Jenkins将按照预期等待。
当我直接从build slave运行这个命令时,作为Jenkins用户,系统等待命令完成(这就是我想要发生的事情)。
我已经尝试做一个docker attach
,但也立即返回。 docker wait
将导致jenkins等待它,但我不会看到任何输出。
也许我正在谈论这一切错误…
- 我怎样才能让jenkins等待这个命令完成呢?
- 我怎样才能让jenkins显示在docker集装箱运行命令的输出?
- 我如何获得在Docker中运行的命令的退出代码,以便Jenkins可以确定它是成功还是失败?
事实certificate问题是在命令行中的-t
。 卸下-t
导致jenkins等待docker完成正在做的事情。
我有一个预感这是因为ttys有时可能是奇怪的,Jenkins可能使用不同types的tty(或根本不是),当我在shell提示符下运行相同的命令。
最后,这个命令起作用了:
docker run -i -v `pwd`:/opt/myapp -w /opt/myapp mydockerimage /bin/bash -c "./setup_dev_env.sh && make all"