【问题标题】:Error: before_script config should be an array of strings错误:before_script 配置应该是一个字符串数组
【发布时间】:2024-01-24 07:51:02
【问题描述】:

GitLab:

.gitlab-ci.yml 语法错误

docker exec -i XXX pip3 install -r ./requirements_os_specific.txt --target=./packages --platform=manylinux1_x86_64 --only-binary=:all:

此命令给出语法错误。

“错误:before_script 配置应该是一个字符串数组”

如果我删除“--only-binary=:all:”,这工作正常

variables :    IMAGE_NAME: xxx   

before_script:
  - whoami
  - echo $GitLabPassword
  - docker login -u Prasenjit.Chowdhury -p $GitLabPassword xxxxxxx
  - docker -v
  - docker exec -i abc python -V
  - docker exec -i abc aws --version
  - docker exec -i abc pip3 install -r ./requirements_os_specific.txt --target=./packages --platform=manylinux1_x86_64 --only-binary=:all:

如果我删除最后一行,这个脚本可以正常工作

【问题讨论】:

  • 能否请您添加有问题的 gitlab-ci.yml 文件?指定您在 before_script 部分中提到的命令时,错误清楚地表明错误。
  • 如果我从 before_script 部分中删除最后一行,那么它的工作正常。特别是如果我删除 --only-binary=:all: 那么它的工作正常。
  • 如果没有 GitLab-ci.yml,该命令是否可以正常工作?我的意思是在本地运行容器或引发错误。我正在尝试了解您提到的命令是否存在问题。
  • 是的,如果我直接从终端运行它,它工作正常。

标签: gitlab yaml gitlab-ci


【解决方案1】:

您必须在 yaml 中转义冒号 :。这可以通过用引号 " 包围整个条目来完成。

替换:

- docker exec -i abc pip3 install -r ./requirements_os_specific.txt --target=./packages --platform=manylinux1_x86_64 --only-binary=:all:

与:

- "docker exec -i abc pip3 install -r ./requirements_os_specific.txt --target=./packages --platform=manylinux1_x86_64 --only-binary=:all:"

【讨论】:

  • 太棒了,我认为在编写需要“:”的命令/参数时是issue。你救了我的命@sascha-frinken
  • 不得不承认,在这种情况下,错误消息并不是特别有用...
最近更新 更多