使用 Jenkins 将图像标签添加到 kubernetes 清单

Add image tag to kubernetes manifest with Jenkins

目前,我选择要推送到注册表的图像,并且在将文件推送到 Git 存储库之前,我使用“复杂”方法将图像标签设置为清单。

这是我的代码

stage("Push to Repo "){            
                steps {
                    script {
                    def filename = 'Path/to/file/deploy.yaml'
                    def data = readYaml file: filename
                    data.spec[0].template.spec.containers[0].image = "XXXXXXXXXXXXXXXXXXXXX:${PROJECT_VERSION}"
                    sh "rm $filename"
                    writeYaml file: filename, data: data
                    sh "sed -ie 's/- apiVersion/  apiVersion/g' Path/to/file/deploy.yaml "
                    sh "sed -i '/^          - c.*/a ---' Path/to/file/deploy.yaml "
                    sh ''' cd Path/to/file/
                        git add .
                        git commit -m "[0000] [update] update manifest to version: ${PROJECT_VERSION}  "
                        git push -u origin HEAD:branche_name '''
                }}}

我正在寻找另一种方法来直接解析图片标签以显示清单。

是否有 Jenkins 插件可以做到这一点?

我用的是YQ工具,是用来编辑yaml文件的镜像。
示例(仅 docker run):

docker run --rm --user="root" 
-e TAG=dev-123456
-v "${PWD}":/workspace 
-w /workspace mikefarah/yq
eval '.spec.spec.containers.image.tag = strenv(TAG)' 
-i values.yaml

这将替换部署中当前标签的标签 dev-123456。
我写多行是为了方便看,喜欢的可以写一行
Link 详情:
https://hub.docker.com/r/mikefarah/yq