使用sed用gitlab ci管道变量替换yml文件中的变量?

时间:2019-03-14 10:18:56

标签: bash sed kubernetes gitlab gitlab-ci

我想用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值(带有空格和换行符)而不中断执行吗?

谢谢!

0 个答案:

没有答案