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等待它,但我不会看到任何输出。

也许我正在谈论这一切错误…

  1. 我怎样才能让jenkins等待这个命令完成呢?
  2. 我怎样才能让jenkins显示在docker集装箱运行命令的输出?
  3. 我如何获得在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"