-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add configuration cache support #351
Conversation
Reading all the environment variables at configuration time leads to marking each of them as configuration cache input, so Gradle will detect value changes and invalidate cache on any irrelevant variable value change avast#307
4dc8721
to
8c83164
Compare
@augi , would you be so kind to review this PR? |
Hello, yes, hopefully later this week 🙏 |
Hello, thank you very much, really appreciated! 👍 The number of changes is enourmous so I'm little bit afraid of merging and releasing it (but the tests are green 🎉). So at least I will release it locally and will test it on few projects 🤞 Feel free to tweak this PR during this week because I will have time to play with it no earlier than the next week 🙏 |
I'm worried that previously if we had |
@augi , hello! Any chances you've had an opportunity to review/test it locally? We just thought it's better to provide a PR to the mainstream and do not create a local fork :) |
Sorry for the delay. I've just tested it locally on few projects and it works correctly 🎉 |
@augi I'm getting this error with
I'm on Gradle 7.4.2 using the kotlin DSL. |
It looks like a bug. I will try to fix it ASAP and release a new version. Sorry for the inconvenience 🙏 |
I'm not able to reproduce the error but IMHO there could be two reasons to fail on this line:
Check this commit that will be included in |
Thanks for the amazingly quick bugfix! 0.16.1 works for us :) |
@augi Guess I spoke too soon :) How about this error, also related? Breaks in 0.16.1, works in 0.15.2:
|
Hopefully, @ALikhachev is able to respond but I don't see any obvious problem in the code :( The |
OK, probably got it, the fix is here. It looks like in your case all the attempts to |
@augi Yup, that fixed it. Thanks again! :) |
I think I came across this worry today, when bumping from version In our projects, we use a custom gradle build plugin, which applies several other plugins including docker-compose. Long story short, we need a
gradle task order with 0.15.2
gradle task order with 0.16.4
Which means that The fix is easy for me - let Cheers |
https://docs.gradle.org/current/userguide/configuration_cache.html
Mostly the PR is about more fine-grained property references. Cross-task references are reworked into task dependencies.
ServiceInfoCache
andComposeExecutor
are reworked into build services. There may be instantiated too many build services with the current implementation, but it's still a good starter for later optimizations. I guessDockerExecutor
should be reworked in some way too, at least it would be great to remove back-reference toComposeSettings
I'm open to any feedback. I'm not very familiar with the plugin, so some changes may be considered as not efficient or incorrect.
composeBuild
manual execution is added to many of tests because it's impossible now to execute task and it's dependencies just like it was a regular Gradle build. Test infrastructure changes (moving to Gradle TestKit) are needed for creating more tests, including configuration cache tests, but that should be the point of another issue/MR, and I can't invest into it now.Fixes #307