我正在尝试让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不会等待它并立即返回成功。但是,如果我用无限循环替换Docker命令,Jenkins将按预期等待。
当我以Jenkins用户的身份直接从构建从设备运行此命令时,系统会等待命令完成(这就是我想要发生的事情)。
我已经尝试过执行docker attach
,但是也会立即返回。docker wait
会导致Jenkins等待,但是我看不到任何输出。
也许我正在解决所有这些错误...
原来问题出-t
在命令行中。删除-t
导致Jenkins等待docker完成其工作。
我有这样的预感,因为ttys有时可能很奇怪,并且Jenkins可能使用的是与我在shell提示符下运行相同命令时不同的tty类型(或根本不使用)。
最后,此命令有效:
docker run -i -v `pwd`:/opt/myapp -w /opt/myapp mydockerimage /bin/bash -c "./setup_dev_env.sh && make all"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句