)]}'
{
  "commit": "052af2dce813dba9f74ffc05ffd760e60a37c23b",
  "tree": "e0c5dac8c237ad4e92a6c2d91427678d8a4e1691",
  "parents": [
    "b51b4171390ec52433f8c06faef46ef5eccf91d4"
  ],
  "author": {
    "name": "Leopold Schabel",
    "email": "leo@nexantic.com",
    "time": "Wed Nov 06 02:21:53 2019 +0000"
  },
  "committer": {
    "name": "Leopold Schabel",
    "email": "leo@nexantic.com",
    "time": "Wed Nov 06 02:21:53 2019 +0000"
  },
  "message": "Simple CI pipeline for Smalltown Core\n\nSince we run as root on the build server, we can properly mount a tmpfs\nas the shared build volume with exec support (this is still broken for\nunprivileged create_container.sh). We\u0027ll have to see when and if this\nblows up, and whether we want to use a disk-backed volume instead.\n\nThe pipeline has two stages that run the following commands:\n\n- `scripts/run_ci.sh ${build.id} ${target.phid} bazel build //core/scripts:launch`\n\n- `timeout 30 scripts/run_ci.sh ${build.id} ${target.phid} bazel run //core/scripts:launch; true` (for visual inspection)\n\nThose are placeholders - we will want to integrate any and all\ntests in Bazel, only trigger tests whose dependencies have been\nmodified in a given build step, and report individual results back\nto Habormaster.\n\nWhat works:\n\n- Persistent working copies on the build server. Drydocks caches a number of\n  persistent repository copies to avoid a full clone on each build, and\n  uses a leasing mechanism to allocate them. Of course, this means we\n  have to be careful about not polluting the repo, but Bazel takes care of that.\n\n- Shared build cache with fast incremental rebuilds\n  (a build with no changes takes ~15s including the podman build step).\n\n- Full rebuild after volume deletion takes ~4m.\n\n- Build output shows up in Phabricator in real time.\n\n- Aborting a build properly cancels the running build and clean up the pod.\n\n- Launching the QEMU VM.\n\n- Reporting build status back to Harbormaster (noop at the moment, can\n  be used to report unit test states later). This uses the awesome undocumented\n  SSH conduit transport so we don\u0027t have to deploy a separate token on the host.\n\n- Phabricator revisions are drafts until all tests complete successfully.\n\nTest Plan: See tests :-)\n\nBug: T483\n\nX-Origin-Diff: phab/D242\nGitOrigin-RevId: 64eca996c8704cb0cd4f1cbb4f88f71a6fdca1eb\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "de9d2cbd02f956792faef0104c2e26664bfe93cf",
      "old_mode": 33261,
      "old_path": "scripts/create_container.sh",
      "new_id": "0a137bd722f781ee9c2ff5b2e95ab0f4f398e35e",
      "new_mode": 33261,
      "new_path": "scripts/create_container.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fa62a9baafdc4955c26e7477d8ea5851a9c79de1",
      "new_mode": 33261,
      "new_path": "scripts/run_ci.sh"
    }
  ]
}
