我正在尝试使用Jenkins在Docker容器中构建C ++项目。我在Jenkins或在Jenkins之外的容器中构建都没有问题。
下面是我尝试过的。为了清楚起见,我省略了卷映射。
情况1
以下命令在外壳中成功运行了构建。
docker run --rm --interactive=true --tty=true $IMAGE make
但是,当在Jenkins中作为“执行外壳程序”步骤运行时,Docker返回以下错误。
cannot enable tty mode on non tty input
情况二
以下命令与上一个命令相似,但是禁用了交互性。
docker run --rm $IMAGE make
Jenkins可以成功运行构建。但是,中止构建时存在严重问题。该构建立即被标记为已中止,但是容器一直运行直到构建完成。退出后,也不会移除容器。
在shell中运行时,命令会成功构建,但是无法中断它。退出后,容器也将被取出。
题
有谁知道如何在Jenkins的Docker容器中干净地运行构建并保留中止构建的功能吗?
不能选择使用任何Jenkins插件,因为Docker调用位于脚本内并且无法轻松提取。
1
也许要进行一项后期工作,任务是删除容器?对于中止构建的情况,也许您可以有一个特殊的构建来停止并删除所有虚假容器?这是次优的,但至少,这是一种易于设置的解决方法。:-)
—
lgeorget '16
这与我对clean的定义不太匹配:)但是我很欣赏这个建议,这当然是有效的解决方法。
—
marcv81 '02