在什么范围内 Github actions/cache 有效?
Within what limits Github actions/cache work?
不太明白Githubactions/cache的作用,我的意思是:
如果我发出拉取请求,然后在同一个拉取请求中再添加 1 个提交,缓存工作正常,但是如果我在同一个分支中创建一个新的拉取请求 - 缓存被重置并再次启动,但为什么?
有没有办法将文件缓存扩展到所有 yml
文件,以便每个拉取请求都使用现有缓存?
因为为了加快工作速度,开发人员总是需要将他们的工作集中在一个分支上,这听起来有点像废话。
信息
我的缓存key是这样构成的
- 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-
是的,GitHub 的缓存操作在分支间具有不直观的行为。拉取请求工作流不共享,标签工作流永远不会命中缓存。
Per the docs(有用的位加粗):
A workflow can access and restore a cache created in the current branch, the base branch (including base branches of forked repositories), or the default branch (usually main
). For example, a cache created on the default branch would be accessible from any pull request. Also, if the branch feature-b
has the base branch feature-a
, a workflow triggered on feature-b
would have access to caches created in the default branch (main
), feature-a
, and feature-b
.
因此解决方案是创建一个单独的工作流程,由推送到 main
触发 - 加上您喜欢的任何基本分支 - 只是为了保持新的缓存可用于拉取请求和标签。
不太明白Githubactions/cache的作用,我的意思是:
如果我发出拉取请求,然后在同一个拉取请求中再添加 1 个提交,缓存工作正常,但是如果我在同一个分支中创建一个新的拉取请求 - 缓存被重置并再次启动,但为什么?
有没有办法将文件缓存扩展到所有 yml
文件,以便每个拉取请求都使用现有缓存?
因为为了加快工作速度,开发人员总是需要将他们的工作集中在一个分支上,这听起来有点像废话。
信息
我的缓存key是这样构成的
- 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-
是的,GitHub 的缓存操作在分支间具有不直观的行为。拉取请求工作流不共享,标签工作流永远不会命中缓存。
Per the docs(有用的位加粗):
A workflow can access and restore a cache created in the current branch, the base branch (including base branches of forked repositories), or the default branch (usually
main
). For example, a cache created on the default branch would be accessible from any pull request. Also, if the branchfeature-b
has the base branchfeature-a
, a workflow triggered onfeature-b
would have access to caches created in the default branch (main
),feature-a
, andfeature-b
.
因此解决方案是创建一个单独的工作流程,由推送到 main
触发 - 加上您喜欢的任何基本分支 - 只是为了保持新的缓存可用于拉取请求和标签。