)]}'
{
  "commit": "7463cb4c5ec2c885dad1d5f9d6ad5ec7b277981d",
  "tree": "ecbc54f666a252ac1f1cc1d88e4d86bf57b886d0",
  "parents": [
    "108e050bb707dfae4e7e4d8b52759bd795b52a97"
  ],
  "author": {
    "name": "Scott Todd",
    "email": "scott.todd0@gmail.com",
    "time": "Mon Jul 22 16:05:15 2024 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Jul 22 16:05:15 2024 -0700"
  },
  "message": "Move \"platforms\" CI jobs into their own workflow files. (#17979)\n\nThis moves workflow jobs that build the full project (including the\r\ncompiler) from `ci.yml` to their own workflow files:\r\n\r\n- `build_test_all_arm64` --\u003e\r\n`.github/workflows/ci_linux_arm64_clang.yml`\r\n- `build_test_all_windows` --\u003e\r\n`.github/workflows/ci_windows_x86_msvc.yml`\r\n- `build_test_all_macos_arm64` --\u003e none\r\n- `build_test_all_macos_x86_64` --\u003e\r\n`.github/workflows/ci_macos_x86_clang.yml`\r\n\r\nWith one workflow file per platform, these are the tradeoffs compared to\r\na single workflow file:\r\n\r\nPros:\r\n+ Easy to tune which triggers affect each workflow\r\n* See\r\nhttps://github.com/Tencent/ncnn/blob/master/.github/workflows/windows-clang.yml\r\nfor some inspiration. Each workflow can independently define `paths:` to\r\ntrigger on. We have support for that via\r\n[`build_tools/github_actions/configure_ci.py`](https://github.com/iree-org/iree/blob/main/build_tools/github_actions/configure_ci.py),\r\nbut this also allows for adjusting schedule triggers too.\r\n+ Easy to fork a workflow for a new platform, less merge conflicts in a\r\nsingle large file\r\n+ Easy to cancel a single job without affecting others from the same\r\nfile\r\n+ Easy to disable/enable a workflow in isolation from the UI if there\r\nare runner issues\r\n+ Low impact radius if/when a single platform has runner issues\r\n\r\nCons:\r\n- If running on PRs, checks are spread out a lot\r\n- Hard to mark multiple/all jobs as required checks (if we care)\r\n- More code duplication between files (reusable workflows can help\r\nhere... maybe, could also lean on CMake presets and build scripts)\r\n\r\nPractically at this point in time, these workflows _were_ running on all\r\ncommits pushed to the `main` branch but they were disabled for being too\r\nslow or requiring runners that went offline. Now the workflows will run\r\non a nightly schedule and they can be disabled individually from the\r\nGitHub UI as needed. TBD how we\u0027ll make these workflows available for\r\nopt-in on presubmit. We could add the `pull_request` trigger back,\r\ntrigger if some labels are added, etc.\r\n\r\nskip-ci: adding new workflows, existing ones are unaffected",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cc31ef11939e48b2000c41841943eee59712f4e2",
      "old_mode": 33188,
      "old_path": ".github/workflows/ci.yml",
      "new_id": "4fed94f3677e680ebe81dd8bf4dcc500313d95ef",
      "new_mode": 33188,
      "new_path": ".github/workflows/ci.yml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "029f0a22ce5bbe23bbc1e47959193de2ad2d2f36",
      "new_mode": 33188,
      "new_path": ".github/workflows/ci_linux_arm64_clang.yml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ab669fa0deeea8d3903791bc231ceb152957d65a",
      "new_mode": 33188,
      "new_path": ".github/workflows/ci_macos_x86_clang.yml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "548a4e97611bdd3e3a6a7bf719efd0b0ad358f04",
      "new_mode": 33188,
      "new_path": ".github/workflows/ci_windows_x86_msvc.yml"
    },
    {
      "type": "modify",
      "old_id": "24fd42b6832bc35445096febc700a6eda51f766d",
      "old_mode": 33261,
      "old_path": "build_tools/cmake/ctest_all.sh",
      "new_id": "85894d44292d632e975b91f24fe51d62309ec474",
      "new_mode": 33261,
      "new_path": "build_tools/cmake/ctest_all.sh"
    },
    {
      "type": "modify",
      "old_id": "e6fccbaa3e7262521e4483400e7af292ae4953f0",
      "old_mode": 33261,
      "old_path": "build_tools/github_actions/configure_ci.py",
      "new_id": "6bb7fceff1f0771e8b18d47ac44fb1d959b75cee",
      "new_mode": 33261,
      "new_path": "build_tools/github_actions/configure_ci.py"
    },
    {
      "type": "modify",
      "old_id": "0d5ecf13aebdfb49dc467cc7727e5a518ae8e003",
      "old_mode": 33188,
      "old_path": "build_tools/github_actions/configure_ci_test.py",
      "new_id": "b9a6c07385664e0280af3b5570adfc1be9f3883d",
      "new_mode": 33188,
      "new_path": "build_tools/github_actions/configure_ci_test.py"
    }
  ]
}
