Use @action/cache to cache where possible
There are a few scenarios where we could take advantage of the newly published caching package:
- To download volta itself (though this should already be cached)
- To download a tool based on the provided explicit node/yarn version
- When using this action without manually specifying
node-versionoryarn-version. We should be able to cache based on thevoltakey inpackage.json, and avoid having to download node/volta/etc if nothing has changed. - When using a SemVer range matcher like
node-version: 12.x. This is a bit trickier than the prior scenario since it is not obvious how to comprise the cache key so that you do get a newer versions within your allowed range "periodically". Ideally we do not need to duplicate the logic in Volta itself for determining the node versions.
When using this action without manually specifying node-version or yarn-version. We should be able to cache based on the volta key in package.json, and avoid having to download node/volta/etc if nothing has changed.
Would be great to have this feature implemented
Was wondering if this request includes caching of yarn packages. That's something I was doing with the setup-node action but it seems to be missing here.
Not a huge problem but would be nice to see yarn/npm/pnpm package caching as well.
@just-Bri - Yes, I was thinking that would be included when we do this work...
@just-Bri - Yes, I was thinking that would be included when we do this work...
I figured as much but wanted to call it out directly to make sure. The issue doesn't specify caching of installed node packages, I was afraid it was referring to just Volta/node/npm/yarn/pnpm and not the packages installed installed via an npm i
Anyone mind mentoring me on implementing this feature? I use setup-node everywhere, but I wish it would consume my volta config.. would be nice to enable similar caching setup in this action && get my node and npm versions synced perfectly 😁
To confirm does this action at least cache the node version it downloads as per the README When it says optionanlly is that the default behavior and if not how do we toggle this option to yes (I don't see in the API docs).
Would really appreciate feature parity with setup-node and cache yarn/npm etc packages if possible.
cheers and thanks for the action so far!
you can use the pinned volta version from package.json with setup-node action
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version-file: 'package.json'
cache: 'yarn'
Or you can role your own with volta action and the cache action
Would really be nice if the action would just cache and restore the downloaded tools, since I ran into a situation multiple times now, where the Node Download timed out. It would not need to be downloaded again if it would be cached since the version does not change most of the time anyway.
Would really be nice if the action would just cache and restore the downloaded tools, since I ran into a situation multiple times now, where the Node Download timed out. It would not need to be downloaded again if it would be cached since the version does not change most of the time anyway.
you might just want a GH / NPM token to prevent timeouts @cgrabmann
- name: Setup node
uses: actions/setup-node@v3
with:
cache: 'yarn'
token: '${{ secrets.YOUR_GH_TOKEN }}'
node-version-file: 'package.json'