)]}'
{
  "commit": "a0ceee2c0df0777abcbaa7c8c63d80cb179eaddd",
  "tree": "b84cd515b2a7ead804114e72f454751962c14c72",
  "parents": [
    "6dbf8249d8735e860e11aa35228482903ec084f3"
  ],
  "author": {
    "name": "Tong Wu",
    "email": "wutong@google.com",
    "time": "Tue Jul 21 21:01:06 2020 +0000"
  },
  "committer": {
    "name": "CQ Bot Account",
    "email": "flutter-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Jul 21 21:01:06 2020 +0000"
  },
  "message": "[devicelab] Run tasks concurrently.\n\n1. Add a job module to help create sub builds, which has a lot of customizations and simplifications than the fuchsia/subbuild module.\n\n2. In the future we will add a builder that runs all devicelab tests for every flutter commit.\n\n3. I have tried an optimization of isolating the flutter/flutter checkout to sub-jobs. It doesn\u0027t work because a sub-job needs 70 secs to download the isolate, while checking out flutter/flutter only takes 20 secs.\n\n4: Example test: https://chromium-swarm.appspot.com/task?id\u003d4d7414a646f94c10\n\nBug: https://github.com/flutter/flutter/issues/53789\nChange-Id: I60c8da510384bfff3093580d90331ea57c0d8045\nReviewed-on: https://flutter-review.googlesource.com/c/recipes/+/4263\nReviewed-by: Godofredo Contreras \u003cgodofredoc@google.com\u003e\nCommit-Queue: Tong Wu \u003cwutong@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5f3ac865c7f8183e6652164f88a0aab16eaf934c",
      "new_mode": 33188,
      "new_path": "recipe_modules/job/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1f2ab729b45e1ec40b32aef485b53140c7046c28",
      "new_mode": 33188,
      "new_path": "recipe_modules/job/api.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2185d842855c96faab6b8923e69d5b64a67d5e29",
      "new_mode": 33188,
      "new_path": "recipe_modules/job/examples/full.expected/collect.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "50580574b107a1a82cab1598254018b3ed058443",
      "new_mode": 33188,
      "new_path": "recipe_modules/job/examples/full.expected/collect_failed_states.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b6042b610a92b6a861c751f06ebe32af5c49c504",
      "new_mode": 33188,
      "new_path": "recipe_modules/job/examples/full.expected/current_recipe.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "42dbac1a8be0fc664074a8fde764bfb964982ada",
      "new_mode": 33188,
      "new_path": "recipe_modules/job/examples/full.expected/launch.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f54cd549ac22bf008710e479cc25e71909700853",
      "new_mode": 33188,
      "new_path": "recipe_modules/job/examples/full.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cbb7274433731c378d9e0d79a2b05499bb9b90b7",
      "new_mode": 33188,
      "new_path": "recipe_modules/job/test_api.py"
    },
    {
      "type": "modify",
      "old_id": "fda27ef5cc05cbaaabc6f9bf5b8ca7fdf243bda2",
      "old_mode": 33188,
      "old_path": "recipes/devicelab.expected/android_defines_test.json",
      "new_id": "b7b7104f0bb9c3656bce26c702051c72d6775bab",
      "new_mode": 33188,
      "new_path": "recipes/devicelab.expected/android_defines_test.json"
    },
    {
      "type": "modify",
      "old_id": "27b8e0cbc2a1dc6cc88b7b72a228d98a1ad33ef2",
      "old_mode": 33188,
      "old_path": "recipes/devicelab.expected/flavors_test.json",
      "new_id": "9906e593d5a352641e1b667fc4c6bb832b2dddc7",
      "new_mode": 33188,
      "new_path": "recipes/devicelab.expected/flavors_test.json"
    },
    {
      "type": "modify",
      "old_id": "a074225036e71762dc31381fd3771abc09ce27c1",
      "old_mode": 33188,
      "old_path": "recipes/devicelab.expected/flutter_gallery_ios__compile.json",
      "new_id": "0dd2942f1e22f8b7e93ffa8357c065fcd45f88f5",
      "new_mode": 33188,
      "new_path": "recipes/devicelab.expected/flutter_gallery_ios__compile.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6be6f8edcba8e8a8def93932629bed25bf5c7732",
      "new_mode": 33188,
      "new_path": "recipes/devicelab.expected/schedule.json"
    },
    {
      "type": "rename",
      "old_id": "ffdbff82323bd834d76d14f5010dc17771d0fe54",
      "old_mode": 33188,
      "old_path": "recipes/devicelab.expected/missing_task_name.json",
      "new_id": "eb5df5b1c0e3e7d287410ae708d2fa225599be68",
      "new_mode": 33188,
      "new_path": "recipes/devicelab.expected/unknown_role.json",
      "score": 63
    },
    {
      "type": "delete",
      "old_id": "986ad5159c285d7026354c65ac35c751953c2d05",
      "old_mode": 33188,
      "old_path": "recipes/devicelab.expected/unknown_task.json",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "9a5ad659ff9533b126477644e204d44fa9e9ab3d",
      "old_mode": 33188,
      "old_path": "recipes/devicelab.py",
      "new_id": "6f6e2253ca8cdbf1fd2f3d0d00416f4df788e797",
      "new_mode": 33188,
      "new_path": "recipes/devicelab.py"
    }
  ]
}
