From 45ec92c8ccc5f3870b3e048eb415b2c0c335aeda Mon Sep 17 00:00:00 2001 From: Richard Levasseur Date: Mon, 8 Jun 2026 06:48:02 +0000 Subject: [PATCH 01/10] build: configure secondary mirror fallback Currently, transient GitHub network issues can cause builds to fail when pulling platforms. To fix, configure Bazel's downloader to try GitHub first and fall back to mirror.bazel.build. --- .bazelrc | 2 ++ downloader_config.cfg | 6 ++++++ 2 files changed, 8 insertions(+) create mode 100644 downloader_config.cfg diff --git a/.bazelrc b/.bazelrc index 8fedcf1f8f..8f784e4c2b 100644 --- a/.bazelrc +++ b/.bazelrc @@ -44,6 +44,8 @@ common --enable_bzlmod # Local disk cache greatly speeds up builds if the regular cache is lost common --disk_cache=~/.cache/bazel/bazel-disk-cache +# Drop `experimental_` prefix once Bazel 7 is no longer supported +common --experimental_downloader_config=downloader_config.cfg # Additional config to use for readthedocs builds. diff --git a/downloader_config.cfg b/downloader_config.cfg new file mode 100644 index 0000000000..92adc2feb2 --- /dev/null +++ b/downloader_config.cfg @@ -0,0 +1,6 @@ +# The rewrite can be removed when https://github.com/bazelbuild/platforms/issues/139 is implemented +# Try GitHub first (primary) +rewrite github.com/bazelbuild/platforms/(.*) github.com/bazelbuild/platforms/$1 +# Fall back to mirror (secondary) +# Tracking upstream BCR mirror addition: https://github.com/bazelbuild/platforms/issues/139 +rewrite github.com/bazelbuild/platforms/(.*) mirror.bazel.build/github.com/bazelbuild/platforms/$1 From 2a21ddc3c26f430b48c510878fc9ec9bf3262352 Mon Sep 17 00:00:00 2001 From: Richard Levasseur Date: Mon, 8 Jun 2026 07:06:26 +0000 Subject: [PATCH 02/10] build: anchor regex and escape dots in downloader config --- downloader_config.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/downloader_config.cfg b/downloader_config.cfg index 92adc2feb2..4ad4b8afa0 100644 --- a/downloader_config.cfg +++ b/downloader_config.cfg @@ -1,6 +1,6 @@ # The rewrite can be removed when https://github.com/bazelbuild/platforms/issues/139 is implemented # Try GitHub first (primary) -rewrite github.com/bazelbuild/platforms/(.*) github.com/bazelbuild/platforms/$1 +rewrite ^github\.com/bazelbuild/platforms/(.*) github.com/bazelbuild/platforms/$1 # Fall back to mirror (secondary) # Tracking upstream BCR mirror addition: https://github.com/bazelbuild/platforms/issues/139 -rewrite github.com/bazelbuild/platforms/(.*) mirror.bazel.build/github.com/bazelbuild/platforms/$1 +rewrite ^github\.com/bazelbuild/platforms/(.*) mirror.bazel.build/github.com/bazelbuild/platforms/$1 From 41a72502e9ed4468d345e52d9d0f80fdd089f26c Mon Sep 17 00:00:00 2001 From: Richard Levasseur Date: Mon, 8 Jun 2026 07:17:01 +0000 Subject: [PATCH 03/10] build: remove redundant removal comment in downloader config --- downloader_config.cfg | 1 - 1 file changed, 1 deletion(-) diff --git a/downloader_config.cfg b/downloader_config.cfg index 4ad4b8afa0..46042cdfd9 100644 --- a/downloader_config.cfg +++ b/downloader_config.cfg @@ -1,4 +1,3 @@ -# The rewrite can be removed when https://github.com/bazelbuild/platforms/issues/139 is implemented # Try GitHub first (primary) rewrite ^github\.com/bazelbuild/platforms/(.*) github.com/bazelbuild/platforms/$1 # Fall back to mirror (secondary) From 49c9045764ef9f70a0df430903f89dd7bce5f04e Mon Sep 17 00:00:00 2001 From: Richard Levasseur Date: Mon, 8 Jun 2026 07:20:31 +0000 Subject: [PATCH 04/10] build: add rules_shell secondary mirror fallback --- downloader_config.cfg | 3 +++ 1 file changed, 3 insertions(+) diff --git a/downloader_config.cfg b/downloader_config.cfg index 46042cdfd9..78cf5295d7 100644 --- a/downloader_config.cfg +++ b/downloader_config.cfg @@ -1,5 +1,8 @@ # Try GitHub first (primary) rewrite ^github\.com/bazelbuild/platforms/(.*) github.com/bazelbuild/platforms/$1 +rewrite ^github\.com/bazelbuild/rules_shell/(.*) github.com/bazelbuild/rules_shell/$1 + # Fall back to mirror (secondary) # Tracking upstream BCR mirror addition: https://github.com/bazelbuild/platforms/issues/139 rewrite ^github\.com/bazelbuild/platforms/(.*) mirror.bazel.build/github.com/bazelbuild/platforms/$1 +rewrite ^github\.com/bazelbuild/rules_shell/(.*) mirror.bazel.build/github.com/bazelbuild/rules_shell/$1 From 09676333a5642d14c6787a94944df0e2bf519d76 Mon Sep 17 00:00:00 2001 From: Richard Levasseur Date: Mon, 8 Jun 2026 07:23:10 +0000 Subject: [PATCH 05/10] build: add bazel-skylib secondary mirror fallback --- downloader_config.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/downloader_config.cfg b/downloader_config.cfg index 78cf5295d7..143c4a50c7 100644 --- a/downloader_config.cfg +++ b/downloader_config.cfg @@ -1,8 +1,10 @@ # Try GitHub first (primary) +rewrite ^github\.com/bazelbuild/bazel-skylib/(.*) github.com/bazelbuild/bazel-skylib/$1 rewrite ^github\.com/bazelbuild/platforms/(.*) github.com/bazelbuild/platforms/$1 rewrite ^github\.com/bazelbuild/rules_shell/(.*) github.com/bazelbuild/rules_shell/$1 # Fall back to mirror (secondary) # Tracking upstream BCR mirror addition: https://github.com/bazelbuild/platforms/issues/139 +rewrite ^github\.com/bazelbuild/bazel-skylib/(.*) mirror.bazel.build/github.com/bazelbuild/bazel-skylib/$1 rewrite ^github\.com/bazelbuild/platforms/(.*) mirror.bazel.build/github.com/bazelbuild/platforms/$1 rewrite ^github\.com/bazelbuild/rules_shell/(.*) mirror.bazel.build/github.com/bazelbuild/rules_shell/$1 From 4c24fb1334832008a77e64e56996027a189929a7 Mon Sep 17 00:00:00 2001 From: Richard Levasseur Date: Mon, 8 Jun 2026 07:25:30 +0000 Subject: [PATCH 06/10] build: add rules_go secondary mirror fallback --- downloader_config.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/downloader_config.cfg b/downloader_config.cfg index 143c4a50c7..cced8105e0 100644 --- a/downloader_config.cfg +++ b/downloader_config.cfg @@ -1,10 +1,12 @@ # Try GitHub first (primary) +rewrite ^github\.com/bazel-contrib/rules_go/(.*) github.com/bazel-contrib/rules_go/$1 rewrite ^github\.com/bazelbuild/bazel-skylib/(.*) github.com/bazelbuild/bazel-skylib/$1 rewrite ^github\.com/bazelbuild/platforms/(.*) github.com/bazelbuild/platforms/$1 rewrite ^github\.com/bazelbuild/rules_shell/(.*) github.com/bazelbuild/rules_shell/$1 # Fall back to mirror (secondary) # Tracking upstream BCR mirror addition: https://github.com/bazelbuild/platforms/issues/139 +rewrite ^github\.com/bazel-contrib/rules_go/(.*) mirror.bazel.build/github.com/bazel-contrib/rules_go/$1 rewrite ^github\.com/bazelbuild/bazel-skylib/(.*) mirror.bazel.build/github.com/bazelbuild/bazel-skylib/$1 rewrite ^github\.com/bazelbuild/platforms/(.*) mirror.bazel.build/github.com/bazelbuild/platforms/$1 rewrite ^github\.com/bazelbuild/rules_shell/(.*) mirror.bazel.build/github.com/bazelbuild/rules_shell/$1 From 883454c5d1f8ad014cacd54ca54accaa23d3574f Mon Sep 17 00:00:00 2001 From: Richard Levasseur Date: Mon, 8 Jun 2026 07:32:34 +0000 Subject: [PATCH 07/10] build: add rules_kotlin secondary mirror fallback --- downloader_config.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/downloader_config.cfg b/downloader_config.cfg index cced8105e0..649c0feec2 100644 --- a/downloader_config.cfg +++ b/downloader_config.cfg @@ -2,6 +2,7 @@ rewrite ^github\.com/bazel-contrib/rules_go/(.*) github.com/bazel-contrib/rules_go/$1 rewrite ^github\.com/bazelbuild/bazel-skylib/(.*) github.com/bazelbuild/bazel-skylib/$1 rewrite ^github\.com/bazelbuild/platforms/(.*) github.com/bazelbuild/platforms/$1 +rewrite ^github\.com/bazelbuild/rules_kotlin/(.*) github.com/bazelbuild/rules_kotlin/$1 rewrite ^github\.com/bazelbuild/rules_shell/(.*) github.com/bazelbuild/rules_shell/$1 # Fall back to mirror (secondary) @@ -9,4 +10,5 @@ rewrite ^github\.com/bazelbuild/rules_shell/(.*) github.com/bazelbuild/rules_she rewrite ^github\.com/bazel-contrib/rules_go/(.*) mirror.bazel.build/github.com/bazel-contrib/rules_go/$1 rewrite ^github\.com/bazelbuild/bazel-skylib/(.*) mirror.bazel.build/github.com/bazelbuild/bazel-skylib/$1 rewrite ^github\.com/bazelbuild/platforms/(.*) mirror.bazel.build/github.com/bazelbuild/platforms/$1 +rewrite ^github\.com/bazelbuild/rules_kotlin/(.*) mirror.bazel.build/github.com/bazelbuild/rules_kotlin/$1 rewrite ^github\.com/bazelbuild/rules_shell/(.*) mirror.bazel.build/github.com/bazelbuild/rules_shell/$1 From b15adfe6f5e991688bf43ae0beac95c606ac20c8 Mon Sep 17 00:00:00 2001 From: Richard Levasseur Date: Mon, 8 Jun 2026 07:38:11 +0000 Subject: [PATCH 08/10] docs(agents): document CI failure repository inspection guidance --- AGENTS.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 45df61fd25..4f2ae4d05d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -206,3 +206,9 @@ e.g. ``` load("//python/private:foo.bzl", "foo") # buildifier: disable=bzl-visibility ``` + +### CI Failure Inspection + +When inspecting CI failures, if the failure is due to a network error +downloading a repository, check if that rule set is mirrored on +mirror.bazel.build. If so, add it to the downloader config. From 6a47bf47c340af1d74b47329b420ca6aa1b23c34 Mon Sep 17 00:00:00 2001 From: Richard Levasseur Date: Mon, 8 Jun 2026 07:38:14 +0000 Subject: [PATCH 09/10] build: add bazel_features secondary mirror fallback --- downloader_config.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/downloader_config.cfg b/downloader_config.cfg index 649c0feec2..a978fb89b9 100644 --- a/downloader_config.cfg +++ b/downloader_config.cfg @@ -1,4 +1,5 @@ # Try GitHub first (primary) +rewrite ^github\.com/bazel-contrib/bazel_features/(.*) github.com/bazel-contrib/bazel_features/$1 rewrite ^github\.com/bazel-contrib/rules_go/(.*) github.com/bazel-contrib/rules_go/$1 rewrite ^github\.com/bazelbuild/bazel-skylib/(.*) github.com/bazelbuild/bazel-skylib/$1 rewrite ^github\.com/bazelbuild/platforms/(.*) github.com/bazelbuild/platforms/$1 @@ -7,6 +8,7 @@ rewrite ^github\.com/bazelbuild/rules_shell/(.*) github.com/bazelbuild/rules_she # Fall back to mirror (secondary) # Tracking upstream BCR mirror addition: https://github.com/bazelbuild/platforms/issues/139 +rewrite ^github\.com/bazel-contrib/bazel_features/(.*) mirror.bazel.build/github.com/bazel-contrib/bazel_features/$1 rewrite ^github\.com/bazel-contrib/rules_go/(.*) mirror.bazel.build/github.com/bazel-contrib/rules_go/$1 rewrite ^github\.com/bazelbuild/bazel-skylib/(.*) mirror.bazel.build/github.com/bazelbuild/bazel-skylib/$1 rewrite ^github\.com/bazelbuild/platforms/(.*) mirror.bazel.build/github.com/bazelbuild/platforms/$1 From 6e0025190def6b434ff366eb0fa87af1bf19dfb9 Mon Sep 17 00:00:00 2001 From: Richard Levasseur Date: Mon, 8 Jun 2026 07:38:50 +0000 Subject: [PATCH 10/10] build: configure secondary mirror fallback in sphinxdocs and gazelle subprojects --- gazelle/.bazelrc | 1 + gazelle/downloader_config.cfg | 16 ++++++++++++++++ sphinxdocs/.bazelrc | 1 + sphinxdocs/downloader_config.cfg | 16 ++++++++++++++++ 4 files changed, 34 insertions(+) create mode 100644 gazelle/downloader_config.cfg create mode 100644 sphinxdocs/downloader_config.cfg diff --git a/gazelle/.bazelrc b/gazelle/.bazelrc index 9a38133e9d..bdb29d5bc3 100644 --- a/gazelle/.bazelrc +++ b/gazelle/.bazelrc @@ -1,5 +1,6 @@ common --deleted_packages=examples/bzlmod_build_file_generation common --deleted_packages=examples/bzlmod_build_file_generation/runfiles +common --experimental_downloader_config=downloader_config.cfg test --test_output=errors diff --git a/gazelle/downloader_config.cfg b/gazelle/downloader_config.cfg new file mode 100644 index 0000000000..a978fb89b9 --- /dev/null +++ b/gazelle/downloader_config.cfg @@ -0,0 +1,16 @@ +# Try GitHub first (primary) +rewrite ^github\.com/bazel-contrib/bazel_features/(.*) github.com/bazel-contrib/bazel_features/$1 +rewrite ^github\.com/bazel-contrib/rules_go/(.*) github.com/bazel-contrib/rules_go/$1 +rewrite ^github\.com/bazelbuild/bazel-skylib/(.*) github.com/bazelbuild/bazel-skylib/$1 +rewrite ^github\.com/bazelbuild/platforms/(.*) github.com/bazelbuild/platforms/$1 +rewrite ^github\.com/bazelbuild/rules_kotlin/(.*) github.com/bazelbuild/rules_kotlin/$1 +rewrite ^github\.com/bazelbuild/rules_shell/(.*) github.com/bazelbuild/rules_shell/$1 + +# Fall back to mirror (secondary) +# Tracking upstream BCR mirror addition: https://github.com/bazelbuild/platforms/issues/139 +rewrite ^github\.com/bazel-contrib/bazel_features/(.*) mirror.bazel.build/github.com/bazel-contrib/bazel_features/$1 +rewrite ^github\.com/bazel-contrib/rules_go/(.*) mirror.bazel.build/github.com/bazel-contrib/rules_go/$1 +rewrite ^github\.com/bazelbuild/bazel-skylib/(.*) mirror.bazel.build/github.com/bazelbuild/bazel-skylib/$1 +rewrite ^github\.com/bazelbuild/platforms/(.*) mirror.bazel.build/github.com/bazelbuild/platforms/$1 +rewrite ^github\.com/bazelbuild/rules_kotlin/(.*) mirror.bazel.build/github.com/bazelbuild/rules_kotlin/$1 +rewrite ^github\.com/bazelbuild/rules_shell/(.*) mirror.bazel.build/github.com/bazelbuild/rules_shell/$1 diff --git a/sphinxdocs/.bazelrc b/sphinxdocs/.bazelrc index caefd0af53..acff835394 100644 --- a/sphinxdocs/.bazelrc +++ b/sphinxdocs/.bazelrc @@ -15,6 +15,7 @@ build --enable_runfiles # Local disk cache greatly speeds up builds if the regular cache is lost common --disk_cache=~/.cache/bazel/bazel-disk-cache +common --experimental_downloader_config=downloader_config.cfg common --incompatible_python_disallow_native_rules common --incompatible_no_implicit_file_export diff --git a/sphinxdocs/downloader_config.cfg b/sphinxdocs/downloader_config.cfg new file mode 100644 index 0000000000..a978fb89b9 --- /dev/null +++ b/sphinxdocs/downloader_config.cfg @@ -0,0 +1,16 @@ +# Try GitHub first (primary) +rewrite ^github\.com/bazel-contrib/bazel_features/(.*) github.com/bazel-contrib/bazel_features/$1 +rewrite ^github\.com/bazel-contrib/rules_go/(.*) github.com/bazel-contrib/rules_go/$1 +rewrite ^github\.com/bazelbuild/bazel-skylib/(.*) github.com/bazelbuild/bazel-skylib/$1 +rewrite ^github\.com/bazelbuild/platforms/(.*) github.com/bazelbuild/platforms/$1 +rewrite ^github\.com/bazelbuild/rules_kotlin/(.*) github.com/bazelbuild/rules_kotlin/$1 +rewrite ^github\.com/bazelbuild/rules_shell/(.*) github.com/bazelbuild/rules_shell/$1 + +# Fall back to mirror (secondary) +# Tracking upstream BCR mirror addition: https://github.com/bazelbuild/platforms/issues/139 +rewrite ^github\.com/bazel-contrib/bazel_features/(.*) mirror.bazel.build/github.com/bazel-contrib/bazel_features/$1 +rewrite ^github\.com/bazel-contrib/rules_go/(.*) mirror.bazel.build/github.com/bazel-contrib/rules_go/$1 +rewrite ^github\.com/bazelbuild/bazel-skylib/(.*) mirror.bazel.build/github.com/bazelbuild/bazel-skylib/$1 +rewrite ^github\.com/bazelbuild/platforms/(.*) mirror.bazel.build/github.com/bazelbuild/platforms/$1 +rewrite ^github\.com/bazelbuild/rules_kotlin/(.*) mirror.bazel.build/github.com/bazelbuild/rules_kotlin/$1 +rewrite ^github\.com/bazelbuild/rules_shell/(.*) mirror.bazel.build/github.com/bazelbuild/rules_shell/$1