我有一个使用Travis CI
的存储库,在.travis.yml
我有这一行:
script:
- vim -Nu <(cat <<-EOF
set nocompatible |
filetype off
EOF
) -c 'Script' > /dev/null
可悲的是,这不起作用,因为它被转换为单行并且执行如下:
vim -Nu <(cat <<-EOF set no compatible | filetype off | EOF ) -c 'Script' > /dev/null
这使得EOF
代码无效,因为EOF
需要在一行中。
另一种方法是使用这样的常规引号:
script:
- vim -Nu <(cat 'set nocompatible |
filetype off
) -c 'Script' > /dev/null
哪个有效,并且很好,但我觉得必须有一种方法可以在.travis.yml
中插入换行符。我现在有另一种选择,但将来我可能不会。那你怎么做的?
答案 0 :(得分:33)
在YAML中,您可以使用""
引用并转义换行符(\n
)来指定标量中的换行符,或者,对于您的情况更为自然,使用{{3} }:
script:
- |
vim -Nu <(cat <<-EOF
set nocompatible |
filetype off
EOF
) -c 'Script' > /dev/null
这是一个标题,以带有|
(管道符号)的行开头,后跟多行,其中保留了换行符。
|
之后可以有修饰符:1
- 9
,当第一行以空格开头时使用; +
,-
影响最终换行符的删除(通常会合并为一行)。答案 1 :(得分:14)
我使用这种格式来达到预期的效果
script:
- >
valgrind
--read-var-info=yes
--error-exitcode=1
--fullpath-after=
--track-origins=yes
--leak-check=full
--num-callers=20
--suppressions=$(pwd)/tests/zephir_parser.3.7.0.sup
$(phpenv which php)
-d variables_order=EGPCS
run-tests.php
-p $(which php)
-d extension=$(pwd)/modules/zephir_parser.so
-d variables_order=EGPCS
-g "FAIL,XFAIL,BORK,WARN,LEAK,SKIP"
--offline
--show-diff
--set-timeout 120
答案 2 :(得分:1)
您正在寻找的是|
。这里有一个非常清晰的例子可以参考。
build:
commands:
- echo "${CODEBUILD_BUILD_ARN}"
- |
if expr "${CODEBUILD_BUILD_ARN}" : ".*build/MyProjectDev-" >/dev/null; then
yarn run build-dev;
fi
- |
if expr "${CODEBUILD_BUILD_ARN}" : ".*build/MyProject-" >/dev/null; then
yarn run build-prod;
fi