)]}'
{
  "commit": "d2e6dbaf275d6ae202952a28c633f1600a2ce721",
  "tree": "0cf024ba61ede6f1247224010376a7565c1de97a",
  "parents": [
    "0ebde11aef80fae10e47a2679a3994235fe156ae"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Mon Oct 19 21:17:25 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Oct 19 21:17:25 2026 -0700"
  },
  "message": "workflows: retry transient Bazel download failures in setup-bazel (#4291)\n\n`bazel-contrib/setup-bazel` configures Bazelisk and restores caches,\nleaving the Bazel binary download to the first `bazel` invocation.\nBazelisk retries initial HTTP GET headers, but does not retry\nmid-stream `io.Copy` failures (such as HTTP/2 stream resets from\n`releases.bazel.build`). A failed download also leaves an empty\n`~/.cache/bazelisk` directory that `setup-bazel`\u0027s post step caches.\n\nTo prevent transient network flakes, pin Bazelisk to 1.29.0 (for\n`windows-arm64` support) in the shared `setup-bazel` composite action,\neagerly run `bazel --version` with exponential-backoff retries, delete\npartial Bazelisk cache directories if all retries fail, and reuse the\nshared action in the release artifact build workflow.",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "09c0ea2a2195b53564994793012e271b993b6cd7",
      "new_mode": 33188,
      "new_path": ".github/actions/setup-bazel/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "623cac872911ee6cb2e0702340c3c18a0761fda3",
      "old_mode": 33188,
      "old_path": ".github/actions/setup-bazel/action.yaml",
      "new_id": "60aa1d163804a362cd384689ce40ffdf66b75c0a",
      "new_mode": 33188,
      "new_path": ".github/actions/setup-bazel/action.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "088b470151d2c027ea6d6b726c6cbec894b84949",
      "new_mode": 33261,
      "new_path": ".github/actions/setup-bazel/download_bazel.sh"
    },
    {
      "type": "modify",
      "old_id": "ee8dfe867c34028bee9d01c9f24204c353785a9c",
      "old_mode": 33188,
      "old_path": ".github/workflows/release_build_artifacts.yaml",
      "new_id": "0c254efb5ec9fc91eef2d9feac2515fe9f9f78cb",
      "new_mode": 33188,
      "new_path": ".github/workflows/release_build_artifacts.yaml"
    },
    {
      "type": "modify",
      "old_id": "f1e56256bdaee51806aa069973b8b1d39d184691",
      "old_mode": 33188,
      "old_path": "tests/workflows/BUILD.bazel",
      "new_id": "b3f46d08a363e6161ebf6267936f69e860f119a7",
      "new_mode": 33188,
      "new_path": "tests/workflows/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "951b9a8d89d47774fdbb0c9a4015d81704473d7e",
      "new_mode": 33188,
      "new_path": "tests/workflows/setup_bazel_test.py"
    }
  ]
}
