0

我们有许多工作,我们使用 docker 容器做事。有时这些作业会超时或中止,我需要确保正确关闭 docker 容器。

我试图在“执行shell”步骤中添加一个陷阱

function stop_container() {
  docker stop `cat docker.cid`
}

trap stop_container TERM EXIT

docker run --cidfile docker.cid ...

但什么也没有发生。有什么建议么?

4

2 回答 2

0

如果您从 ui 设置您的工作,前面的答案就很好。如果您的工作是使用管道创建的,那么您将需要用

    try{
        node{
        //steps
        }
    }
    catch{
     //do whatever you like
    }
    finally{
      docker.stopContainer()
    }

这适用于脚本化管道。请注意,在运行时按停止会InterruptedException在管道中抛出一个。如果您多次按下它,它也可能会跳过该finally块。

如果您的管道不是脚本化的并且是声明性的,您可以放置​​一个与以前相同的后期步骤(它与 UI 相同)

最后但并非最不重要的一点是,它可能会对您有所帮助,因为 jenkins 支持 docker 代理,根据您的情况可能会有用。 詹金斯的 Docker 代理

声明性管道

声明的后期阶段

脚本化管道

于 2019-08-02T23:52:29.593 回答
0

您可以使用类似于以下的构建后操作。

在此处输入图像描述

于 2019-08-02T08:47:59.640 回答