Github 操作/缓存工作的限制在什么范围内?

UKR*_*man 10 github github-actions github-actions-runners

我不太明白 Github actions/cache 的工作范围,我的意思是:

如果我发出拉取请求,然后在同一个拉取请求中添加 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-
Run Code Online (Sandbox Code Playgroud)

Jus*_*son 17

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

\n

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

\n
\n

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

\n
\n

因此,解决方案是通过推送到main\xc2\xa0\xe2\x80\x94 以及您喜欢的任何基本分支 \xe2\x80\x94 触发一个单独的工作流程,只是为了保留可用于拉取请求和标记的新缓存。

\n

  • 弓。您在管道和 github 操作方面为我节省了大量时间,谢谢! (2认同)