Added retry when fetching github labels (#2392)

This should hopefully avoid build failures on
https://github.com/bazelbuild/bazel-central-registry/pull/6179
diff --git a/buildkite/bazel-central-registry/bcr_presubmit.py b/buildkite/bazel-central-registry/bcr_presubmit.py
index fa8fd7e..7cb48c6 100755
--- a/buildkite/bazel-central-registry/bcr_presubmit.py
+++ b/buildkite/bazel-central-registry/bcr_presubmit.py
@@ -319,12 +319,17 @@
     if not pr_number or pr_number == "false":
         return []
 
-    response = requests.get(f"https://api.github.com/repos/bazelbuild/bazel-central-registry/pulls/{pr_number}")
-    if response.status_code == 200:
-        pr = response.json()
-        return [label["name"] for label in pr["labels"]]
-    else:
-        error(f"Error: {response.status_code}. Could not fetch labels for PR https://github.com/bazelbuild/bazel-central-registry/pull/{pr_number}")
+    tries = 5
+    for attempt in range(1, tries + 1):
+        response = requests.get(f"https://api.github.com/repos/bazelbuild/bazel-central-registry/pulls/{pr_number}")
+        if response.status_code == 200:
+            pr = response.json()
+            return [label["name"] for label in pr["labels"]]
+
+        if response.status_code not in [429, 403] or attempt >= tries:
+            error(f"Error: {response.status_code}. Could not fetch labels for PR https://github.com/bazelbuild/bazel-central-registry/pull/{pr_number}")
+
+        time.sleep(1.0 * attempt)
 
 
 def should_bcr_validation_block_presubmit(modules, modules_with_metadata_change, pr_labels):