【问题标题】:Yaml invalid when I try to do a kubectl patch deploy to Gitlab当我尝试将 kubectl 补丁部署到 Gitlab 时,Yaml 无效
【发布时间】:2020-06-05 00:07:52
【问题描述】:

我需要在安装过程中通过 .gitlab-ci.yml 修补我的 Jupyterhub 安装。当我将分支推送到 giblab 时,我得到“yaml 无效”。该脚本在我从命令行运行时有效,但在我从 .gitlab-ci.yml 运行时无效。

- kubectl patch deploy -n $NAMESPACE hub --type json --patch '[{"op": "replace", "path": "/spec/template/spec/containers/0/command", "value": ["bash", "-c", "\nmkdir -p ~/hotfix\ncp -r /usr/local/lib/python3.6/dist-packages/kubespawner ~/hotfix\nls -R ~/hotfix\npatch ~/hotfix/kubespawner/spawner.py << EOT\n72c72\n<             key=lambda x: x.last_timestamp,\n---\n>             key=lambda x: x.last_timestamp and x.last_timestamp.timestamp() or 0.,\nEOT\n\nPYTHONPATH=$HOME/hotfix jupyterhub --config /srv/jupyterhub_config.py --upgrade-db\n"]}]'

https://rancher.com/blog/2020/ai-meets-kubernetes

【问题讨论】:

    标签: gitlab yaml gitlab-ci kubectl jupyterhub


    【解决方案1】:

    这是因为该命令包含一个未引用的:,YAML 将其视为映射值指示符。您可以使用折叠块标量,它可以按字面意思解释所有包含的字符,但会将换行符折叠成空格(也有助于提高可读性):

    - >-
      kubectl patch deploy -n $NAMESPACE hub --type json
      --patch '[{"op": "replace",
      "path": "/spec/template/spec/containers/0/command",
      "value": ["bash", "-c", "\nmkdir -p ~/hotfix\ncp -r
      /usr/local/lib/python3.6/dist-packages/kubespawner ~/hotfix\nls
      -R ~/hotfix\npatch ~/hotfix/kubespawner/spawner.py <<
      EOT\n72c72\n<             key=lambda
      x: x.last_timestamp,\n---\n>             key=lambda x: x.last_timestamp
      and x.last_timestamp.timestamp() or 0.,\nEOT\n\nPYTHONPATH=$HOME/hotfix
      jupyterhub --config /srv/jupyterhub_config.py --upgrade-db\n"]}]'
    

    您只能在单个空格上拆分行,并且不能缩进以下行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      • 2019-12-27
      • 2020-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多