GitLab CI artefacts传递问题:cleanup_build文件未传至install_block
GitLab CI 作业间 Artefacts 传递问题解决
核心问题原因
GitLab CI 中每个作业都会在独立的干净环境(重新拉取的项目仓库)中运行,若不显式配置 artefacts 传递,前序作业生成的文件无法自动被后续作业获取。
解决方案步骤
1. 为 cleanup_build 配置 Artefacts 上传
在 cleanup_build 作业中添加 artifacts 配置,明确指定需要传递的文件/目录,确保作业成功时上传 artefacts:
cleanup_build: stage: cleanup script: - # 你的清理及生成clean文件的命令 - mkdir -p ${ARTEFACTS_FOLDER_PATH} - touch ${ARTEFACTS_FOLDER_PATH}/clean artifacts: paths: - ${ARTEFACTS_FOLDER_PATH}/ # 传递整个artefacts目录 when: on_success # 仅当作业成功时上传,符合你的需求
2. 让 install_block 依赖 cleanup_build
通过 needs 字段指定 install_block 依赖 cleanup_build,这样只有前者成功后,后者才会启动,并且自动下载前者的 artefacts:
install_block: stage: installation needs: [cleanup_build] script: - # 你的安装命令,此时可访问clean文件 - cat ${ARTEFACTS_FOLDER_PATH}/clean
3. 路径校验要点
- 确保
ARTEFACTS_FOLDER_PATH是相对仓库根目录的路径,避免使用绝对路径 - 在
cleanup_build的 script 中添加ls -l ${ARTEFACTS_FOLDER_PATH}验证文件是否生成
4. 验证 Artefacts 上传状态
在 GitLab 项目的 CI/CD 作业详情页,查看 cleanup_build 的「Artefacts」板块,确认文件是否成功上传。若未上传,检查:
- 文件是否真的在指定路径生成
- 作业运行环境是否有写入该路径的权限
内容的提问来源于stack exchange,提问作者IzaeDA
相关产品推荐
相关产品推荐

