23595272fe
Instead of downloading Yarn separately for Bazel, we could use our existing copy of Yarn that we maintain for CI jobs that do not use Bazel. This ensures we use consistent versions of Yarn across our CI jobs, and also avoids unnecessary downloads to the Bazel mirror server, or Yarn download servers. PR Close #34472
120 lines
4.9 KiB
Python
120 lines
4.9 KiB
Python
workspace(
|
|
name = "angular",
|
|
managed_directories = {"@npm": ["node_modules"]},
|
|
)
|
|
|
|
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
|
|
|
# Fetch rules_nodejs so we can install our npm dependencies
|
|
http_archive(
|
|
name = "build_bazel_rules_nodejs",
|
|
sha256 = "16fc00ab0d1e538e88f084272316c0693a2e9007d64f45529b82f6230aedb073",
|
|
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.42.2/rules_nodejs-0.42.2.tar.gz"],
|
|
)
|
|
|
|
# Check the bazel version and download npm dependencies
|
|
load("@build_bazel_rules_nodejs//:index.bzl", "check_bazel_version", "check_rules_nodejs_version", "node_repositories", "yarn_install")
|
|
|
|
# Bazel version must be at least the following version because:
|
|
# - 0.26.0 managed_directories feature added which is required for nodejs rules 0.30.0
|
|
# - 0.27.0 has a fix for managed_directories after `rm -rf node_modules`
|
|
check_bazel_version(
|
|
message = """
|
|
You no longer need to install Bazel on your machine.
|
|
Angular has a dependency on the @bazel/bazel package which supplies it.
|
|
Try running `yarn bazel` instead.
|
|
(If you did run that, check that you've got a fresh `yarn install`)
|
|
|
|
""",
|
|
minimum_bazel_version = "1.1.0",
|
|
)
|
|
|
|
check_rules_nodejs_version(minimum_version_string = "0.42.1")
|
|
|
|
# Setup the Node.js toolchain
|
|
node_repositories(
|
|
node_repositories = {
|
|
"10.16.0-darwin_amd64": ("node-v10.16.0-darwin-x64.tar.gz", "node-v10.16.0-darwin-x64", "6c009df1b724026d84ae9a838c5b382662e30f6c5563a0995532f2bece39fa9c"),
|
|
"10.16.0-linux_amd64": ("node-v10.16.0-linux-x64.tar.xz", "node-v10.16.0-linux-x64", "1827f5b99084740234de0c506f4dd2202a696ed60f76059696747c34339b9d48"),
|
|
"10.16.0-windows_amd64": ("node-v10.16.0-win-x64.zip", "node-v10.16.0-win-x64", "aa22cb357f0fb54ccbc06b19b60e37eefea5d7dd9940912675d3ed988bf9a059"),
|
|
},
|
|
node_version = "10.16.0",
|
|
package_json = ["//:package.json"],
|
|
# Label needs to explicitly specify the current workspace name because otherwise Bazel does
|
|
# not provide all needed data (like "workspace_root") to the repository context.
|
|
vendored_yarn = "@angular//:third_party/github.com/yarnpkg/yarn/releases/download/v1.21.1",
|
|
)
|
|
|
|
yarn_install(
|
|
name = "npm",
|
|
package_json = "//:package.json",
|
|
yarn_lock = "//:yarn.lock",
|
|
)
|
|
|
|
# Install all bazel dependencies of the @npm npm packages
|
|
load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies")
|
|
|
|
install_bazel_dependencies()
|
|
|
|
# Load angular dependencies
|
|
load("//packages/bazel:package.bzl", "rules_angular_dev_dependencies")
|
|
|
|
rules_angular_dev_dependencies()
|
|
|
|
# Load protractor dependencies
|
|
load("@npm_bazel_protractor//:package.bzl", "npm_bazel_protractor_dependencies")
|
|
|
|
npm_bazel_protractor_dependencies()
|
|
|
|
# Load karma dependencies
|
|
load("@npm_bazel_karma//:package.bzl", "npm_bazel_karma_dependencies")
|
|
|
|
npm_bazel_karma_dependencies()
|
|
|
|
# Setup the rules_webtesting toolchain
|
|
load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories")
|
|
|
|
web_test_repositories()
|
|
|
|
load("//tools/browsers:browser_repositories.bzl", "browser_repositories")
|
|
|
|
browser_repositories()
|
|
|
|
# Setup the rules_typescript tooolchain
|
|
load("@npm_bazel_typescript//:index.bzl", "ts_setup_workspace")
|
|
|
|
ts_setup_workspace()
|
|
|
|
# Setup the rules_sass toolchain
|
|
load("@io_bazel_rules_sass//sass:sass_repositories.bzl", "sass_repositories")
|
|
|
|
sass_repositories()
|
|
|
|
# Setup the skydoc toolchain
|
|
load("@io_bazel_skydoc//skylark:skylark.bzl", "skydoc_repositories")
|
|
|
|
skydoc_repositories()
|
|
|
|
load("@bazel_toolchains//rules:environments.bzl", "clang_env")
|
|
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
|
|
|
|
rbe_autoconfig(
|
|
name = "rbe_ubuntu1604_angular",
|
|
# Need to specify a base container digest in order to ensure that we can use the checked-in
|
|
# platform configurations for the "ubuntu16_04" image. Otherwise the autoconfig rule would
|
|
# need to pull the image and run it in order determine the toolchain configuration. See:
|
|
# https://github.com/bazelbuild/bazel-toolchains/blob/1.1.2/configs/ubuntu16_04_clang/versions.bzl
|
|
base_container_digest = "sha256:1ab40405810effefa0b2f45824d6d608634ccddbf06366760c341ef6fbead011",
|
|
# Note that if you change the `digest`, you might also need to update the
|
|
# `base_container_digest` to make sure marketplace.gcr.io/google/rbe-ubuntu16-04-webtest:<digest>
|
|
# and marketplace.gcr.io/google/rbe-ubuntu16-04:<base_container_digest> have
|
|
# the same Clang and JDK installed. Clang is needed because of the dependency on
|
|
# @com_google_protobuf. Java is needed for the Bazel's test executor Java tool.
|
|
digest = "sha256:0b8fa87db4b8e5366717a7164342a029d1348d2feea7ecc4b18c780bc2507059",
|
|
env = clang_env(),
|
|
registry = "marketplace.gcr.io",
|
|
# We can't use the default "ubuntu16_04" RBE image provided by the autoconfig because we need
|
|
# a specific Linux kernel that comes with "libx11" in order to run headless browser tests.
|
|
repository = "google/rbe-ubuntu16-04-webtest",
|
|
)
|