# Copyright 2016 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Remote execution and optional BuildBuddy reporting/cache profiles.

# Depending on how many machines are in the remote execution instance, setting
# this higher can make builds faster by allowing more jobs to run in parallel.
# Setting it too high can result in jobs that timeout, however, while waiting
# for a remote machine to execute them.
common:remote_shared --jobs=200
common:remote_shared --disk_cache=
common:remote_shared --remote_download_minimal

# Select after the remote profile when requested outputs are needed locally.
common:remote_toplevel --remote_download_outputs=toplevel

# Set several flags related to specifying the platform, toolchain and java
# properties.
common:remote_shared --extra_execution_platforms=//tools/remote:platform
common:remote_shared --host_platform=//tools/remote:platform
common:remote_shared --platforms=//tools/remote:platform

# Set various strategies so that all actions execute remotely. Mixing remote
# and local execution will lead to errors unless the toolchain and remote
# machine exactly match the host machine.
common:remote_shared --define=EXECUTOR=remote

# Set a higher timeout value, just in case.
common:remote_shared --remote_timeout=3600

# Configuration flags for remote settings in Google GCP RBE
# Enable the remote cache so action results can be shared across machines,
# developers, and workspaces.
common:config_gcp --remote_cache=remotebuildexecution.googleapis.com

# Enable remote execution so actions are performed on the remote systems.
common:config_gcp --remote_executor=remotebuildexecution.googleapis.com

# Enable authentication. This will pick up application default credentials by
# default. You can use --auth_credentials=some_file.json to use a service
# account credential instead.
common:config_gcp --google_default_credentials
common:config_gcp --config=remote_shared

# Also available without BuildBuddy via --config=diagnostics.
# Override both paths for concurrent invocations.
common:diagnostics --execution_log_compact_file=bazel-execution.log
common:diagnostics --profile=bazel-profile.json.gz
# Preserve action details for investigations, at the cost of larger profiles.
common:diagnostics --experimental_profile_include_target_label
common:diagnostics --experimental_profile_include_primary_output
common:diagnostics --noslim_profile

# Reporting only: retain local execution, platforms, PATH and disk cache.
build:reporting_bb --bes_results_url=https://app.buildbuddy.io/invocation/
build:reporting_bb --bes_backend=grpcs://remote.buildbuddy.io
# Capture execution and timing details for BuildBuddy invocations.
build:reporting_bb --config=diagnostics

# These commands inherit build options but should not publish invocations.
run:reporting_bb --bes_backend=
run:reporting_bb --bes_results_url=
aquery:reporting_bb --bes_backend=
aquery:reporting_bb --bes_results_url=
cquery:reporting_bb --bes_backend=
cquery:reporting_bb --bes_results_url=
# Plain query does not inherit the build-scoped BES options above.

# Cache plus reporting: cache misses still execute locally.
common:cache_bb --config=reporting_bb
common:cache_bb --remote_cache=grpcs://remote.buildbuddy.io
common:cache_bb --remote_upload_local_results
# BuildBuddy advertises zstd support for cache uploads and downloads.
common:cache_bb --remote_cache_compression
# Deduplicate large cache blobs with content-defined upload/download chunks.
common:cache_bb --experimental_remote_cache_chunking

# Preserve config_bb and the remote*_bb public aliases.
common:config_bb --config=remote_shared
common:config_bb --config=cache_bb
common:config_bb --remote_executor=grpcs://remote.buildbuddy.io
