Helix-Machines deployment parameter hash is insufficient
During deployments, we calculate a hash of deployment parameters which we use to determine whether anything has changed in an image definition (definitions/shared/*). That code piece appears to have decayed a bit and not been kept up to date as the schema for our definitions is modified. We should either take a pass and update the code, or refactor it to automatedly determine / compare parameter values.
Deployment parameter hash function: https://dev.azure.com/dnceng/internal/_git/dotnet-helix-machines?path=/src/DeployQueues/QueueManager.cs&version=GCa27e0dbf09977a1b51b56ae775aabf1d272ea5a0&line=873&lineEnd=903&lineStartColumn=1&lineEndColumn=1&lineStyle=plain&_a=contents
Related issue: https://github.com/dotnet/dnceng/issues/4156
Release Note Category
- [ ] Feature changes/additions
- [ ] Bug fixes
- [ ] Internal Infrastructure Improvements
Release Note Description
IIRC bits are missing from the hash b/c the returned information lacks the necessary information. do you have an example of something that is returned but is ignored in the hash calculation❓
this remains an interesting problem w/ a few dimensions. for the hashes used when deciding whether to update scale set templates, might be best to hash the template we'll upload and tag the scale set w/ the information
for the existing hashes on our images, I'm not sure what to do since we need to have something that filters the definitions YAML to pick up what we need (an allow list like we have now but w/ fewer properties ignored) or filter out what we don't need (bit ugly since that would require a lot of reflection). I lean toward improving what we have today and putting more process weight behind it
/cc @riarenas
@epananth @wfurt add to Machine Management work please.