非常简单的gitlab-ci.yml报告语法错误

非常简单的gitlab-ci.yml报告语法错误,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,我编写了一个非常简单的.gitlab-ci.yml,如下所示: image:horchen/vscode ext dev 工作1: 脚本: -回声“你好,世界” 只是呼应Hello World,我认为它应该能够在任何平台上运行。但是gitlab ci总是告诉我其中有语法错误 Running with gitlab-runner 13.2.2 (a998cacd) on nodejs-ci aPuhC2uZ Preparing the "docker" executor

我编写了一个非常简单的.gitlab-ci.yml,如下所示:

image:horchen/vscode ext dev
工作1:
脚本:
-回声“你好,世界”
只是呼应Hello World,我认为它应该能够在任何平台上运行。但是gitlab ci总是告诉我其中有语法错误

Running with gitlab-runner 13.2.2 (a998cacd)
  on nodejs-ci aPuhC2uZ
Preparing the "docker" executor
Using Docker executor with image horchen/vscode-ext-dev ...
Using locally found image version due to if-not-present pull policy
Using docker image sha256:17af24ad877daa656e102508585c7262585be04b05a75cc89833afcfe7403ebb for horchen/vscode-ext-dev ...
Preparing environment
Running on runner-apuhc2uz-project-1-concurrent-0 via cf9f41a14878...
Getting source from Git repository
Fetching changes with git depth set to 50...
Reinitialized existing Git repository in /builds/horchen/vscode-rlcv/.git/
Checking out 93d3b0e1 as master...
Skipping Git submodules setup
Executing "step_script" stage of the job script
[: line 1: syntax error: unexpected end of file (expecting "then")
ERROR: Job failed: exit code 2
有人知道它为什么报告这样的错误吗

---------------附加数据-------------------

实际上我确实是在windows上开发的,但是我检查了CR/LF样式,也检查了hexdump。并尝试在webIDE和linux VIM上编辑它,但都没有在其中找到^M

  Offset: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F   
00000000: 69 6D 61 67 65 3A 20 68 6F 72 63 68 65 6E 2F 76    image:.horchen/v
00000010: 73 63 6F 64 65 2D 65 78 74 2D 64 65 76 0A 0A 61    scode-ext-dev..a
00000020: 66 74 65 72 5F 73 63 72 69 70 74 3A 0A 20 20 2D    fter_script:...-
00000030: 20 22 72 6D 20 2A 2E 76 73 69 78 22 0A 0A 6A 6F    ."rm.*.vsix"..jo
00000040: 62 31 3A 0A 20 20 73 63 72 69 70 74 3A 0A 20 20    b1:...script:...
00000050: 20 20 2D 20 65 63 68 6F 20 22 48 65 6C 6C 6F 20    ..-.echo."Hello.
00000060: 57 6F 72 6C 64 22 0A                               World".

作业的
步骤脚本
阶段包括
之前脚本
脚本
部分。您的执行者正在尝试执行您的
脚本
部分,这导致了错误

行尾误差 与Linux文件格式相比,Windows文件格式中经常出现文件结尾(预期为“then”)错误。看见尝试将您的
gitlab ci.yml
文件转换为具有Linux行结尾的文件,看看是否可以修复它。有很多工具可以做到这一点(参见上面的链接),包括
Notepad++

如果这是您的问题,那么您可能有一个更大的问题:您是否在Windows中开发并在Linux中运行代码?如果是这样,您可能需要设置.gittirbutes文件以自动将Windows EOL字符转换为Linux,反之亦然。看

添加没有回显的第二个作业 如果这不起作用,那么尝试向管道中添加另一个不打印任何内容的作业。只需将类似于
x=2
的内容添加到
script
部分。这可能会消除
脚本
中作为错误源的
回音

将作业分配给阶段 为了安全起见,创建一个
stages
部分,并将两个作业分配给同一个阶段,如下所示:

阶段:
-试验
工作2:
阶段:测试
脚本:
-x=2
Dockerfile疑难解答 如果这仍然没有帮助,那么我会开始怀疑你的Docker形象:
horchen/vscode ext dev
。GitLab可能正试图从容器中的作业执行
脚本
,这可能是先执行一些代码。您可能需要发布Dockerfile来解决此问题


我还怀疑Dockerfile调用的任何脚本的EOL CRLF/LF字符。

我在下面给出了答案,但可能还有其他可能导致此错误的原因。让我知道我的解决方案是否有效。horchen/vscode ext dev是什么类型的映像?Windows还是Linux?确切的版本是什么?另外,我在回答中添加了另一个故障排除步骤。如果有帮助,请告诉我。不是因为这个原因,我已经在我的windows机器上检查了CRLF/LF样式,并在hexdump(上面编辑)中进行了验证。还试图在webIDE和linux VIM上编辑它,仍然没有找到任何^M。你是对的,这是docker映像问题,我改为ubuntu:最新版本,然后echo工作。看来我从网络嬉皮士/nodejs制作的图像有一些问题。@chhx001耶!现在开始解决更大、更好的问题!祝你的项目好运!