github-action icon indicating copy to clipboard operation
github-action copied to clipboard

Package manager caching strategy for pnpm and Yarn Modern

Open MikeMcC399 opened this issue 10 months ago • 1 comments

Situation

cypress-io/github-action caches package manager dependencies for:

and offers no equivalent built-in functionality for:

Background

The variety of package managers has expanded since cypress-io/github-action was originally developed when only npm and Yarn v1 Classic were available and in common use.

The action is set up to recognize the following lockfiles and use GitHub's @actions/cache to cache the related path:

Lockfile Linux path
package-lock.json ~/.npm
yarn.lock ~/.cache/yarn

The above set of path settings does not however cover all currently used package managers:

Package manager Command Linux default example
npm npm config get cache ~/.npm
pnpm v10 pnpm store path ~/.local/share/pnpm/store/v10
Yarn v1 yarn cache dir ~/.cache/yarn/v6
Yarn Modern node-modules yarn config get cacheFolder ~/.yarn/berry/cache
Yarn Modern pnp yarn config get cacheFolder ~/.yarn/berry/cache

This causes the action to attempt to cache unused paths:

  • ~/.npm (unused) for pnpm
  • ~/.cache/yarn (non-existent) for Yarn Modern

Assessment

GitHub Actions offers a full suite of setup-* actions to cache dependencies of commonly-used package managers.

For Cypress, the relevant caching action is actions/setup-node which offers caching for npm, Yarn (v1 and Modern) and pnpm.

Duplicating the capability from actions/setup-node into cypress-io/github-action for pnpm and Yarn would involve a significant effort and on-going maintenance for the Cypress team.

Recommendations

  • [X] keep actions/setup-node for pnpm examples
  • [x] add actions/setup-node to Yarn Modern examples #1374
  • [ ] add an option to cypress-io/github-action to disable package manager caching, leaving the default as caching enabled (related to https://github.com/cypress-io/github-action/issues/953)
  • [x] add any new package manager caching recommendations into the README document

Related

  • https://github.com/cypress-io/github-action/issues/953
  • https://github.com/cypress-io/github-action/issues/969
  • https://github.com/cypress-io/github-action/issues/1044

MikeMcC399 avatar Feb 22 '25 16:02 MikeMcC399

Update of Yarn Modern examples is delayed, pending resolution of:

  • https://github.com/actions/cache/issues/1541
  • https://github.com/actions/setup-node/issues/1233

MikeMcC399 avatar Feb 22 '25 16:02 MikeMcC399