我在Travis文件中有以下部署脚本,并且遇到多行命令问题。我尝试了很多组合,但找不到合适的解决方案。如果我将其提取到文件中并从脚本属性中调用它,则它可以正常工作,但我们的目标是将所有命令作为多行命令放入脚本属性中。
Red
这是错误日志:
deploy:
- provider: script
skip_cleanup: true
script: mvn deploy -B -DskipTests -Dbuild.number="$TRAVIS_BUILD_NUMBER"
on:
tags: false
branch: dev
- provider: script
skip_cleanup: true
script:
pip install something &&
another-command &&
yet-another-command &&
docker push "image-name"
on:
tags: false
all_branches: true
如果有人知道如何定义多行命令,我将不胜感激。预先感谢。
答案 0 :(得分:1)
从YAML的角度来看,您给出的示例看起来很合法。请确保没有空行或注释,以免脚本部分的内容变成一个字符串
部署中的script
提供程序要求脚本内容为单个字符串。只允许一行,所以您不能使用YAML数组。
这与top level script
section有不同。顶层script
部分允许您使用YAML数组,这意味着您可以提供以-
话虽如此,任何YAML单行(无行结尾)都可以在deploy的脚本部分中正确使用。这是一些例子
script: pip install something &&
another-command &&
yet-another-command &&
docker push "image-name"
# >- to removing the ending new line
script: >-
pip install something &&
another-command &&
yet-another-command &&
docker push "image-name"
以下示例对于部署的脚本部分将不起作用,但对于顶层脚本部分将起作用
# Only works in top level script not deploy script
script:
- pip install something && another-command
- yet-another-command
- docker push "image-name"
答案 1 :(得分:0)
我会尝试以下选项之一:
选项1:创建您的this
脚本,然后从deploy.sh
对其进行调用。我喜欢这个选项,因为它可以使生活更轻松-因为您可以单独测试和运行它,并且可以避免遇到这个确切的问题。
选项2:如果您坚持只在.travis.yml
中使用命令-您可以尝试以下语法更改之一:
a:尝试在.travis.yml
定义中使用|
或>
(表示多行文本):
script:
b:尝试将script: >
pip install something &&
another-command &&
yet-another-command &&
docker push "image-name"
作为数组提供(假设Travis在此也支持此语法-其他许多选项也支持该语法):
script