setup-node正在恢复缓存,但仍然需要一段时间才能纱线

Ada*_*dam 13 yarnpkg github-actions

因此setup-node github 操作使用以下配置缓存 node_modules:

      - uses: actions/setup-node@v2
        with:
          node-version: '14.15.5'
          cache: 'yarn'
Run Code Online (Sandbox Code Playgroud)

我可以看到它恢复了缓存。

/home/runner/.cache/yarn/v6
Received 0 of 138278798 (0.0%), 0.0 MBs/sec
Received 113246208 of 138278798 (81.9%), 53.4 MBs/sec
Received 138278798 of 138278798 (100.0%), 55.8 MBs/sec
Cache Size: ~132 MB (138278798 B)
/usr/bin/tar --use-compress-program zstd -d -xf /home/runner/work/_temp/b44b9064-7157-4afd-a342-f81e1005ef1d/cache.tzst -P -C /home/runner/work/app-frontend/app-frontend
Cache restored successfully
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时yarn --frozen-lockfile(我们总是提交我们的锁文件)

我看到这个输出:

Run yarn --frozen-lockfile
yarn install v1.22.17
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
...
Run Code Online (Sandbox Code Playgroud)

并且该步骤仍需要 44 秒。

我很困惑为什么会发生这种情况。

我像这样实现了自己的缓存:

      - name: Cache Modules
        uses: actions/cache@v2
        with:
          path: '**/node_modules'
          key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
Run Code Online (Sandbox Code Playgroud)

现在,当我运行该步骤时yarn --frozen-lockfile,该步骤将在 3 秒内完成并输出:

Run yarn --frozen-lockfile
yarn install v1.22.17
[1/4] Resolving packages...
success Already up-to-date.
Done in 1.21s.
Run Code Online (Sandbox Code Playgroud)

我很困惑这是为什么。显然我误解了某些东西(纱线,设置节点缓存,其他东西?)的工作方式。

目标是尽可能快地构建(当然,同时是正确的)。任何人都可以帮助我理解为什么 setup-node 正在恢复缓存,但纱线仍然在做 44 秒的工作?

Ada*_*dam 4

setup-node 的内置缓存将已安装的包放入所使用的包管理器(yarn 或 npm)的全局缓存中。这些包仍然需要解析并从全局缓存安装到本地工作目录,在我的例子中,这仍然需要 44 秒。

另一方面,我的缓存缓存了本地工作目录包,因此当我第二次运行它时,它们已经在本地安装和解析。