refactor(ci): cache all of submodules/deps to speed up build time #1731
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.
Description
I've been experimenting with how we use cache inour CI builds - we only cache the nim compiler binary, which leads to potentially unnecessary rebuilds of some libs and recursive submodule initialization on every build.
I believe I was able to get
vendor/
submodules caching properly, so that we can reuse all of the content without submodule init and rebuilds of deps.I've experimented with this in a fork of nwaku repo (https://github.com/nwaku-test-org/nwaku/blob/master/.github/workflows/test-cache.yml) and the change seemed to result in change of build time from 21-25 mins down to 13-17 mins.
Potential drawback is that previously when one submodule changed we'd still use cached nim compiler, but here it will trigger a compiler rebuild on the PR which is updating a dependency - hence longer builds on PR changing the deps, but those seem to be relatively rare, so hopefully the benefits outweight that.
Changes
vendor/
vendor/