Add Dawn android bots to CQ

Currently runs only dawn_end2end_tests and its variants

Bug: chromium:1363409
Change-Id: I4465caccb316e4d3db559c1f96fb2d4b07c8a812
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/132700
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
Kokoro: Austin Eng <enga@chromium.org>
diff --git a/infra/config/global/generated/commit-queue.cfg b/infra/config/global/generated/commit-queue.cfg
index a0f0f8f..779c99e 100644
--- a/infra/config/global/generated/commit-queue.cfg
+++ b/infra/config/global/generated/commit-queue.cfg
@@ -30,6 +30,12 @@
     }
     tryjob {
       builders {
+        name: "chromium/try/android-dawn-arm-rel"
+      }
+      builders {
+        name: "chromium/try/android-dawn-arm64-rel"
+      }
+      builders {
         name: "chromium/try/dawn-try-win10-x86-rel"
         includable_only: true
       }
@@ -108,6 +114,9 @@
     }
     tryjob {
       builders {
+        name: "chromium-m112/try/dawn-android-arm-deps-rel"
+      }
+      builders {
         name: "chromium-m112/try/dawn-mac-x64-deps-rel"
       }
       builders {
@@ -183,6 +192,9 @@
     }
     tryjob {
       builders {
+        name: "chromium-m113/try/dawn-android-arm-deps-rel"
+      }
+      builders {
         name: "chromium-m113/try/dawn-linux-x64-deps-rel"
       }
       builders {
@@ -261,6 +273,9 @@
     }
     tryjob {
       builders {
+        name: "chromium-m114/try/dawn-android-arm-deps-rel"
+      }
+      builders {
         name: "chromium-m114/try/dawn-linux-x64-deps-rel"
       }
       builders {
diff --git a/infra/config/global/main.star b/infra/config/global/main.star
index cb5e66d..95043ae 100755
--- a/infra/config/global/main.star
+++ b/infra/config/global/main.star
@@ -355,10 +355,12 @@
                 builder = "dawn:try/" + name,
             )
 
-def _add_branch_verifiers(builder_name, os, includable_only = False):
+def _add_branch_verifiers(builder_name, os, min_milestone = None, includable_only = False):
     for milestone, details in ACTIVE_MILESTONES.items():
         if os not in details.platforms:
             continue
+        if min_milestone != None and int(milestone[1:]) < min_milestone:
+            continue
         luci.cq_tryjob_verifier(
             cq_group = "Dawn-CQ-" + milestone,
             builder = "{}:try/{}".format(details.chromium_project, builder_name),
@@ -367,24 +369,47 @@
 
 # We use the DEPS version for branches because ToT builders do not make sense on
 # branches and the DEPS versions already exist.
-_os_to_branch_builder = {
+_os_arch_to_branch_builder = {
     "linux": "dawn-linux-x64-deps-rel",
     "mac": "dawn-mac-x64-deps-rel",
     "win": "dawn-win10-x64-deps-rel",
+    "android-arm": "dawn-android-arm-deps-rel",
+    "android-arm64": "dawn-android-arm64-deps-rel",
 }
 
-def chromium_dawn_tryjob(os):
+# The earliest milestone that the builder is relevant for
+_os_arch_to_min_milestone = {
+    "linux": 112,
+    "mac": 112,
+    "win": 112,
+    "android-arm": 112,
+    "android-arm64": 115,
+}
+
+def chromium_dawn_tryjob(os, arch = None):
     """Adds a tryjob that tests against Chromium
 
     Args:
       os: string for the OS, should be one or linux|mac|win
+      arch: string for the arch, or None
     """
 
-    luci.cq_tryjob_verifier(
-        cq_group = "Dawn-CQ",
-        builder = "chromium:try/" + os + "-dawn-rel",
-    )
-    _add_branch_verifiers(_os_to_branch_builder[os], os)
+    if arch:
+        luci.cq_tryjob_verifier(
+            cq_group = "Dawn-CQ",
+            builder = "chromium:try/{os}-dawn-{arch}-rel".format(os = os, arch = arch),
+        )
+        _add_branch_verifiers(
+            _os_arch_to_branch_builder["{os}-{arch}".format(os = os, arch = arch)],
+            os,
+            _os_arch_to_min_milestone["{os}-{arch}".format(os = os, arch = arch)],
+        )
+    else:
+        luci.cq_tryjob_verifier(
+            cq_group = "Dawn-CQ",
+            builder = "chromium:try/{}-dawn-rel".format(os),
+        )
+        _add_branch_verifiers(_os_arch_to_branch_builder[os], os)
 
 luci.gitiles_poller(
     name = "primary-poller",
@@ -437,6 +462,8 @@
 chromium_dawn_tryjob("linux")
 chromium_dawn_tryjob("mac")
 chromium_dawn_tryjob("win")
+chromium_dawn_tryjob("android", "arm")
+chromium_dawn_tryjob("android", "arm64")
 
 luci.cq_tryjob_verifier(
     cq_group = "Dawn-CQ",
diff --git a/infra/config/global/milestones.json b/infra/config/global/milestones.json
index 87987eb..1125f43 100644
--- a/infra/config/global/milestones.json
+++ b/infra/config/global/milestones.json
@@ -5,7 +5,8 @@
         "ref": "refs/heads/chromium/5615",
         "platforms": [
             "mac",
-            "win"
+            "win",
+            "android"
         ]
     },
     "113": {
@@ -15,7 +16,8 @@
         "platforms": [
             "linux",
             "mac",
-            "win"
+            "win",
+            "android"
         ]
     },
     "114": {
@@ -25,7 +27,8 @@
         "platforms": [
             "linux",
             "mac",
-            "win"
+            "win",
+            "android"
         ]
     }
 }
\ No newline at end of file
diff --git a/infra/config/scripts/milestones.py b/infra/config/scripts/milestones.py
index 4fe71f7..497086b 100755
--- a/infra/config/scripts/milestones.py
+++ b/infra/config/scripts/milestones.py
@@ -103,6 +103,7 @@
             'linux',
             'mac',
             'win',
+            'android',
         ],
     }