在 YAML 文件中传递 json-string 命令 arg
Passing a json-string command arg in a YAML file
我正在尝试 运行 一个命令,该命令会按照 here 所述更改 kubernetes cronjob 映像值。
但是,我没有向 cmd 键入此命令,而是尝试通过 Container Registry 的构建触发器 运行 它。
我试过 ' 和 \ 作为转义字符。
steps:
- name: 'gcr.io/cloud-builders/kubectl'
args: [
"patch",
"cronjob",
"cron-history-orders",
"--type=json",
"-p=[{'"op'":'"replace'",'"path'":'"/spec/jobTemplate/spec/template/spec/containers/0/image'",'"value'":'"python:3.5'"}]"
]
env: ['CLOUDSDK_COMPUTE_ZONE=europe-west3-c','CLOUDSDK_CONTAINER_CLUSTER=xxx-prod']
或者当我尝试
"-p='[{\"op\":\"replace\", \"path\": \"/spec/jobTemplate/spec/template/spec/containers/0/image\", \"value\":\"python:3.5\"}]'"
或
"-p='[{'op':'replace','path':'/spec/jobTemplate/spec/template/spec/containers/0/image','value':'python:3.5'}]'"
我得到error loading template: json: cannot unmarshal object into Go value of type []json.RawMessage
正如您无疑意识到的那样,这里的挑战是您正在处理转义层——您的 yaml 包含 json 将在命令行上传递。
我能够通过这个 yaml 传递这个命令:
steps:
- name: 'gcr.io/cloud-builders/kubectl'
args: [ "patch", "cronjob", "cron-history-orders", "--type=json", "-p='[{\"op\":\"replace\", \"path\": \"/spec/jobTemplate/spec/template/spec/containers/0/image\", \"value\":\"python:3.5\"}]'" ]
env: ['CLOUDSDK_COMPUTE_ZONE=europe-west3-c','CLOUDSDK_CONTAINER_CLUSTER=xxx-prod']
我正在尝试 运行 一个命令,该命令会按照 here 所述更改 kubernetes cronjob 映像值。 但是,我没有向 cmd 键入此命令,而是尝试通过 Container Registry 的构建触发器 运行 它。
我试过 ' 和 \ 作为转义字符。
steps:
- name: 'gcr.io/cloud-builders/kubectl'
args: [
"patch",
"cronjob",
"cron-history-orders",
"--type=json",
"-p=[{'"op'":'"replace'",'"path'":'"/spec/jobTemplate/spec/template/spec/containers/0/image'",'"value'":'"python:3.5'"}]"
]
env: ['CLOUDSDK_COMPUTE_ZONE=europe-west3-c','CLOUDSDK_CONTAINER_CLUSTER=xxx-prod']
或者当我尝试
"-p='[{\"op\":\"replace\", \"path\": \"/spec/jobTemplate/spec/template/spec/containers/0/image\", \"value\":\"python:3.5\"}]'"
或
"-p='[{'op':'replace','path':'/spec/jobTemplate/spec/template/spec/containers/0/image','value':'python:3.5'}]'"
我得到error loading template: json: cannot unmarshal object into Go value of type []json.RawMessage
正如您无疑意识到的那样,这里的挑战是您正在处理转义层——您的 yaml 包含 json 将在命令行上传递。
我能够通过这个 yaml 传递这个命令:
steps:
- name: 'gcr.io/cloud-builders/kubectl'
args: [ "patch", "cronjob", "cron-history-orders", "--type=json", "-p='[{\"op\":\"replace\", \"path\": \"/spec/jobTemplate/spec/template/spec/containers/0/image\", \"value\":\"python:3.5\"}]'" ]
env: ['CLOUDSDK_COMPUTE_ZONE=europe-west3-c','CLOUDSDK_CONTAINER_CLUSTER=xxx-prod']