在此上下文中不允许 Gitlab CI YML 映射值
Posted
技术标签:
【中文标题】在此上下文中不允许 Gitlab CI YML 映射值【英文标题】:Gitlab CI YML Mapping values are not allowed in this context 【发布时间】:2018-09-28 13:37:32 【问题描述】:我想在 master 提交时使用 Gitlab CI 将我的静态网站部署到 ftp 服务器。我在 DevOps 方面没有经验,并尝试通过 Internet 上的教程来做到这一点。 我制作了这个 .gitlab-ci.yml 文件
deploy:
stage: deploy
only:
- master
deploy:
script:
- apt-get update -qq && apt-get install -y -qq lftp
- lftp -u ftp-login,ftp-pass ftp.server \
-e "mirror -e -R -x .git -x excl.txt -x exclude-1 -x exclude-2 -x README.md -p ./ mysite/www/ ; quit"
但是 gitlab 向我显示了这个 yml 文件的错误。它说在这种情况下不允许映射值。你能帮我处理这个文件吗?谢谢!
【问题讨论】:
缩进搞砸了,而且那里多了一个deploy:
关键字。
【参考方案1】:
有同样的错误信息
(<unknown>): mapping values are not allowed in this context gitlabci
我的问题是:
查看文档:https://docs.gitlab.com/ee/ci/yaml/README.html#script
有时,脚本命令必须用单引号或双引号括起来。例如,包含冒号 (:) 的命令必须用单引号 (') 括起来。 YAML 解析器需要将文本解释为字符串而不是“键:值”对。
例如,此脚本使用冒号:
job:
script:
- curl --request POST --header 'Content-Type: application/json' "https://gitlab/api/v4/projects"
要被视为有效的 YAML,您必须将整个命令用单引号括起来。如果命令已使用单引号,则应尽可能将其更改为双引号 ("):
job:
script:
- 'curl --request POST --header "Content-Type: application/json" "https://gitlab/api/v4/projects"'
【讨论】:
以上是关于在此上下文中不允许 Gitlab CI YML 映射值的主要内容,如果未能解决你的问题,请参考以下文章
GitLab CI 的多行 YAML 字符串 (.gitlab-ci.yml)