Using the cache is only effective when not using install as it will run
`pipenv --rm` if it detects an old environment. On top of that, pip is a
lot faster at detecting satisfied requirements.
Manually caching gems has many issues:
* Not working if there is no Gemfile.lock but only a Gemfile
* Not having the OS version in the key, which might cause binary incompatibility with system libraries of different ABI version.
* Not taking the Ruby version in account.
* Not taking the Ruby ABI version of development builds into accounts, which cannot be done with a key, but needs the commit hash.
* Using restore-keys would grow the cache over time and have extra gems in the cache.
* Those reasons are summarized in https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby#caching-bundle-install-manually
* Allow for multiple line-delimited paths to cache
* Add initial minimatch support
* Use @actions/glob for pattern matching
* Cache multiple entries using --files-from tar input
remove known failing test
Quote tar paths
Add salt to test cache
Try reading input files from manifest
bump salt
Run test on macos
more testing
Run caching tests on 3 platforms
Run tests on self-hosted
Apparently cant reference hosted runners by name
Bump salt
wait for some time after save
more timing out
smarter waiting
Cache in tmp dir that won't be deleted
Use child_process instead of actions/exec
Revert tempDir hack
bump salt
more logging
More console logging
Use filepath to with cacheHttpClient
Test cache restoration
Revert temp dir hack
debug logging
clean up cache.yml testing
Bump salt
change debug output
build actions
* unit test coverage for caching multiple dirs
* Ensure there's a locateable test folder at homedir
* Clean up code
* Version cache with all inputs
* Unit test getCacheVersion
* Include keys in getCacheEntry request
* Clean import orders
* Use fs promises in actionUtils tests
* Update import order for to fix linter errors
* Fix remaining linter error
* Remove platform-specific test code
* Add lerna example for caching multiple dirs
* Lerna example updated to v2
Co-Authored-By: Josh Gross <joshmgross@github.com>
Co-authored-by: Josh Gross <joshmgross@github.com>
Tested this with my own repo which uses a mix of `build.gradle` and `build.gradle.kts` files and this glob seems to be working correctly.
As an aside, please checkout #215 as it would make the process of verifying these globs easier!
* Adding examples for esy as a workflow for OCaml files
* track v1 instead of v1.1.2
Co-Authored-By: Josh Gross <joshmgross@github.com>
* add link in the readme for ocaml-esy
* ocaml -> ocaml/reason
* link in readme says ocaml/reason
Co-authored-by: Josh Gross <joshmgross@github.com>
* Use different IDs for 1) getting the directory of yarn cache 2) the cache itself
Using the current example + https://github.com/actions/cache#skipping-steps-based-on-cache-hit,
I came to a wrong conclusion that I could skip a step
if the `cache-hit` was `true` -
the ID I used was from the wrong step -
the `get yarn cache directory` step,
instead of the `get yarn cache itself` step.
I've updated the example in hopes that it'll be clearer for others aswell!
Signed-off-by: Kipras Melnikovas <kipras@kipras.org>
* Explain which ID to use for `cache-hit` in yarn's example
Signed-off-by: Kipras Melnikovas <kipras@kipras.org>