)]}'
{
  "commit": "09f54d811b864ed06d370ca27d8759517141d024",
  "tree": "41ec597957c8b3277a926ce429fd4b5ee0ce94c0",
  "parents": [
    "89919da969d6a18777618ceda7cddc9d9cd3c401"
  ],
  "author": {
    "name": "Geoffrey Martin-Noble",
    "email": "gcmn@google.com",
    "time": "Fri Jul 07 10:00:02 2023 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Jul 07 10:00:02 2023 -0700"
  },
  "message": "Implement CI job optionality (#14312)\n\nWith an increasing number of CI jobs and more resource issues, I think\r\nit\u0027s useful for people to be able to specify which jobs they actually\r\nwant to run. In particular, I think it would be beneficial to make some\r\njobs, such as Windows, Mac, and A100, available for opt-in. Personally,\r\nwhen adding new jobs, I am routinely hacking the ci.yml file to only\r\nrun specific jobs and I think I am probably better able to do that: I\r\nsee other people running the entire workflow repeatedly just to test\r\none job.\r\n\r\nNow that we re-evaluate the PR description when rerunning the job,\r\npeople don\u0027t need to push another commit or anything after editing the\r\ndescription: they can \u0027just\u0027 cancel and rerun the job (still not ideal).\r\n\r\nI know people have struggled with the ergonomics of trailers for CI\r\ncontrol in the past. I tried to make the tag names follow a consistent\r\nformat and also added additional error checking like looking for\r\nunknown usage of reserved prefixes. Weird tag combinations provide\r\nimmediate errors. The lack of correspondence between `skip-ci` and\r\n`ci-skip` is a bit unfortunate. I\u0027m open to other names, but I don\u0027t\r\nthink we should choose something less natural just to avoid this. We\r\nshould probably drop `skip-ci` entirely with this because you would\r\nspell that `ci-skip: all`. That does have the disadvantage of not being\r\nable to provide justification as part of the trailer, but that can be\r\ndone free-form in the PR description without losing much IMO.\r\n\r\nOne thing this doesn\u0027t do is any kind of dependency analysis. That is,\r\nif you specify `ci-exactly: test_all`, it\u0027s not going to run\r\n`build_all` and then the `test_all` job will just fail. This is\r\ntheoretically something it could do, since it\u0027s already parsing the\r\nworkflow file, but I\u0027m not sure if that actually makes things less\r\nconfusing.\r\n\r\nThis also perhaps prompts cleaning up the job names so they\u0027re a bit\r\npithier and more intuitive. I think `build_test_all_windows` could just\r\nbe called `windows` for instance: this is a case where very structured\r\nnames actually get in the way IMO.\r\n\r\nFixes https://github.com/openxla/iree/issues/10042\r\n\r\nTested running locally with various env variable settings. Tested a\r\nfew different options in this PR also.\r\n\r\nci-skip: all",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1b1b9a1722ed7aa6d4ede3d97a6e770a75ef6201",
      "old_mode": 33188,
      "old_path": ".github/workflows/ci.yml",
      "new_id": "ece7635bba9444f4ef117ab92848d8a97fabab37",
      "new_mode": 33188,
      "new_path": ".github/workflows/ci.yml"
    },
    {
      "type": "modify",
      "old_id": "4f5309e85a26b135707e8c964d8e03d56cd003c2",
      "old_mode": 33188,
      "old_path": ".github/workflows/setup.yml",
      "new_id": "5b86526da38e0f4cb641383d56c36655f749dd33",
      "new_mode": 33188,
      "new_path": ".github/workflows/setup.yml"
    },
    {
      "type": "modify",
      "old_id": "d9d717b114074ff997fffae27d5c37ca2664c28f",
      "old_mode": 33188,
      "old_path": "CONTRIBUTING.md",
      "new_id": "fd4f2c688a1bcf3da28f452c6c61a088f39550a1",
      "new_mode": 33188,
      "new_path": "CONTRIBUTING.md"
    },
    {
      "type": "modify",
      "old_id": "0e009c205e0c28760b26f56e13b3136abd3e66f0",
      "old_mode": 33261,
      "old_path": "build_tools/github_actions/configure_ci.py",
      "new_id": "89f7aaad50c671a82ede6fa9985900270466faee",
      "new_mode": 33261,
      "new_path": "build_tools/github_actions/configure_ci.py"
    },
    {
      "type": "modify",
      "old_id": "0640ec23a25d4a3f8ebaf8a1aebd73c85f078025",
      "old_mode": 33188,
      "old_path": "build_tools/github_actions/configure_ci_test.py",
      "new_id": "af1421204e53291fd1e305772e3d7a6bcc0cd353",
      "new_mode": 33188,
      "new_path": "build_tools/github_actions/configure_ci_test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1aaabdf23bd9a6e39d1ed45b88391120b790362f",
      "new_mode": 33188,
      "new_path": "docs/developers/developing_iree/contributing.md"
    }
  ]
}
