)]}'
{
  "commit": "0cbf51a530ff05eaacadb12c4cc977c24a0f0fb0",
  "tree": "fd14354e8ba64d68489f1f4b0116696baf5ee57f",
  "parents": [
    "4cfff958acf023e190191a2842103897201c4dad"
  ],
  "author": {
    "name": "Jan Schär",
    "email": "jan@monogon.tech",
    "time": "Wed Apr 23 10:21:17 2025 +0000"
  },
  "committer": {
    "name": "Jan Schär",
    "email": "jan@monogon.tech",
    "time": "Thu May 01 06:49:22 2025 +0000"
  },
  "message": "m/n/k/hyperkube: avoid unnecessary rebuilds\n\nPreviously, hyperkube was rebuilt each time a commit was made in the\nmonorepo. This change stops this by reading the variables from a\nfiltered stamp file instead. Now, only this filtered file is rebuilt\neach time, which is very fast compared to linking hyperkube.\n\nPreviously, volatile status variables were used for gitTreeState and\nbuildDate. But the volatile status is bad for reproducibility, as it\nmakes Bazel intentionally use stale caches.  Instead, these variables\nare now only defined in release builds, and left unstamped during\ndevelopment. These variables are available at the /version endpoint of\nthe apiserver, so there may be some utility in defining them for release\nbuilds, but they are not needed during development.\n\nThe buildDate is now taken from the commit date instead of\nSOURCE_DATE_EPOCH, which simplifies the build process as we don\u0027t need\nto define that variable anymore.\n\nPreviously, KUBERNETES_gitCommit was referenced but not defined by the\nstatus script. It is now defined as the monorepo commit, which is more\nuseful than leaving it blank.\n\nChange-Id: I6228888507e400ca1f53167ee9d4f132f5711a45\nReviewed-on: https://review.monogon.dev/c/monogon/+/4167\nTested-by: Jenkins CI\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "20cfd5727225ee6e6f4f0c4b1c292a0a6dffb5a4",
      "new_mode": 33188,
      "new_path": "build/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "9eb551fa2aa0b3f4b3e482b323f1f8899c26614c",
      "old_mode": 33261,
      "old_path": "build/print-workspace-status.py",
      "new_id": "d54333d683ac292608f4e4d09ad4161612cf1e02",
      "new_mode": 33261,
      "new_path": "build/print-workspace-status.py"
    },
    {
      "type": "modify",
      "old_id": "9fb4c2279c0e25085ed7a4917d0ca9f11909f0f4",
      "old_mode": 33188,
      "old_path": "metropolis/node/kubernetes/hyperkube/BUILD.bazel",
      "new_id": "3930eb8a06c0f9b5ab88266abdaece52ef206307",
      "new_mode": 33188,
      "new_path": "metropolis/node/kubernetes/hyperkube/BUILD.bazel"
    },
    {
      "type": "delete",
      "old_id": "ddd1347639ec394391dfe5cc26aa99dd201a17ce",
      "old_mode": 33188,
      "old_path": "metropolis/node/kubernetes/hyperkube/kubernetes_version_def.bzl",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    }
  ]
}
