运行 整个 Jenkins 管道,从头到尾,在 Docker 容器内?

Way to run an entire Jenkins pipeline, start to finish, inside a Docker container?

有没有办法定义整个管道阶段和步骤可以从头到尾运行的容器,而不必每个都启动一个容器你想要一个舞台到什么时候 运行?

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

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

您可以在 Jenkinsfile 的顶层 agent section 中定义 docker 容器:

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

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