GitLab CI流水线前序阶段txt制品在后续阶段找不到是什么原因?
问题根因
你遇到的报错本质是shell命令赋值语法错误,并非tags.txt制品不存在,具体原因如下:
- 你第二个作业script中的
LATEST_TAG=cat tags.txt写法不符合shell变量赋值规则:该写法会被shell解析为「临时将LATEST_TAG变量的值设为字符串cat,然后尝试执行名为tags.txt的可执行文件」,系统找不到tags.txt这个可执行命令,因此抛出tags.txt: not found的错误。 - 从你的运行日志可以明确看到制品已经下载成功:日志明确打印了
Downloading artifacts from coordinator... ok,说明tags.txt已经被拉取到当前作业的工作目录中,不存在制品丢失的问题。
修复方案
将第二个作业script中的赋值语句修改为正确的命令输出赋值语法即可:
- LATEST_TAG=$(cat tags.txt)
额外注意事项
- 检查第二个作业的image配置,你当前写的
entrypoint: [""缺少右闭合括号,正确写法应为entrypoint: [""],避免镜像启动异常。 - 第一个作业设置了
allow_failure: true,若前序作业执行失败也会导致无可用制品,建议根据业务需要调整该配置,或者在第二个作业中增加tags.txt存在性校验逻辑,提前识别问题。
内容的提问来源于stack exchange,提问作者Milica Nikolić
相关产品推荐
相关产品推荐

