GitLab CI构建Packer镜像报错:/bin/sh: eval: line 126: –: not found
GitLab流水线部署阶段错误原因及修复
错误核心原因
你的deploy_packer任务的script配置里,所有列表项开头用的是中文长破折号(–),而不是YAML语法要求的英文短横杠(-)。shell会把这个中文破折号当成命令去执行,但系统中不存在名为–的命令,因此抛出/bin/sh: eval: line 126: –: not found的错误。
修复后的配置文件
将deploy_packer下script部分的中文破折号全部替换为英文短横杠即可,修复后的.gitlab-ci.yml如下:
stages: - build - deploy image: alpine get_packer: stage: build artifacts: paths: - packer script: - echo "Fetching packer" - wget https://releases.hashicorp.com/packer/1.5.5/packer_1.5.5_linux_amd64.zip - unzip packer_1.5.5_linux_amd64.zip - chmod +x packer deploy_packer: stage: deploy script: - echo "Deploying Packer Build" - cd aws - ./packer build -only="*rhel*" .
注意事项
- YAML对符号格式要求严格,列表项必须用英文短横杠(
-)开头,且短横杠后必须跟一个空格。 - 后续若遇到类似"command not found"的错误,优先检查配置中的标点符号是否误使用了中文格式,这类低级错误容易引发奇怪的执行报错。
内容的提问来源于stack exchange,提问作者Legion_of_boom__
相关产品推荐
相关产品推荐

