GitLab CI执行流水线报-mkdir: command not found如何解决
报错原因
这个报错是YAML语法格式错误导致的:
.gitlab-ci.yml是YAML格式配置文件,script字段下的待执行命令是标准YAML列表结构,语法要求列表项开头的-标记后必须加空格,才会被解析为列表分隔符- 你当前配置里所有命令行的
-和后面的mkdir、cd、touch等命令直接连写、没有空格,YAML解析器不会把开头的-当列表标记,而是把-mkdir、-cd这类完整字符串识别为要执行的shell命令 - 系统环境里不存在名为
-mkdir的可执行文件,shell执行时自然会抛出命令不存在的错误。
修复方法
把script块下每一行开头的-和后续命令之间补上一个空格,就能解决这个命令找不到的报错。修正后的配置参考:
stages: - build - test build the car: stage: build script: - mkdir build - cd build - touch car.txt - echo "chassis" > car.txt - echo "engine" >> car.txt - echo "wheels" >> car.txt
额外提示:原配置里echo命令用的是
>重定向,每次写文件都会覆盖之前的内容,最终car.txt里只会保留最后一行wheels。如果需要把三行内容都写入文件,从第二个echo开始要换成>>追加重定向,这个是逻辑优化项,和本次命令找不到的报错无关。
内容的提问来源于stack exchange,提问作者vish
相关产品推荐
相关产品推荐

