我试图让Jenkins在一个Jenkins奴隶的docker中运行以下命令:
docker run -i -v `pwd`:/opt/myapp -w /opt/myapp -t mydockerimage /bin/bash -c "./setup_dev_env.sh && make all"
Run Code Online (Sandbox Code Playgroud)
麻烦的是,当我从Jenkins中运行它时,Docker进程被生成,但Jenkins不会等待它并立即返回成功.但是,如果我用无限循环替换Docker命令,Jenkins将按预期等待.
当我直接从构建从站运行此命令时,作为Jenkins用户,系统等待命令完成(这就是我想要发生的事情).
我已经尝试过了docker attach,但也会立即返回. docker wait将导致詹金斯等待它,但我不会看到任何输出.
也许我说这一切都错了......
原来问题出-t在命令行中.删除-t导致Jenkins等待docker完成它正在做的事情.
我有预感这是因为ttys有时可能很奇怪,Jenkins可能正在使用不同类型的tty(或根本不使用),而不是我在shell提示符下运行相同的命令时.
最后,这个命令工作:
docker run -i -v `pwd`:/opt/myapp -w /opt/myapp mydockerimage /bin/bash -c "./setup_dev_env.sh && make all"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3619 次 |
| 最近记录: |