GitLab流水线使用mikefarah/yq镜像执行命令报错求助
问题原因及解决方法
核心原因
GitLab流水线中使用的mikefarah/yq:4.27.2 Docker镜像里,yq命令要求显式指定eval(或别名e)子命令才能执行表达式,而本地安装的yq版本可能默认将无前置子命令的调用自动识别为eval操作,这就导致了本地与流水线环境的执行差异,触发了unknown shorthand flag: 'c'的错误。
解决方法
修改流水线任务中的yq执行命令,添加e(eval的别名)子命令:
prepare-version: image: mikefarah/yq:4.27.2 stage: prepare script: - ver=$(yq e '.version' versions.yml) - echo "version=${ver}" >> version.env artifacts: reports: dotenv: version.env
也可以使用完整的eval子命令写法:
ver=$(yq eval '.version' versions.yml)
修改后重新执行流水线,即可正常提取版本号并导出环境变量。
内容的提问来源于stack exchange,提问作者MostafaBakr
相关产品推荐
相关产品推荐

