我有两个不同的应用程序存储库和manifests.In清单存储库,每个微服务都有values.yaml文件。我正在寻找一种方法来更新${BUILD_NUMBER}的image.tag值,然后将此更改从应用程序管道提交/合并到清单存储库,如下所示。
做这件事的最好方法是什么?
image:
repository: example.com/app/backend
tag: "450"
pullPolicy: Always这是jenkinsfile中的app 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
"""
}
}发布于 2021-05-24 17:14:54
使用该解决方案,您的values.yaml将被替换为内容,并且每次此文件都会被视为已更改。
作为另一种解决方案,可以是:处理yaml文件中的环境变量,并通过jenkinsfile导出值。
您可以在values.yaml文件的tags部分中添加环境变量${ENVIRONMENT_VARIABLE}。
其中的示例可能是:${BUILD_NUMBER}
然后,您可以通过jenkins管道传递此环境变量的值。
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
https://stackoverflow.com/questions/67663835
复制相似问题