docker - 在 Docker 容器中运行整个 Jenkins 管道的方式,从开始到结束?
问题描述
有没有一种方法可以定义整个管道阶段和步骤可以从开始到结束运行的容器,而不必在每次要运行阶段时启动容器?
这样做的原因是我正在运行terraform,这需要在运行部署之前执行一组步骤(初始化、计划、应用)。当然,可以单独运行每个阶段并调用 docker 每次运行一个容器,但这会违反直觉。除非您将输出保存为人工制品,否则数据将会丢失,terraform plan
例如……这就像用右手在头周围抓挠左耳一样。
我想在顶部运行容器,然后在里面构建每个阶段,而不是杀死它。
解决方案
您可以在Jenkinsfile 顶层的代理部分定义您的 docker 容器:
pipeline {
agent {
docker {
image 'terraform-image'
}
}
stages {
....
}
}
每个阶段都将在同一个 docker 容器中运行,并且您不会在每个阶段之间丢失工作区。
推荐阅读
- java - 了解 Java 问题中的 ICAP 服务器文件传输
- laravel - Laravel - 使用 Rule::unique 验证输入
- javascript - jQuery-modal ajax child 中的 Javascript 失败
- html - 具有相同宽度的两个元素显示的宽度不同
- matlab - 是否可以抑制“输入”跳转到下一行?
- javascript - 将 R Shiny Code 发送到 Javascript 时会多次执行
- ruby - 有什么方法可以在 Ruby 中将多个属性/方法与 & 和冒号运算符一起使用?
- javascript - 操作视口宽度单位 vw
- java - 如何仅使用“switch and if”这样的输入“January”或“janUARY”在Java解决方案中创建
- c++ - 在封闭范围内重新声明变量是未定义的行为吗?