-
Notifications
You must be signed in to change notification settings - Fork 6.8k
/
.bazelrc
135 lines (107 loc) · 5.68 KB
/
.bazelrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
###############################
# Filesystem interactions #
###############################
# Don't create bazel-* symlinks in the WORKSPACE directory.
# These require .gitignore and may scare users. Also, it's a workaround for
# https://github.com/bazelbuild/rules_typescript/issues/12 which affects the common case of
# having `tsconfig.json` in the WORKSPACE directory. Instead, you should run
# `bazel info output_base` to find out where the outputs went.
build --symlink_prefix=/
# Performance: avoid stat'ing input files
build --watchfs
# Turn off legacy external runfiles
build --nolegacy_external_runfiles
run --nolegacy_external_runfiles
test --nolegacy_external_runfiles
# This flag is needed to so that the bazel cache is not invalidated
# when running bazel via `yarn bazel`.
build --incompatible_strict_action_env
# Do not build runfile forests by default. If an execution strategy relies on runfile
# forests, the forest is created on-demand. See: https://github.com/bazelbuild/bazel/issues/6627
# and https://github.com/bazelbuild/bazel/commit/03246077f948f2790a83520e7dccc2625650e6df
build --nobuild_runfile_links
###############################
# Output control #
###############################
# A more useful default output mode for bazel query
# Prints eg. "ng_module rule //foo:bar" rather than just "//foo:bar"
query --output=label_kind
# By default, failing tests don't print any output, it goes to the log file
test --test_output=errors
####################################
# Stamping configurations. #
# Run with "--config=release" or #
# "--config=snapshot-build". #
####################################
# Configures script to do version stamping.
# See https://docs.bazel.build/versions/master/user-manual.html#flag--workspace_status_command
build:release --workspace_status_command="yarn -s ng-dev:stamp --mode=release"
build:release --stamp
build:snapshot-build --workspace_status_command="yarn -s ng-dev:stamp --mode=snapshot"
build:snapshot-build --stamp
####################################
# Bazel custom flags #
####################################
build --flag_alias=partial_compilation=@npm//@angular/bazel/src:partial_compilation
##################################
# Always enable Ivy compilation #
##################################
build --define=angular_ivy_enabled=True
################################
# Remote Execution Setup #
################################
# Use the Angular team internal GCP instance for remote execution.
build:remote --remote_instance_name=projects/internal-200822/instances/primary_instance
# Needed due to: https://github.com/bazelbuild/bazel/issues/7254
build:remote --define=EXECUTOR=remote
# Since remote builds run within Google Cloud `k8`-based containers, we set the
# host and target CPU accordingly.
build:remote --cpu=k8
build:remote --host_cpu=k8
# Bazel detects maximum number of jobs based on host resources.
# Since we run remotely, we can increase this number significantly.
common:remote --jobs=200
# Setup the remote build execution servers.
build:remote --remote_cache=remotebuildexecution.googleapis.com
build:remote --remote_executor=remotebuildexecution.googleapis.com
build:remote --google_default_credentials=true
# Setup the toolchain and platform for the remote build execution. The platform
# is provided by the shared dev-infra package and targets k8 remote containers.
build:remote --crosstool_top=@npm//@angular/build-tooling/bazel/remote-execution/cpp:cc_toolchain_suite
build:remote --extra_toolchains=@npm//@angular/build-tooling/bazel/remote-execution/cpp:cc_toolchain
build:remote --extra_execution_platforms=@npm//@angular/build-tooling/bazel/remote-execution:platform_with_network
build:remote --host_platform=@npm//@angular/build-tooling/bazel/remote-execution:platform_with_network
build:remote --platforms=@npm//@angular/build-tooling/bazel/remote-execution:platform_with_network
################################
# Sandbox settings #
################################
# By default, network access should be disabled unless explicitly granted for certain targets
# using the `requires-network` tag. https://docs.bazel.build/versions/main/be/common-definitions.html
build --sandbox_default_allow_network=false
test --sandbox_default_allow_network=false
################################
# --config=build-results #
################################
# Sets up Build Event Service if the `builds-results` configuration is used. We
# do not upload build results by default as this makes us reliant on external servers
# that could cause builds to fail unnecessarily. If desired, build result uploading
# can be manually uploaded, but given that the build event service server has been
# less stable than the remote executors, we do not want to degrade CI stability.
build:build-results --bes_instance_name=internal-200822
build:build-results --bes_backend=buildeventservice.googleapis.com
build:build-results --bes_timeout=60s
build:build-results --bes_results_url="https://source.cloud.google.com/results/invocations/"
# Set remote caching settings
build:remote --remote_accept_cached=true
################################
# --config=debug #
################################
# Enable debugging tests with --config=debug
test:debug --test_arg=--node_options=--inspect-brk --test_output=streamed --test_strategy=exclusive --test_timeout=9999 --nocache_test_results
################################
# Local Environment Setup #
# Needs to be last statement #
################################
# Load any settings which are specific to the current user. Needs to be *last* statement
# in this config, as the user configuration should be able to overwrite flags from this file.
try-import .bazelrc.user