sam*_*ime 56 yaml gitlab-ci gitlab-ci-runner
我正在尝试编写一个gitlab-ci.yml使用多行字符串作为命令的文件.但是,它似乎没有被解析.我都试过了- |,并- >用相同的结果.
stages:
- mystage
Build:
stage: mystage
script:
- |
echo -e "
echo 'hi';
echo 'bye';
"
Run Code Online (Sandbox Code Playgroud)
当它尝试运行时,它只显示echo -e '要运行的脚本,而不是整个多行字符串.这给我带来了问题.
写这样的东西的正确语法是什么?
Pot*_*mer 77
我来到这里是先发制人地期待这将是一个问题,但以下"多行"命令的可读性对我有用:
Gitlab Runner: Shell Runner版本1.11.0/Gitlab版本: 8.17.2
myjob:
stage: deploy
script:
# Single line command
- az component update --add sql
# Multi-line command
- az sql server create -n ${variable} -g ${variable} -l ${variable}
--administrator-login ${variable} --administrator-login-password ${variable}
Run Code Online (Sandbox Code Playgroud)
Ben*_*y K 22
您可以通过yaml literal_block和anchors功能使用任何多行脚本/命令.例:
.build: &build |
echo -e "\n$hl Building $green$build_path/$build_assets_dir/*.js $nl\n"
echo -e "javascript-obfuscator $build_path/$build_assets_dir/*.js"
[...]
build:master:
stage: build
script:
- *rsync
- *build
[...]
Run Code Online (Sandbox Code Playgroud)
Ant*_*hon 19
由于这个问题似乎与Gitlab CI不支持的多行脚本有关(如@Jordan所示)并且你的"脚本"实际上只是一个命令,你应该只将它重写为一行:
script:
- echo -e
"echo 'hi';
echo 'bye';"
Run Code Online (Sandbox Code Playgroud)
因为你的标量没有被引用(即它以它开头echo -e)你不需要在YAML中做任何特殊的反斜杠或引号.
脚本的结果是相同的(打印一个空行,echo在一行上打印缩进四个空格,echo 'hi';在一行上打印缩进四个空格.)
如果要使用多行输入以提高可读性,最佳选择是预处理输入.我建议使用Python和ruamel.yaml(免责声明:我是作者),它允许您在执行此操作时保留引号和注释等功能.
鉴于此echo 'bye';:
- echo -e "\n echo 'hi';\n echo 'bye';\n"
Run Code Online (Sandbox Code Playgroud)
和以下Python(版本3)程序:
script:
- echo -e
"echo 'hi';
echo 'bye';"
Run Code Online (Sandbox Code Playgroud)
给出以下内容bye:
script:
- echo -e
"echo 'hi';
echo '
bye';"
Run Code Online (Sandbox Code Playgroud)
(不会>保留多行字符串).
从程序中你还可以触发新生成的YAML文件的处理(例如,使用:,如果你想将它作为参数,请确保echo -e使用)echoecho 'hi';
小智 8
wp config create命令相当挑剔...来自.gitlab-ci ...
build:
stage: build
script:
- echo "Building the app"
- |
wp config create --dbname=$vardb --dbhost=$varhost --dbuser=$varusr --dbpass=$varpas --extra-php <<PHP
define( 'WP_DEBUG', false );
define( 'FS_METHOD', 'direct' );
define( 'WP_POST_REVISIONS', 5 );
define( 'AUTOSAVE_INTERVAL', 600 );
PHP
- scp ./wp-config.php continued...
allow_failure: true
Run Code Online (Sandbox Code Playgroud)
这在 Travis CI 中为我工作
before_install:
- set -e
- |
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<settings xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd\">
<servers>
<server>
<id>github</id>
<username>${GITHUB_USERNAME}</username>
<password>${GITHUB_PASSWORD}</password>
</server>
</servers>
</settings>
" > ${HOME}/.m2/settings.xml
Run Code Online (Sandbox Code Playgroud)
这里两个环境变量(${GITHUB_USERNAME}和${GITHUB_PASSWORD})也将被插值
| 归档时间: |
|
| 查看次数: |
43085 次 |
| 最近记录: |