4

我不太了解 Github操作/缓存的工作程度,我的意思是:

如果我发出拉取请求,然后在同一个拉取请求中添加 1 个更多提交,缓存工作正常,但如果我在同一个分支中创建一个新的拉取请求 - 缓存被重置并重新开始,但为什么呢?

有没有办法将文件缓存扩展到所有yml文件,以便每个拉取请求都使用现有的缓存?

因为为了加快工作速度,事实证明——开发人员总是需要将他们的工作集中到一个分支中,这听起来有点胡说八道。

信息

我的缓存密钥形成如下

- uses: actions/cache@v2
  id: composer-cache
  with:
     path: .github/docker/development/php-cli/composer/cache
     key: ${{ runner.os }}-develop-composer-${{ hashFiles('src/composer.lock') }}
     restore-keys: |
        ${{ runner.os }}-develop-composer-
4

1 回答 1

6

是的,GitHub 的缓存操作跨分支的行为不直观。拉取请求工作流不共享,标签工作流永远不会获得缓存命中。

根据文档(有用的部分加粗):

工作流可以访问和恢复在当前分支、基础分支(包括分叉存储库的基础分支)或默认分支(通常是main)中创建的缓存。例如,可以从任何拉取请求访问在默认分支上创建的缓存。此外,如果分支feature-b具有基础分支feature-a,则触发的工作流feature-b将有权访问在默认分支 ( main)、feature-a和中创建的缓存feature-b

因此,解决方案是创建一个由推送触发的单独工作流main ——加上你喜欢的任何基础分支——只是为了保持一个新的缓存可用于拉取请求和标签。

于 2021-03-15T03:44:38.703 回答