Cache dependencies for CI jobs #4181
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds a simple cache of the
~/.cargo/registry
directory and Kani'starget
directory to reduce compilation times of our dependencies in CI. This also caches the~/.rustup
directory to avoid having to re-download toolchains and re-compile the standard library every CI run. Caches are shared between workflows that compile Kani in the same way (e.g. between thebenchcomp-tests
&perf
jobs since they both compile in release mode).Based on testing on my local fork, this change seems to make a minor, but not insignificant impact on runtimes. Although lost in the noise on longer jobs,
llbc-regression
&benchcomp-tests
got noticeably faster, as did the compiler benchmarking workflows which have to compile Kani for each commit they are comparing.Test runs:
General Kani CI workflow: before | after
Compiler bench workflow: before | after
Resolves #4153
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.