jenkins - Jenkins替换存储在另一个存储库中的yaml文件中的图像标签
问题描述
我有两个不同的应用程序和清单存储库。在清单存储库中,我有values.yaml
每个微服务的文件。我正在寻找一种image.tag
使用 ${BUILD_NUMBER} 更新值的方法,然后将这些更改从应用程序管道提交/合并到清单存储库,如下所示。
这样做的最佳方法是什么?
image:
repository: example.com/app/backend
tag: "450"
pullPolicy: Always
这是 jenkinsfile 中用于应用程序 repo 的阶段。
stage('Deploy to DEV') {
when{
beforeAgent true
expression{return env.GIT_BRANCH == "origin/development"}
}
steps {
script {
sh """
git clone https://github.com/mycompany/backend.git
cd apps/project1/app-dev/backend-dev
def text = readFile file: "values.yaml"
text = text.replaceAll("%tag%", "${${BUILD_NUMBER}}")
git add . -m "Update app image tag to ${BUILD_NUMBER}"
git push origin master
"""
}
}
解决方案
使用该解决方案,您values.yaml
的内容将被替换,并且每次该文件都会被视为已更改。
另一种解决方案可能是:处理 yaml 文件中的环境变量并通过 jenkinsfile 导出值。 您可以在标签部分的文件中
添加环境变量。
其中的示例可能是:
然后您可以通过 jenkins 管道传递此环境变量的值。${ENVIRONMENT_VARIABLE}
values.yaml
${BUILD_NUMBER}
export ENV_VAR_NAME=env_var_value
export BUILD_NUMBER=${BUILD_NUMBER}
sh """
git clone https://github.com/mycompany/backend.git
cd apps/project1/app-dev/backend-dev
# def text = readFile file: "values.yaml"
# text = text.replaceAll("%tag%", "${${BUILD_NUMBER}}")
export BUILD_NUMBER=${BUILD_NUMBER}
git add . -m "Update app image tag to ${BUILD_NUMBER}"
git push origin master
"""
有关在 yaml 文件中使用环境变量的更多信息: https ://docs.greatexpectations.io/en/0.11.6/how_to_guides/configuring_data_contexts/how_to_use_a_yaml_file_or_environment_variables_to_populate_credentials.html
推荐阅读
- python - Visual Studio python读取文件相对路径
- android - 在 android studio 中使用 ndk 构建工具构建 opencv 时出现此错误
- python - Gensim n_similarity 单词不在词汇表中
- symfony - Composer & Symfony - 致命错误:内存不足
- android - 如何在mpandroidchart上设置自定义值axisLeft
- ios - UITest 在框架中不起作用
- android - 设置时间表布局
- javascript - 我被复选框属性卡住了
- python - 使用 csv 文件中的批量数据创建资源的 POST 请求
- javascript - 在一个范围内“交换”值