【发布时间】:2020-03-03 17:21:24
【问题描述】:
目前我正在使用 Jenkins 和 kubernetes 进行 CI/CD 管道的实现演示。我创建了一个 Jenkins 管道作业,并在我的 Jenkinsfile 中添加了每一步。对于 kubernetes ,我为 Kubernetes 资源创建了部署和服务 YAML 文件。
部署中的映像版本管理
对于我的 SVN 存储库中的每个提交,我通过 Jenkins 环境变量将标签添加为内部版本号来创建 docker 映像。
image:1
image:2
.
.
image:n
混乱
如果我在我的 Jenkinsfile 部署阶段使用kubectl set image 命令更新我的部署,那么它将适用于第一次提交吗?
我感到这种困惑,因为命令说如果 YAML 文件中定义的图像发生变化,它是为了更新部署。所以如果我根据内部版本号(image-name:buildnumber)为每个提交更改图像,那么如果没有部署退出,它会第一次工作吗?
【问题讨论】:
-
嗨雅各布,你能详细说明你的困惑吗?
-
@damitj07 - 我修改了我对问题的困惑。指导我如果我走错了路。我的困惑是使用
kubectl set image在我的管道中进行首次部署。你能看看问题吗? -
或者您可以添加一个简单的条件签入您的 Jenkins,如果部署不存在,则第一次创建它并将其设置为第一个图像。从第二次提交开始更新。
-
是的,所以可以把它想象成每个 repo' 里面都有自己的 deployment.yml。因此,当第一次签入代码时,您可以使用该 yml 来检查部署是否已经存在?如果它不只是使用
kubectl apply创建开发,或者在第二次提交的情况下kubectl set image将起作用 -
您只需要名称或某种方式来识别它是否是第一次提交。你可以使用任何方法来做到这一点。
标签: jenkins kubernetes continuous-deployment