Ada*_*son 5 caching github npm github-actions
我有一个工作流程,它缓存以下输出:
composer install使用哈希值composer.locknpm ci使用哈希值package-lock.jsonnpm run prod使用哈希值public/**/*因此它们可以在后续运行中重复使用。
问题是,只有 Composer 缓存被命中 - 两个 npm 缓存总是会在 CI 输出中产生一条消息,显示Cache not found for input keys.
以npm ci代码为例,缓存的设置以及后续的使用都是通过这两步完成的:
- name: Cache node packages
id: cache-npm-packages
uses: actions/cache@v2
env:
cache-name: cache-node-packages
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('package-lock.json') }}
- if: ${{ steps.cache-npm-packages.outputs.cache-hit != 'true' }}
run: npm ci
Run Code Online (Sandbox Code Playgroud)
但 CI 输出显示:
Cache not found for input keys: Linux-build-cache-node-packages-4370b0e1b9396b576e8db83e048ce2efe36557c8c4bae8492253ef706fc8a4bc
Run Code Online (Sandbox Code Playgroud)
尽管位于缓存条目列表中:
屏幕截图还显示 的缓存npm run prod正在重复生成且从未重用。
我究竟做错了什么?
小智 6
我遇到了同样的问题,问题是分支“A”只能检索“主”分支的缓存或者它是子分支。
正如您所看到的,所有缓存都是由拉取请求创建的ref/pull/foo/merge
由拉取请求存储的缓存只能在同一分支上重新运行时访问。
要解决您的问题,您应该在主分支中运行一次工作流程,以便任何其他操作都可以访问它。