我们有许多工作,我们使用 docker 容器做事。有时这些作业会超时或中止,我需要确保正确关闭 docker 容器。
我试图在“执行shell”步骤中添加一个陷阱
function stop_container() {
docker stop `cat docker.cid`
}
trap stop_container TERM EXIT
docker run --cidfile docker.cid ...
但什么也没有发生。有什么建议么?
如果您从 ui 设置您的工作,前面的答案就很好。如果您的工作是使用管道创建的,那么您将需要用
try{
node{
//steps
}
}
catch{
//do whatever you like
}
finally{
docker.stopContainer()
}
这适用于脚本化管道。请注意,在运行时按停止会InterruptedException在管道中抛出一个。如果您多次按下它,它也可能会跳过该finally块。
如果您的管道不是脚本化的并且是声明性的,您可以放置一个与以前相同的后期步骤(它与 UI 相同)
最后但并非最不重要的一点是,它可能会对您有所帮助,因为 jenkins 支持 docker 代理,根据您的情况可能会有用。 詹金斯的 Docker 代理