首页 > 解决方案 > 在 Docker 容器中运行整个 Jenkins 管道的方式,从开始到结束?

问题描述

有没有一种方法可以定义整个管道阶段和步骤可以从开始到结束运行的容器,而不必在每次要运行阶段时启动容器?

这样做的原因是我正在运行terraform,这需要在运行部署之前执行一组步骤(初始化、计划、应用)。当然,可以单独运行每个阶段并调用 docker 每次运行一个容器,但这会违反直觉。除非您将输出保存为人工制品,否则数据将会丢失,terraform plan例如……这就像用右手在头周围抓挠左耳一样。

我想在顶部运行容器,然后在里面构建每个阶段,而不是杀死它。

标签: dockerjenkinsgroovyterraformpipeline

解决方案


您可以在Jenkinsfile 顶层的代理部分定义您的 docker 容器:

pipeline {
    agent {
        docker {
            image 'terraform-image'
        }
    }
    stages {
        ....
    }
}

每个阶段都将在同一个 docker 容器中运行,并且您不会在每个阶段之间丢失工作区。


推荐阅读