Add devicelab test drone for mac/ios

This is similar to https://flutter-review.googlesource.com/c/infra/+/32761 (which added linux/android), adding a test drone for mac/ios.

Change-Id: I3f4d74edac13838d179e70b61d450015ddbf7fec
Bug: https://github.com/flutter/flutter/issues/103542
Reviewed-on: https://flutter-review.googlesource.com/c/infra/+/33800
Reviewed-by: Ricardo Amador <ricardoamador@google.com>
Reviewed-by: Yusuf Mohsinally <mohsinally@google.com>
Commit-Queue: Keyong Han <keyonghan@google.com>
diff --git a/config/devicelab_staging_config.star b/config/devicelab_staging_config.star
index 8fe4975..01162a0 100644
--- a/config/devicelab_staging_config.star
+++ b/config/devicelab_staging_config.star
@@ -225,6 +225,24 @@
             caches = MAC_DEFAULT_CACHES,
         )
 
+    common.mac_prod_builder(
+        name = "Mac_ios_staging test_drone",
+        console_view_name = console_view_name,
+        recipe = test_drone_recipe_name,
+        properties = {
+            "tags": ["devicelab", "ios", "mac"],
+            "git_branch": DEFAULT_BRANCH,
+            "use_cas": True,
+            "upload_metrics": True,
+        },
+        bucket = "staging",
+        pool = "luci.flutter.staging",
+        os = MAC_OS,
+        dimensions = {"device_os": IOS_VERSION, "cpu": "x86"},
+        expiration_timeout = timeout.LONG_EXPIRATION,
+        caches = MAC_DEFAULT_CACHES,
+    )
+
     mac_android_tasks = [
         "drive_perf_debug_warning",
         "hello_world_android__compile",
diff --git a/config/flutter_config.star b/config/flutter_config.star
index ccc2c5d..338524c 100644
--- a/config/flutter_config.star
+++ b/config/flutter_config.star
@@ -101,6 +101,16 @@
         properties = {"upload_metrics": True} if not prefix else {},
     )
     common.mac_prod_builder(
+        name = "%sMac Devicelab Test Drone" % prefix,
+        recipe = "devicelab/devicelab_test_drone",
+        console_view_name = None,
+        caches = ci_yaml.legacy_swarming_caches(ci_yaml_config, None, "mac_ios"),
+        dimensions = {"device_os": "iOS-15", "cpu": "x86"},
+        os = platform_properties["mac_ios"]["os"],
+        # Uploads metrics only for master/main branches, where prefix is empty.
+        properties = {"upload_metrics": True} if not prefix else {},
+    )
+    common.mac_prod_builder(
         name = "%sMac SDK Drone" % prefix,
         recipe = "flutter/flutter_drone",
         console_view_name = None,
diff --git a/config/generated/flutter/luci/cr-buildbucket.cfg b/config/generated/flutter/luci/cr-buildbucket.cfg
index f932d15..33b3e11 100644
--- a/config/generated/flutter/luci/cr-buildbucket.cfg
+++ b/config/generated/flutter/luci/cr-buildbucket.cfg
@@ -53432,6 +53432,49 @@
       }
     }
     builders {
+      name: "Mac Devicelab Test Drone"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86"
+      dimensions: "device_os:iOS-15"
+      dimensions: "os:Mac-12"
+      dimensions: "pool:luci.flutter.prod"
+      exe {
+        cipd_package: "flutter/recipe_bundles/flutter.googlesource.com/recipes"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$fuchsia/goma": {'
+        '    "server": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog"'
+        '  },'
+        '  "$kitchen": {'
+        '    "emulate_gce": true'
+        '  },'
+        '  "$recipe_engine/isolated": {'
+        '    "server": "https://isolateserver.appspot.com"'
+        '  },'
+        '  "$recipe_engine/swarming": {'
+        '    "server": "https://chromium-swarm.appspot.com"'
+        '  },'
+        '  "clobber": false,'
+        '  "gold_tryjob": false,'
+        '  "goma_jobs": "200",'
+        '  "mastername": "client.flutter",'
+        '  "recipe": "devicelab/devicelab_test_drone",'
+        '  "upload_metrics": true,'
+        '  "upload_packages": true'
+        '}'
+      execution_timeout_secs: 3600
+      build_numbers: YES
+      service_account: "flutter-prod-builder@chops-service-accounts.iam.gserviceaccount.com"
+      task_template_canary_percentage {}
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+    }
+    builders {
       name: "Mac Engine Drone"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "device_type:none"
@@ -100040,6 +100083,48 @@
       }
     }
     builders {
+      name: "beta-Mac Devicelab Test Drone"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86"
+      dimensions: "device_os:iOS-15"
+      dimensions: "os:Mac-12"
+      dimensions: "pool:luci.flutter.prod"
+      exe {
+        cipd_package: "flutter/recipe_bundles/flutter.googlesource.com/recipes"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$fuchsia/goma": {'
+        '    "server": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog"'
+        '  },'
+        '  "$kitchen": {'
+        '    "emulate_gce": true'
+        '  },'
+        '  "$recipe_engine/isolated": {'
+        '    "server": "https://isolateserver.appspot.com"'
+        '  },'
+        '  "$recipe_engine/swarming": {'
+        '    "server": "https://chromium-swarm.appspot.com"'
+        '  },'
+        '  "clobber": false,'
+        '  "gold_tryjob": false,'
+        '  "goma_jobs": "200",'
+        '  "mastername": "client.flutter",'
+        '  "recipe": "devicelab/devicelab_test_drone",'
+        '  "upload_packages": true'
+        '}'
+      execution_timeout_secs: 3600
+      build_numbers: YES
+      service_account: "flutter-prod-builder@chops-service-accounts.iam.gserviceaccount.com"
+      task_template_canary_percentage {}
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+    }
+    builders {
       name: "beta-Mac Engine Drone"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "device_type:none"
@@ -100568,6 +100653,48 @@
       }
     }
     builders {
+      name: "stable-Mac Devicelab Test Drone"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86"
+      dimensions: "device_os:iOS-15"
+      dimensions: "os:Mac-12"
+      dimensions: "pool:luci.flutter.prod"
+      exe {
+        cipd_package: "flutter/recipe_bundles/flutter.googlesource.com/recipes"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$fuchsia/goma": {'
+        '    "server": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog"'
+        '  },'
+        '  "$kitchen": {'
+        '    "emulate_gce": true'
+        '  },'
+        '  "$recipe_engine/isolated": {'
+        '    "server": "https://isolateserver.appspot.com"'
+        '  },'
+        '  "$recipe_engine/swarming": {'
+        '    "server": "https://chromium-swarm.appspot.com"'
+        '  },'
+        '  "clobber": false,'
+        '  "gold_tryjob": false,'
+        '  "goma_jobs": "200",'
+        '  "mastername": "client.flutter",'
+        '  "recipe": "devicelab/devicelab_test_drone",'
+        '  "upload_packages": true'
+        '}'
+      execution_timeout_secs: 3600
+      build_numbers: YES
+      service_account: "flutter-prod-builder@chops-service-accounts.iam.gserviceaccount.com"
+      task_template_canary_percentage {}
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+    }
+    builders {
       name: "stable-Mac Engine Drone"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "device_type:none"
@@ -189252,6 +189379,77 @@
       }
     }
     builders {
+      name: "Mac_ios_staging test_drone"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "cpu:x86"
+      dimensions: "device_os:iOS-15"
+      dimensions: "os:Mac-12"
+      dimensions: "pool:luci.flutter.staging"
+      exe {
+        cipd_package: "flutter/recipe_bundles/flutter.googlesource.com/recipes"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$fuchsia/goma": {'
+        '    "server": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog"'
+        '  },'
+        '  "$kitchen": {'
+        '    "emulate_gce": true'
+        '  },'
+        '  "$recipe_engine/isolated": {'
+        '    "server": "https://isolateserver.appspot.com"'
+        '  },'
+        '  "$recipe_engine/swarming": {'
+        '    "server": "https://chromium-swarm.appspot.com"'
+        '  },'
+        '  "clobber": false,'
+        '  "git_branch": "master",'
+        '  "gold_tryjob": false,'
+        '  "goma_jobs": "200",'
+        '  "mastername": "client.flutter",'
+        '  "recipe": "devicelab/devicelab_test_drone",'
+        '  "tags": ['
+        '    "devicelab",'
+        '    "ios",'
+        '    "mac"'
+        '  ],'
+        '  "upload_metrics": true,'
+        '  "upload_packages": true,'
+        '  "use_cas": true'
+        '}'
+      execution_timeout_secs: 3600
+      expiration_secs: 43200
+      caches {
+        name: "builder_mac_devicelab_staging"
+        path: "builder"
+      }
+      caches {
+        name: "flutter_sdk"
+        path: "flutter sdk"
+      }
+      caches {
+        name: "osx_sdk"
+        path: "osx_sdk"
+      }
+      caches {
+        name: "pub_cache"
+        path: ".pub-cache"
+      }
+      caches {
+        name: "xcode_binary"
+        path: "xcode_binary"
+      }
+      build_numbers: YES
+      service_account: "flutter-staging-builder@chops-service-accounts.iam.gserviceaccount.com"
+      task_template_canary_percentage {}
+      experiments {
+        key: "luci.recipes.use_python3"
+        value: 100
+      }
+    }
+    builders {
       name: "Mac_staging plugin_test_ios"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "cpu:x86"
diff --git a/config/generated/flutter/luci/luci-milo.cfg b/config/generated/flutter/luci/luci-milo.cfg
index 2833f8b..44d4aec 100644
--- a/config/generated/flutter/luci/luci-milo.cfg
+++ b/config/generated/flutter/luci/luci-milo.cfg
@@ -126,6 +126,11 @@
     short_name: "pvspi"
   }
   builders {
+    name: "buildbucket/luci.flutter.staging/Mac_ios_staging test_drone"
+    category: "Mac"
+    short_name: "Mac_ios_staging test_drone"
+  }
+  builders {
     name: "buildbucket/luci.flutter.staging/Mac_android_staging drive_perf_debug_warning"
     category: "Mac_android"
     short_name: "dpdw"