问题:如何在 Docker 容器中运行整个 Jenkins 管道,从头到尾?

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

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

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

解答

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

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

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

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐