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

GitHub Actions如何访问/home/runner/XXXXX路径下的文件

报错根因与路径说明

GitHub Action 执行actions/checkout拉取代码时的默认目录规则是固定的:

  • 第一层路径/home/runner/work/Orchestra是当前工作流分配的工作空间根目录,对应Action内置变量${{ github.workspace }}
  • 第二层路径/home/runner/work/Orchestra/Orchestra是当前触发工作流的Orchestra仓库代码的默认存放位置

所以路径里出现两次Orchestra是正常的默认行为,不是配置错误。
你触发报错的核心原因是:用来执行合并操作的第三方私有仓库代码,被克隆到了其他目录,代码中写死的目录路径没有对齐Orchestra仓库内data文件夹的实际存放位置,导致os.listdir找不到目标路径。

直接修复步骤

按以下顺序调整配置即可让脚本正常读取data文件夹:

  • 明确两个仓库的拉取路径,避免目录混淆
    不要让两个仓库的代码拉到同一个目录下,在checkout步骤显式指定工具仓库的存放路径,参考配置:
    - name: 拉取Orchestra仓库代码
      uses: actions/checkout@v4
      # 无特殊配置时,会自动将代码拉到/home/runner/work/Orchestra/Orchestra路径下,你上传的data文件夹就在这个目录里
    
    - name: 拉取合并用私有工具仓库
      uses: actions/checkout@v4
      with:
        repository: 你的组织名/合并工具仓库名
        token: ${{ secrets.REPO_ACCESS_PAT }} # 拉取组织私有仓库需要配置有对应权限的个人访问令牌
        path: ./merge_utils # 工具仓库单独存放到工作空间下的merge_utils子目录,和Orchestra自身代码隔离
    
  • 不要在代码里写死data目录路径,运行脚本时显式传入绝对路径
    相对路径很容易因为脚本执行位置变化出现寻址错误,执行合并脚本时直接通过参数传入data文件夹的绝对路径即可:
    - name: 执行文件合并
      run: python ./merge_utils/merge.py --data-dir ${{ github.workspace }}/Orchestra/data
    
    对应Python代码中,将self.dir的赋值改为接收--data-dir传入的参数值即可,不需要写死任何路径。
备选数据访问方案

如果不想把data文件夹直接提交到Orchestra代码仓库,可以根据数据体积选择以下方案:

  • 数据体积小于100MB时,可以将data文件夹打包后上传到Orchestra仓库的Release附件,工作流运行时通过内置GITHUB_TOKEN拉取附件解压使用
  • 小体积配置类数据,可以直接存放到仓库的Actions Secrets中,工作流运行时直接写入到目标目录即可
  • 数据更新频率低时,可以直接将data文件夹放到合并工具仓库中,拉取工具仓库时会同步拉取数据,不需要跨目录寻址
  • 数据体积较大时,可以直接将数据存放在目标OneDrive路径下,工作流启动后先拉取OneDrive上的原始数据到运行环境,合并完成后直接回传,不需要将数据存储在代码仓库中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:18:24