42a164f522
Updates to rules_nodejs 2.2.0. This is the first major release in 7 months and includes a number of features as well as breaking changes. Release notes: https://github.com/bazelbuild/rules_nodejs/releases/tag/2.0.0 Features of note for angular/angular: * stdout/stderr/exit code capture; this could be potentially be useful * TypeScript (ts_project); a simpler tsc rule that ts_library that can be used in the repo where ts_library is too heavy weight Breaking changes of note for angular/angular: * loading custom rules from npm packages: `ts_library` is no longer loaded from `@npm_bazel_typescript//:index.bzl` (which no longer exists) but is now loaded from `@npm//@bazel/typescript:index.bzl` * with the loading changes above, `load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies")` is no longer needed in the WORKSPACE which also means that yarn_install does not need to run unless building/testing a target that depends on @npm. In angular/angular this is a minor improvement as almost everything depends on @npm. * @angular/bazel package is also updated in this PR to support the new load location; Angular + Bazel users that require it for ng_package (ng_module is no longer needed in OSS with Angular 10) will need to load from `@npm//@angular/bazel:index.bzl`. I investigated if it was possible to maintain backward compatability for the old load location `@npm_angular_bazel` but it is not since the package itself needs to be updated to load from `@npm//@bazel/typescript:index.bzl` instead of `@npm_bazel_typescript//:index.bzl` as it depends on ts_library internals for ng_module. * runfiles.resolve will now throw instead of returning undefined to match behavior of node require Other changes in angular/angular: * integration/bazel has been updated to use both ng_module and ts_libary with use_angular_plugin=true. The latter is the recommended way for rules_nodejs users to compile Angular 10 with Ivy. Bazel + Angular ViewEngine is supported with @angular/bazel <= 9.0.5 and Angular <= 8. There is still Angular ViewEngine example on rules_nodejs https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/angular_view_engine on these older versions but users that want to update to Angular 10 and are on Bazel must switch to Ivy and at that point ts_library with use_angular_plugin=true is more performant that ng_module. Angular example in rules_nodejs is configured this way as well: https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/angular. As an aside, we also have an example of building Angular 10 with architect() rule directly instead of using ts_library with angular plugin: https://github.com/bazelbuild/rules_nodejs/tree/stable/examples/angular_bazel_architect. NB: ng_module is still required for angular/angular repository as it still builds ViewEngine & @angular/bazel also provides the ng_package rule. ng_module can be removed in the future if ViewEngine is no longer needed in angular repo. * JSModuleInfo provider added to ng_module. this is for forward compat for future rules_nodejs versions. PR Close #39182
147 lines
6.2 KiB
Plaintext
147 lines
6.2 KiB
Plaintext
# 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
|
|
|
|
###############################
|
|
# Filesystem interactions #
|
|
###############################
|
|
|
|
# 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
|
|
|
|
###############################
|
|
# 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"
|
|
build:release --stamp
|
|
|
|
###############################
|
|
# Output #
|
|
###############################
|
|
|
|
# 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
|
|
|
|
##################################
|
|
# Settings for integration tests #
|
|
##################################
|
|
|
|
# Trick bazel into treating BUILD files under integration/bazel as being regular files
|
|
# This lets us glob() up all the files inside this integration test to make them inputs to tests
|
|
# (Note, we cannot use common --deleted_packages because the bazel version command doesn't support it)
|
|
build --deleted_packages=integration/bazel,integration/bazel/src,integration/bazel/src/hello-world,integration/bazel/test,integration/bazel/tools,integration/bazel/test/e2e
|
|
query --deleted_packages=integration/bazel,integration/bazel/src,integration/bazel/src/hello-world,integration/bazel/test,integration/bazel/tools,integration/bazel/test/e2e
|
|
|
|
################################
|
|
# Temporary Settings for Ivy #
|
|
################################
|
|
# To determine if the compiler used should be Ivy instead of ViewEngine, one can use `--config=ivy`
|
|
# on any bazel target. This is a temporary flag until codebase is permanently switched to Ivy.
|
|
build --define=angular_ivy_enabled=False
|
|
|
|
build:view-engine --define=angular_ivy_enabled=False
|
|
build:ivy --define=angular_ivy_enabled=True
|
|
|
|
##################################
|
|
# 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
|
|
|
|
# Increase the default number of jobs by 50% because our build has lots of
|
|
# parallelism
|
|
build:remote --jobs=150
|
|
build:remote --google_default_credentials
|
|
|
|
# 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 --host_javabase=@rbe_ubuntu1604_angular//java:jdk
|
|
build:remote --javabase=@rbe_ubuntu1604_angular//java:jdk
|
|
build:remote --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
|
|
build:remote --java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8
|
|
build:remote --crosstool_top=@rbe_ubuntu1604_angular//cc:toolchain
|
|
build:remote --extra_toolchains=@rbe_ubuntu1604_angular//config:cc-toolchain
|
|
build:remote --extra_execution_platforms=//tools:rbe_ubuntu1604-angular
|
|
build:remote --host_platform=//tools:rbe_ubuntu1604-angular
|
|
build:remote --platforms=//tools:rbe_ubuntu1604-angular
|
|
|
|
# Remote instance and caching
|
|
build:remote --remote_instance_name=projects/internal-200822/instances/default_instance
|
|
build:remote --project_id=internal-200822
|
|
build:remote --remote_cache=remotebuildexecution.googleapis.com
|
|
build:remote --remote_executor=remotebuildexecution.googleapis.com
|
|
|
|
##################################
|
|
# 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
|
|
|
|
####################################################
|
|
# 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 .bazelrc.user
|