From c07fbf672d39c7e6801dbcf5722075c74949e401 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 8 Feb 2023 18:26:50 +0000 Subject: [PATCH] ci: enable HTTP caching for Bazel on Windows This commit enables Bazel HTTP caching for Windows runs. Before: ``` bazel-e2e-cli-win: 22m 39s ``` After: ``` bazel-e2e-cli-win: 8m 32s ``` --- .circleci/{bazel.rc => bazel.common.rc} | 0 .circleci/bazel.linux.rc | 5 +++++ .circleci/bazel.windows.rc | 8 ++++++++ .circleci/dynamic_config.yml | 16 +++++++++++++--- 4 files changed, 26 insertions(+), 3 deletions(-) rename .circleci/{bazel.rc => bazel.common.rc} (100%) create mode 100644 .circleci/bazel.linux.rc create mode 100644 .circleci/bazel.windows.rc diff --git a/.circleci/bazel.rc b/.circleci/bazel.common.rc similarity index 100% rename from .circleci/bazel.rc rename to .circleci/bazel.common.rc diff --git a/.circleci/bazel.linux.rc b/.circleci/bazel.linux.rc new file mode 100644 index 0000000000..6a4d30ed44 --- /dev/null +++ b/.circleci/bazel.linux.rc @@ -0,0 +1,5 @@ +# Import config items common to both Linux and Windows setups. +# https://docs.bazel.build/versions/master/guide.html#bazelrc-syntax-and-semantics +import %workspace%/.circleci/bazel.common.rc + +build --config=remote diff --git a/.circleci/bazel.windows.rc b/.circleci/bazel.windows.rc new file mode 100644 index 0000000000..c9cba94c10 --- /dev/null +++ b/.circleci/bazel.windows.rc @@ -0,0 +1,8 @@ +# Import config items common to both Linux and Windows setups. +# https://docs.bazel.build/versions/master/guide.html#bazelrc-syntax-and-semantics +import %workspace%/.circleci/bazel.common.rc + +build --remote_cache=https://storage.googleapis.com/angular-cli-windows-bazel-cache +build --remote_accept_cached=true +build --remote_upload_local_results=true +build --google_default_credentials diff --git a/.circleci/dynamic_config.yml b/.circleci/dynamic_config.yml index 21fe18cc63..957ebe65d6 100644 --- a/.circleci/dynamic_config.yml +++ b/.circleci/dynamic_config.yml @@ -144,9 +144,19 @@ commands: type: env_var_name default: CIRCLE_PROJECT_REPONAME steps: - - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc + - run: + name: 'Copy Bazel RC' + shell: bash + command: | + # Conditionally, copy bazel configuration based on the current VM + # operating system running. We detect Windows by checking for `%AppData%`. + if [[ -n "${APPDATA}" ]]; then + cp "./.circleci/bazel.windows.rc" ".bazelrc.user"; + else + cp "./.circleci/bazel.linux.rc" ".bazelrc.user"; + fi - devinfra/setup-bazel-remote-exec: - bazelrc: ./.bazelrc.user + shell: bash install_python: steps: @@ -307,7 +317,6 @@ jobs: steps: - custom_attach_workspace - setup_bazel_rbe - - run: sudo cp .circleci/bazel.rc /etc/bazel.bazelrc - when: # The default nodeversion runs all *excluding* other versions condition: @@ -454,6 +463,7 @@ jobs: - checkout - rebase_pr_win - setup_windows + - setup_bazel_rbe - restore_cache: keys: - *cache_key_win