GitLab同一阶段作业间CI/CD制品的下载路径查询
GitLab流水线制品定位问题解决指南
核心默认路径说明
通过needs关联上游作业的制品时,GitLab Runner会自动将制品下载到当前作业工作目录下的artifacts/子目录,具体路径为:./artifacts/<上游作业名称>/,对应你的场景就是./artifacts/build-deps/
先确认上游作业的制品配置
首先要排查build-deps的artifacts配置是否正确,必须明确指定要上传的文件/目录,否则下游无法拉取到制品:
build-deps: stage: build script: - # 你的依赖构建命令(如npm install、go mod download等) - mkdir -p ./dependencies - # 将依赖打包或整理到指定目录 artifacts: paths: - ./dependencies/ # 必须明确填写要上传的路径,不能模糊匹配或留空 expire_in: 1h # 可选,设置制品过期时间
用精准命令定位制品
在build作业的script里不要只执行简单的ls,用以下命令排查路径:
pwd # 先确认当前工作目录,避免操作路径错误 ls -la ./artifacts/ # 查看制品根目录的内容 find ./artifacts/ -type f # 递归查找所有制品文件,确保能找到目标文件
如果build-deps配置了name字段(比如name: "deps-$CI_COMMIT_SHA"),下载路径会变为./artifacts/<自定义名称>/,可以用echo $CI_COMMIT_SHA确认变量值,或用find ./artifacts/ -name "deps-*"模糊查找。
Dockerfile中引用制品的正确方式
假设build-deps上传的是./dependencies/目录,在build作业的Dockerfile中直接从artifacts目录复制即可:
FROM my-base-image:latest # 复制拉取到的依赖到容器内指定路径 COPY ./artifacts/build-deps/dependencies/ /app/dependencies/ # 后续构建步骤 RUN npm run build
跨Runner环境注意事项
由于使用了不同的Runner(runnerX和runnerY),需确保两个Runner的CI_PROJECT_DIR等核心环境变量未被自定义修改,工作目录配置保持一致,避免因Runner环境差异导致制品下载路径偏移。
内容的提问来源于stack exchange,提问作者rbaleksandar
相关产品推荐
相关产品推荐

