Closed rmillet-rs closed 1 month ago
This is alarming. There are very little inputs into the config hash.
The inputs are a subset of the fields in the config file that change the way a build works without changing the rule hash. These are:
1) Secrets passed in via the build env
2) The rejected licences
3) The language config i.e. Lang
under [BUILD]
, but this is mostly just some legacy left over from the old proto rules.
There's also build.nonce
that you can set to explicitly invalidate the cache.
You can find the code here.
If you're able to, can you share your .plzconfig
? Are you exposing a secret to the build that is changing between invocations?
Think I've spotted this one, I assume that you have multiple entries in [buildenv]
in your config? It seems that can incorrectly produce nondeterminism
I have effectively two variables in my [BuildEnv]
, and when I remove one of them, the issue doesn't appear anymore
@rmillet-rs FYI we've released Please v17.12.1 today with the fix for this issue
thank you !
Hello,
It seems that please detect changes when none visibly happened. For example, I build my app, it fetches go toolchain and build the whole thing. Then build the same app, it fetches again the toolchain (not always).
Way to reproduce:
Its seems to switch between the same two config hashes (
iX483CjwkDTCohF3canxchyXd+o
andiGq7eE29gHhGG7bDW9tj/lLR1Tc
).How is this hash calculated, so I can check if something messes around my env?
Tested with: