bazel
bazel copied to clipboard
provide a means of comparing local vs. remote execution outputs, and failing on mismatch
Description of the feature request:
We are interested in verifying that local and remote builds produce identical artifacts. Perhaps this could be done as a bazel configuration or remote execution option? We're aware there exists an option to race local vs. remote execution results, taking the first success as the winner. Could that be modified as a new option that waits for both local and remote execution to complete, and then compare all outputs, and fail on mismatch?
Which category does this issue belong to?
Remote Execution
What underlying problem are you trying to solve with this feature?
We want to eliminate all build output differences between local and remote execution, for the sake of caching, build-verification, debug artifact reusability. For example, we found that the default set of clang compile options can leak absolute paths in debug info, which is undesirable.
Which operating system are you running Bazel on?
various
What is the output of bazel info release?
release 7.2.1
If bazel info release returns development version or (@non-git), tell us how you built Bazel.
No response
What's the output of git remote get-url origin; git rev-parse HEAD ?
No response
Have you found anything relevant by searching the web?
No response
Any other information, logs, or outputs that you want to share?
No response
In such a proposed mode of operation, it should be understood that --remote_output_download=all is needed so that remote and local outputs of intermediate build steps can be compared.
Would it help to capture execution logs for local and remote builds and compare them? (See https://bazel.build/remote/cache-remote#caching-across-machines)