# Create symlinks in the project: # - dist/bin for outputs # - dist/testlogs, dist/genfiles # - bazel-out # NB: bazel-out should be excluded from the editor configuration. # The checked-in /.vscode/settings.json does this for VSCode. # Other editors may require manual config to ignore this directory. # In the past, we say a problem where VSCode traversed a massive tree, opening file handles and # eventually a surprising failure with auto-discovery of the C++ toolchain in # MacOS High Sierra. # See https://github.com/bazelbuild/bazel/issues/4603 build --symlink_prefix=dist/
# Turn off legacy external runfiles build --nolegacy_external_runfiles run --nolegacy_external_runfiles test --nolegacy_external_runfiles
# Turn on --incompatible_strict_action_env which was on by default # in Bazel 0.21.0 but turned off again in 0.22.0. Follow # https://github.com/bazelbuild/bazel/issues/7026 for more details. # This flag is needed to so that the bazel cache is not invalidated # when running bazel via `yarn bazel`. # See https://github.com/angular/angular/issues/27514. build --incompatible_strict_action_env run --incompatible_strict_action_env test --incompatible_strict_action_env
# Do not build runfile trees by default. If an execution strategy relies on runfile # symlink teee, the tree is created on-demand. See: https://github.com/bazelbuild/bazel/issues/6627 # and https://github.com/bazelbuild/bazel/commit/03246077f948f2790a83520e7dccc2625650e6df build --nobuild_runfile_links
build --enable_runfiles
############################### # Release support # # Turn on these settings with # # --config=release # ###############################
# Releases should always be stamped with version control info # This command assumes node on the path and is a workaround for # https://github.com/bazelbuild/bazel/issues/4802 build:release --workspace_status_command="yarn -s ng-dev release build-env-stamp --mode=release" build:release --stamp
# Building AIO against local Angular deps requires stamping # versions in Angular packages due to CLI version checks. build:aio_local_deps --stamp build:aio_local_deps --workspace_status_command="yarn -s --cwd aio local-workspace-status"
# Snapshots should also be stamped with version control information. build:snapshot-build --workspace_status_command="yarn -s ng-dev release build-env-stamp --mode=snapshot" build:snapshot-build --stamp
########################################################## # AIO architect build configuration # # See aio/angular.json for available configurations. # # To build with a partiular configuration: # # bazel build //aio:build --aio_build_config=<config> # # Default config is `stable``. # ########################################################## build --flag_alias=aio_build_config=//aio:flag_aio_build_config
#################################### # AIO first party dep substitution # # Turn on with # # --config=aio_local_deps # ####################################
# 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
################################ # Settings for CircleCI # ################################
# Bazel flags for CircleCI are in /.circleci/bazel.linux.rc and /.circleci/bazel.windows.rc
################################## # Remote Build Execution support # # Turn on these settings with # # --config=remote # ##################################
# The following --define=EXECUTOR=remote will be able to be removed # once https://github.com/bazelbuild/bazel/issues/7254 is fixed build:remote --define=EXECUTOR=remote
# Set a higher timeout value, just in case. build:remote --remote_timeout=600
# Bazel detects maximum number of jobs based on host resources. # Since we run remotely, we can increase this number significantly. common:remote --jobs=200
build:remote --google_default_credentials
# Limit the number of test jobs for on an AIO local deps build. The example tests running # concurrently pushes the circleci executor RAM usage to its limits. test:aio_local_deps --jobs=24
# Force remote exeuctions to consider the entire run as linux build:remote --cpu=k8 build:remote --host_cpu=k8
# Toolchain and platform related flags 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 build:remote --host_platform=@npm//@angular/build-tooling/bazel/remote-execution:platform build:remote --platforms=@npm//@angular/build-tooling/bazel/remote-execution:platform
# Ensure that tags like "no-remote-exec" get propagated to actions created by rules, # even if the rule implementation does not explicitly pass them to the execution requirements. # https://bazel.build/reference/command-line-reference#flag--experimental_allow_tags_propagation common --experimental_allow_tags_propagation
# Disable network access in the sandbox by default. To enable network access # for a particular target, use: # # load("@npm//@angular/build-tooling/bazel/remote-execution:index.bzl", "ENABLE_NETWORK") # my_target( # ..., # exec_properties = ENABLE_NETWORK, # Enables network in remote exec # tags = ["requires-network"] # Enables network in sandbox # ) build --nosandbox_default_allow_network
################################## # Saucelabs tests settings # # Turn on these settings with # # --config=saucelabs # ##################################
# For saucelabs tests we don't want to enable flaky test attempts. Karma has its own integrated # retry mechanism and we do not want to retry unnecessarily if Karma already tried multiple times. test:saucelabs --flaky_test_attempts=1
################ # Flag Aliases # ################
# --ng_perf will ask the Ivy compiler to produce performance results for each build. build --flag_alias=ng_perf=//packages/compiler-cli:ng_perf
#################################################### # User bazel configuration # NOTE: This needs to be the *last* entry in the config. ####################################################
# 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 %workspace%/.bazelrc.user
# Fetch Aspect lib for utilities like write_source_files # NOTE: We cannot move past version 1.23.2 of aspect_bazel_lib because it requires us to move to bazel 6.0.0 which # breaks our usage of managed_directories http_archive( name = "aspect_bazel_lib", sha256 = "4b2e774387bae6242879820086b7b738d49bf3d0659522ea5d9363be01a27582", strip_prefix = "bazel-lib-1.23.2", urls = [ "https://github.com/aspect-build/bazel-lib/archive/refs/tags/v1.23.2.tar.gz", "https://ghproxy.com/https://github.com/aspect-build/bazel-lib/archive/refs/tags/v1.23.2.tar.gz", ] )