运行 Jenkins 管道中的 kubectl 补丁 statefulset

Run kubectl patch statefulset in Jenkins pipeline

我需要使用 Jenkins 更新 statefulset。更预先cise,更新初始化容器中的主题。 这是我在 Jenkins 中使用的代码(在终端中运行良好):

kubectl patch statefulset test-deploy -n test -p '{"spec": {"template": {"spec":{"initContainers":[{"name": "theme", "image": "xxxx.dkr.ecr.us-east-1.amazonaws.com/testrepo:latest"}]}}}}'

我得到的错误:期待“}”,在第 293 行第 192 列找到“-”。 年龄": "xxx.dkr.ecr.us-东-1.am

当我将双引号改为单引号时: kubectl patch statefulset keycloak-job-deploy -n ci-environment-dev -p '{'spec': {'template': {'spec':{'initContainers': [{'name': 'theme', 'image': '837236160124.dkr.ecr.us-east-1.amazonaws.com/ci/keycloak-theme-thermo-fisher-develop:develop-0.0.1-3' }]}}}}'

我知道了:

服务器错误 (BadRequest):无效字符 's' 正在寻找对象键字符串的开头

能否请您帮助我了解引号有什么问题以及我应该使用什么命令?

我明白了。它与 Groovy 中的筛查有关。这是正确的版本:

kubectl patch statefulset test-deploy --namespace=${namespace} -p '{\"spec\": {\"template\": {\"spec\":{\"initContainers\":[{\"name\": \"theme\", \"image\": \"${theme}\"}]}}}}'