在此上下文中不允许使用 Gitlab CI YML 映射值

sw0*_*l0k 5 continuous-integration yaml continuous-deployment gitlab gitlab-ci

我想使用 Gitlab CI 在 master 提交时将我的静态网站部署到 ftp 服务器。我没有 DevOps 经验,并尝试通过互联网上的教程来做到这一点。我制作了这个 .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"
Run Code Online (Sandbox Code Playgroud)

但是 gitlab 向我显示这个 yml 文件的错误。它表示在此上下文中不允许映射值。你能帮我处理这个文件吗?谢谢!

Rad*_*iel 8

有相同的错误消息

\n
(<unknown>): mapping values are not allowed in this context gitlabci\n
Run Code Online (Sandbox Code Playgroud)\n

我的情况的问题是:

\n

查看文档: https ://docs.gitlab.com/ee/ci/yaml/README.html#script

\n

有时,脚本命令必须用单引号或双引号引起来。例如,包含冒号 (:) 的命令必须用单引号 (\') 括起来。YAML 解析器需要将文本解释为字符串而不是 \xe2\x80\x9ckey: value\xe2\x80\x9d 对。

\n

例如,此脚本使用冒号:

\n
job:\n  script:\n    - curl --request POST --header \'Content-Type: application/json\' "https://gitlab/api/v4/projects"\n
Run Code Online (Sandbox Code Playgroud)\n

要被视为有效的 YAML,您必须将整个命令用单引号引起来。如果命令已使用单引号,则应尽可能将其更改为双引号 ("):

\n
job:\n  script:\n    - \'curl --request POST --header "Content-Type: application/json" "https://gitlab/api/v4/projects"\'\n
Run Code Online (Sandbox Code Playgroud)\n