incompatible_remote_build_event_upload_respect_no_cache
Background
If remote cache is enabled, Bazel will upload blobs referenced in the BEP to remote cache and replace the file path in the BEP with URI pointing to the remote CAS so that consumers of BEP can find the blobs.
Problem
In some cases, we don't want to upload some blobs to remote cache by using tags (e.g. no-remote-cache-upload) or flags (e.g. --remote_upload_local_results=false). But the BEP file uploader ignores those flags and always upload blobs referenced in the BEP to remote cache even if the generating actions cannot be cached.
--incompatible_remote_build_event_upload_respect_no_cache was introduced by #14338 to fix this problem so that if the generating actions cannot be cached, their outputs won't be uploaded to remote cache by BEP.
Migration
If you don't use remote cache nor BEP, no migration is needed.
If you use tags or flags to prevent outputs being uploaded to remote cache, after the flag --incompatible_remote_build_event_upload_respect_no_cache is flipped, those blobs will not be uploaded to remote cache by BEP.
Expected timeline
We expect to flip --incompatible_remote_build_event_upload_respect_no_cache to true and remove it in Bazel 6.0.
@coeuvre Should we flip this flag now? https://buildkite.com/bazel/bazelisk-plus-incompatible-flags/builds/1253 says it won't break any downstream projects (ignore the rules_nodejs ones)
I am not confident enough to flip this flag for 6.0, especially considering there are some edge cases this flag cannot solve (#16151). I might work in another direction to solve the problem which could allow us to remove this flag. I'm not clear ATM.
This was deprecated in 6.0. @coeuvre I'm going to make a PR that makes it a no-op for 7.0, so it can be fully removed in 8.0, okay?
SGTM. Thanks!
https://github.com/bazelbuild/bazel/pull/17989
Already flipped. Closing.