- Notifications
You must be signed in to change notification settings - Fork368
Description
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 sincecypress-io/github-action
was originally developed when onlynpm andYarn 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 Modernnode-modules | yarn config get cacheFolder | ~/.yarn/berry/cache |
Yarn Modernpnp | 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 afull suite ofsetup-*
actions to cache dependencies of commonly-used package managers.
For Cypress, the relevant caching action isactions/setup-node which offers caching for npm, Yarn (v1 and Modern) and pnpm.
Duplicating the capability fromactions/setup-node intocypress-io/github-action
for pnpm and Yarn would involve a significant effort and on-going maintenance for the Cypress team.
Recommendations
- keepactions/setup-node for pnpm examples
- addactions/setup-node to Yarn Modern examplestest: add yarn modern caching #1374
- add an option to
cypress-io/github-action
to disable package manager caching, leaving the default as caching enabled (related toAllow disabling cache #953) - add any new package manager caching recommendations into theREADME document