我正在Gitlab项目中实现Auto Build,为此我使用.gitlab-ci.yml
文件,其中包含多行YAML块,包含shell命令,代码如下:
if [ "${GITLAB_USER_LOGIN}" != "nadirabbas" ]
then
echo "Building"
if [ ! -d "dist" ]; then mkdir dist; fi
if [ ! -f "dist/index.html" ]; then touch dist/index.html; fi
fi
我尝试了许多解决方案,例如在if语句后以及在fi
关键字后放置;
,但似乎都不起作用。我的作业日志返回以下语法错误:
syntax error near unexpected token `fi'
我试过谷歌一下,但是其他的解决方案似乎不起作用,我的跑步者使用的 shell 是bash
。
3条答案
按热度按时间suzh9iv81#
正如我在注解中提到的,最简单的方法可能是将脚本放在自己的文件中(确保它是可执行的!),然后从gitlabci调用它。
例如,您可以有一个
build.sh
文件:然后从yml调用它:
gstyhher2#
对我来说,使用
- |
(注意-
和|
之间的空间)语法适用于多行bash脚本:注意脚本的行必须以相同的缩进级别开始。
另请参阅GitLab官方文档
fbcarpbf3#
问题是,
.gitlab-ci.yml
并不真正允许多行脚本(这更多的是YAML的限制,而不是gitlab的限制)。因此,如果您不想使用脚本(如@Mureinik所建议的),可以将所有内容折叠为一行:
(我也去掉了内部的
if
-条件;因为您可以使用mkdir
和touch
的标志来获得大致相同的行为)