我想用gitlab ci管道中的变量替换.yml文件中的变量。
这是yml中需要替换的部分:
apiVersion: v1
kind: Secret
metadata:
name: appconfig
type: Opaque
stringData:
appconfig.json: |-
_APPCONFIG_
这是.gitlab-ci.yml中的sed执行
- sed 's/_APP_NAME_/'"$CI_PROJECT_NAME"'/g; s/_APPCONFIG_/'"$APPCONFIG_TEST"'/g; s/_VERSION_/'"$CI_COMMIT_SHA"'/g' kubernetes.tpl.yml > kubernetes.yml;
它将从Gitlab CI变量中替换_APP_NAME _, APPCONFIG 和 VERSION ,然后将文件写入kubernetes.yml。 一切正常,直到我尝试将JSON放入Gitlab变量中为止:
{
"first": {
"first_1": "bla",
"first_2": "blabla"
},
"second": "123asd"
}
如果我以此方式运行,我会得到
sed: unmatched '/'
ERROR: Job failed: command terminated with exit code 1
如果我用JSON的内容在一行上运行它:
{"first":{"first_1":"bla","first_2":"blabla"},"second":"123asd"}
一切正常。
这有点像一种解决方法,所以无论如何,我可以运行sed并传递JSON值(带有空格和换行符)而不中断执行吗?
谢谢!