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

Github Actions缓存无法复用:如何创建通用缓存或移除分支限制?

解决GitHub Actions中Poetry缓存分支限制问题

你遇到的问题是因为actions/setup-python的默认缓存逻辑受分支隔离限制,PR分支无法复用主分支或其他分支的缓存,导致每次PR都重新生成缓存。以下是两种可行的解决方法:

方法一:手动配置通用缓存(推荐)

放弃setup-python内置的cache参数,改用actions/cache手动定义缓存规则,让缓存键仅依赖于依赖文件的哈希值,与分支无关:

some-step:
  name: 'Test step'
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v3
    - run: pipx install poetry
    - name: Set up Python 3.8
      uses: actions/setup-python@v4
      with:
        python-version: "3.8"
        architecture: "x64"
        # 移除原有的cache: "poetry"配置
    - name: Cache Poetry dependencies
      uses: actions/cache@v3
      with:
        # 指定Poetry缓存的核心目录:虚拟环境和依赖缓存
        path: |
          ~/.cache/pypoetry/virtualenvs
          ~/.local/share/pypoetry
        # 缓存键由系统类型、Poetry标识和依赖文件哈希组成
        key: ${{ runner.os }}-poetry-${{ hashFiles('pyproject.toml', 'poetry.lock') }}
        # 降级匹配规则:如果找不到完全匹配的键,优先找同系统的Poetry缓存
        restore-keys: |
          ${{ runner.os }}-poetry-
    - name: Install dependencies
      run: poetry install
    - run: poetry run ...

关键说明:

  • path:指定Poetry存储虚拟环境和下载依赖的缓存目录,确保这些内容被缓存。
  • key:用hashFiles生成pyproject.toml和poetry.lock的哈希值,只有当依赖文件变更时,缓存键才会更新,保证不同分支只要依赖一致就能复用缓存。
  • restore-keys:当完全匹配的缓存不存在时,会尝试匹配前缀相同的缓存,进一步提升缓存命中率。

方法二:调整分支缓存访问策略(适用于保留setup-python内置缓存的场景)

如果你想继续使用setup-python的cache参数,可以通过自定义缓存依赖路径,确保缓存键基于依赖文件哈希而非分支信息:

some-step:
  name: 'Test step'
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v3
    - run: pipx install poetry
    - name: Set up Python 3.8
      uses: actions/setup-python@v4
      with:
        python-version: "3.8"
        architecture: "x64"
        cache: "poetry"
        # 指定依赖文件路径,确保缓存键基于依赖文件哈希
        cache-dependency-path: "**/{pyproject.toml,poetry.lock}"

这种方式会让setup-python生成的缓存键包含依赖文件的哈希,而非分支信息。同时GitHub Actions默认允许PR读取其基础分支(如main/master)的缓存,只要PR的依赖文件与基础分支一致,就能命中缓存。

注意:

如果你的PR基础分支不是主分支,手动配置缓存的方式灵活性更高,更推荐使用第一种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:16:35