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不会等待它并立即返回成功。但是,如果我用无限循环替换Docker命令,Jenkins将按预期等待。

当我以Jenkins用户的身份直接从构建从设备运行此命令时,系统会等待命令完成(这就是我想要发生的事情)。

我已经尝试过执行docker attach,但是也会立即返回。docker wait会导致Jenkins等待,但是我看不到任何输出。

也许我正在解决所有这些错误...

  1. 如何让Jenkins等待此命令完成?
  2. 如何让Jenkins显示在Docker容器中运行的命令的输出?
  3. 如何获得在Docker中运行的命令的退出代码以进行设置,以使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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

等待的方法调用似乎没有完成

等待CockroachDB命令完成

NodejS + PhantomJS警告:在等待命令完成之前调用exit()。确保您没有太早调用exit()

等待Celery任务完成而没有结果后端

从 HTML 调用函数到打字稿没有等待完成

函数之前没有等待功能的完成吗?

如何等待BackgroundWorker完成而没有UI冻结

有没有一种方法可以将长的Groovy execute()命令的输出流传输到控制台,而不是等待它完成?

Jenkins Docker映像没有make或sudo

本地Jenkins安装没有Docker权限

Python popen命令。等待命令完成

Docker 不会等待纱线完成

执行完成后,Jenkins作业没有停止

没有容器ID的Docker exec命令

没有sudo不能运行docker命令

结果没有显示,只说“命令成功完成”

如何在 docker 容器中并行运行多个命令,然后等待它们全部完成?

Bash脚本命令等待docker-compose过程完成后再继续

等待JSON API在没有Docker的情况下加载

等待所有回调在没有静态时间的情况下完成执行

为什么 ExecutorService 等待所有线程完成但 Completable future 没有?

有没有办法等待将来完成而不会阻塞Act Framework中的执行线程?

有没有办法等待另一个WebDriverIO承诺链完成?

有没有更好的方法来等待Kubernetes的工作完成?

Python-有没有办法等待os.unlink()或os.remove()完成?

等待所有 Observable 完成

有没有办法在进程完成处理后立即执行操作,而不是等待全部完成?

powershell 不等待命令完成?

使AutoIT等待直到Audacity完成命令