我正在尝试让Jenkins在Docker上的Jenkins从属服务器上运行以下命令:
docker run -i -v `pwd`:/opt/myapp -w /opt/myapp -t mydockerimage /bin/bash -c "./setup_dev_env.sh && make all"
问题在于,当我 在Jenkins中 运行此程序时,会生成Docker进程,但Jenkins不会等待它并立即返回成功。但是,如果我用无限循环替换Docker命令,Jenkins将按预期等待。
当我以Jenkins用户的身份直接从构建从设备运行此命令时,系统会等待命令完成(这就是我想要发生的事情)。
我已经尝试过执行docker attach,但是也会立即返回。 docker wait会导致Jenkins等待,但是我看不到任何输出。
docker attach
docker wait
也许我正在解决所有这些错误…
原来问题出-t在命令行中。删除-t导致Jenkins等待docker完成其工作。
-t
我有这样的预感,因为ttys有时可能很奇怪,并且Jenkins可能正在使用与我在shell提示符下运行相同命令时不同的tty类型(或根本不使用)。
最后,此命令有效:
docker run -i -v `pwd`:/opt/myapp -w /opt/myapp mydockerimage /bin/bash -c "./setup_dev_env.sh && make all"