gitlab - 使用“:”的脚本命令导致 .gitlab-ci.yml 执行错误
问题描述
在我的.gitlab-ci.yml
文件下面:
image: docker:latest
services:
- docker:dind
stages:
- deploy_dev_env
Deploy DEV Environment:
stage: deploy_dev_env
script:
- curl -v -H "Content-Type: multipart/form-data" -X PUT -F uploadInput=@schema/schema.xml -F overwrite=true -F xmlaEnabledFlag=true -F parameters="DataSource=outputDS" -F parameters="EnableXmla=true" -u $PENTAHO_DEPLOY_USER:$PENTAHO_DEPLOY_PASSWORD http://$PENTAHO_HOST/pentaho/plugin/data-access/api/datasource/analysis/catalog/sca
这个非常简单的脚本导致错误,因为该"Content-Type: multipart/form-data"
片段中的冒号(:)。
在脚本中运行 CI Lint 我得到以下信息:
Status: syntax is incorrect
jobs:deploy dev environment:script config should be a string or an array containing strings and arrays of strings
如果我替换"Content-Type: multipart/form-data"
为"Content-Type multipart/form-data"
(删除“:”),我得到我的 .gitlab-ci.yml 文件的正确语法。
这是一个错误还是我应该以不同的方式重新编写我的 curl 命令?
解决方案
文档警告 yaml 脚本中的特殊字符:
注意:有时,脚本命令需要用单引号或双引号括起来。例如,包含冒号 (:) 的命令需要用引号括起来,以便 YAML 解析器知道将整个内容解释为字符串而不是“键:值”对。使用特殊字符时要小心::, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @, `。
一种选择是使用yaml 块标量
Deploy DEV Environment:
stage: deploy_dev_env
script: >
curl -v -H "Content-Type: multipart/form-data" -X PUT -F uploadInput=@schema/schema.xml -F overwrite=true -F xmlaEnabledFlag=true -F parameters="DataSource=outputDS" -F parameters="EnableXmla=true" -u $PENTAHO_DEPLOY_USER:$PENTAHO_DEPLOY_PASSWORD http://$PENTAHO_HOST/pentaho/plugin/data-access/api/datasource/analysis/catalog/sca
或使用其他方式在 yaml 中转义冒号。
推荐阅读
- arduino - esp32 cam 设置帧大小失败
- python - 如何存储通过 API 访问的人脸识别应用程序的嵌入?
- java - 在一个语句中从同一个 java 包中导入两个类
- html - 如何使用变量而不是类:contains?
- sql - PhpMyAdmin - 导出与查询结果不同
- python - 为什么 input() 只返回字符串?
- python - 将两个列表合并到字典中,有例外挑战
- python - 机器人框架和 Python - 检查文件是否存在
- sql - 如果语句包含 RETURNING 子句,则 mysql_stmt_bind_result() 失败
- java - 找不到绑定 vaadin 组合框的方法