You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bitbucket自托管runner运行流水线后挂载卷内找不到生成文件如何解决

问题定位与解决步骤

1. 确认文件生成路径匹配挂载目录

  • 首先在流水线创建文件的步骤后添加诊断命令,打印当前工作路径和挂载目录的文件列表:
pwd && ls -la /opt/runner && find / -name "你的目标文件名" 2>/dev/null
  • 绝大多数此类问题都是因为使用相对路径创建文件:Bitbucket流水线容器默认工作目录不是/opt/runner,如果创建文件时没有写绝对路径,文件会生成在当前工作目录,自然不会同步到挂载的宿主机路径。

2. 验证卷挂载规则实际生效

  • 登录runner所在的Linux宿主机,执行测试命令验证挂载功能正常:
    docker run --rm -v /home/ubuntu/runner:/opt/runner alpine touch /opt/runner/mount_test.txt && ls -l /home/ubuntu/runner/mount_test.txt
  • 如果执行后宿主机找不到mount_test.txt,按以下顺序排查:
    • 检查宿主机目录权限:执行ls -ld /home/ubuntu/runner,确认runner运行的用户对该目录有读写执行权限,可临时执行chmod 777 /home/ubuntu/runner做验证测试
    • 检查挂载路径拼写:确认runner配置里的宿主机路径、容器路径没有拼写错误,比如漏写斜杠、大小写错误

3. 检查runner的Docker配置是否正确加载挂载规则

  • Bitbucket自托管runner的自定义挂载需要写在config.toml的[[runners.docker]]段的volumes配置项中,示例如下:
[[runners.docker]]
  volumes = ["/cache", "/home/ubuntu/runner:/opt/runner:rw"]
  • 配置修改后必须重启runner服务才能生效,systemd管理的runner执行systemctl restart bitbucket-runner即可。
  • 可在流水线中执行mount | grep /opt/runner验证挂载是否生效,无输出说明挂载规则没有被加载到当前任务的运行容器中。

4. 排除文件被自动清理的情况

  • 部分流水线配置会在任务结束后自动清理容器内的文件,可在创建文件的步骤后添加sleep 300命令,在休眠的5分钟内直接登录到运行流水线的容器中,确认/opt/runner路径下是否有目标文件,同时查看宿主机对应路径是否同步生成文件。
通用解决方案
  • 创建文件时强制使用绝对路径,例如直接执行touch /opt/runner/目标文件名,避免相对路径带来的路径漂移问题
  • 权限问题修复:将宿主机挂载目录的所有者修改为runner运行的用户,例如runner使用bitbucket用户运行的话,执行chown -R bitbucket:bitbucket /home/ubuntu/runner
  • 确认挂载规则添加了读写权限,不要漏写:rw后缀

内容的提问来源于stack exchange,提问作者Bender

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:45:07