Configure logdog, milo, and scheduling

Change-Id: I7e72b915da4c41b051fc84a4d7af99f7cccf9865
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3198116
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
GitOrigin-RevId: 1992b3031758243ae61d91a3e7b4c6f8d25d7cbd
diff --git a/infra/config/generated/commit-queue.cfg b/infra/config/generated/commit-queue.cfg
new file mode 100644
index 0000000..95b3182
--- /dev/null
+++ b/infra/config/generated/commit-queue.cfg
@@ -0,0 +1,80 @@
+# Auto-generated by lucicfg.
+# Do not modify manually.
+#
+# For the schema of this file, see Config message:
+#   https://luci-config.appspot.com/schemas/projects:commit-queue.cfg
+
+cq_status_host: "chromium-cq-status.appspot.com"
+submit_options {
+  max_burst: 4
+  burst_delay {
+    seconds: 480
+  }
+}
+config_groups {
+  name: "crashpad"
+  gerrit {
+    url: "https://chromium-review.googlesource.com"
+    projects {
+      name: "crashpad/crashpad"
+      ref_regexp: "refs/heads/.+"
+    }
+  }
+  verifiers {
+    gerrit_cq_ability {
+      committer_list: "project-crashpad-tryjob-access"
+      dry_run_access_list: "project-crashpad-tryjob-access"
+    }
+    tryjob {
+      builders {
+        name: "crashpad/try/crashpad_fuchsia_arm64_dbg"
+      }
+      builders {
+        name: "crashpad/try/crashpad_fuchsia_arm64_rel"
+      }
+      builders {
+        name: "crashpad/try/crashpad_fuchsia_x64_dbg"
+      }
+      builders {
+        name: "crashpad/try/crashpad_fuchsia_x64_rel"
+      }
+      builders {
+        name: "crashpad/try/crashpad_ios_arm64_dbg"
+      }
+      builders {
+        name: "crashpad/try/crashpad_ios_arm64_rel"
+      }
+      builders {
+        name: "crashpad/try/crashpad_ios_x64_dbg"
+      }
+      builders {
+        name: "crashpad/try/crashpad_ios_x64_rel"
+      }
+      builders {
+        name: "crashpad/try/crashpad_linux_x64_dbg"
+      }
+      builders {
+        name: "crashpad/try/crashpad_linux_x64_rel"
+      }
+      builders {
+        name: "crashpad/try/crashpad_mac_x64_dbg"
+      }
+      builders {
+        name: "crashpad/try/crashpad_mac_x64_rel"
+      }
+      builders {
+        name: "crashpad/try/crashpad_win_x64_dbg"
+      }
+      builders {
+        name: "crashpad/try/crashpad_win_x64_rel"
+      }
+      retry_config {
+        single_quota: 1
+        global_quota: 2
+        failure_weight: 1
+        transient_failure_weight: 1
+        timeout_weight: 2
+      }
+    }
+  }
+}
diff --git a/infra/config/generated/luci-logdog.cfg b/infra/config/generated/luci-logdog.cfg
new file mode 100644
index 0000000..adc75be
--- /dev/null
+++ b/infra/config/generated/luci-logdog.cfg
@@ -0,0 +1,9 @@
+# Auto-generated by lucicfg.
+# Do not modify manually.
+#
+# For the schema of this file, see ProjectConfig message:
+#   https://luci-config.appspot.com/schemas/projects:luci-logdog.cfg
+
+reader_auth_groups: "all"
+writer_auth_groups: "luci-logdog-chromium-writers"
+archive_gs_bucket: "chromium-luci-logdog"
diff --git a/infra/config/generated/luci-milo.cfg b/infra/config/generated/luci-milo.cfg
new file mode 100644
index 0000000..6c891b1
--- /dev/null
+++ b/infra/config/generated/luci-milo.cfg
@@ -0,0 +1,131 @@
+# Auto-generated by lucicfg.
+# Do not modify manually.
+#
+# For the schema of this file, see Project message:
+#   https://luci-config.appspot.com/schemas/projects:luci-milo.cfg
+
+consoles {
+  id: "main"
+  name: "Crashpad Main Console"
+  repo_url: "https://chromium.googlesource.com/crashpad/crashpad"
+  refs: "regexp:refs/heads/main"
+  manifest_name: "REVISION"
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_fuchsia_arm64_dbg"
+    category: "fuchsia|arm64"
+    short_name: "dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_fuchsia_arm64_rel"
+    category: "fuchsia|arm64"
+    short_name: "rel"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_fuchsia_x64_dbg"
+    category: "fuchsia|x64"
+    short_name: "dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_fuchsia_x64_rel"
+    category: "fuchsia|x64"
+    short_name: "rel"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_ios_arm64_dbg"
+    category: "ios|arm64"
+    short_name: "dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_ios_arm64_rel"
+    category: "ios|arm64"
+    short_name: "rel"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_ios_x64_dbg"
+    category: "ios|x64"
+    short_name: "dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_ios_x64_rel"
+    category: "ios|x64"
+    short_name: "rel"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_linux_x64_dbg"
+    category: "linux|x64"
+    short_name: "dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_linux_x64_rel"
+    category: "linux|x64"
+    short_name: "rel"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_mac_x64_dbg"
+    category: "mac|x64"
+    short_name: "dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_mac_x64_rel"
+    category: "mac|x64"
+    short_name: "rel"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_win_x64_dbg"
+    category: "win|x64"
+    short_name: "dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.ci/crashpad_win_x64_rel"
+    category: "win|x64"
+    short_name: "rel"
+  }
+}
+consoles {
+  id: "try"
+  name: "Crashpad Try Builders"
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_fuchsia_arm64_dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_fuchsia_arm64_rel"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_fuchsia_x64_dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_fuchsia_x64_rel"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_ios_arm64_dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_ios_arm64_rel"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_ios_x64_dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_ios_x64_rel"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_linux_x64_dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_linux_x64_rel"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_mac_x64_dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_mac_x64_rel"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_win_x64_dbg"
+  }
+  builders {
+    name: "buildbucket/luci.crashpad.try/crashpad_win_x64_rel"
+  }
+  builder_view_only: true
+}
+logo_url: "https://storage.googleapis.com/chrome-infra-public/logo/crashpad-logo.svg"
diff --git a/infra/config/generated/luci-scheduler.cfg b/infra/config/generated/luci-scheduler.cfg
new file mode 100644
index 0000000..6b3d04d
--- /dev/null
+++ b/infra/config/generated/luci-scheduler.cfg
@@ -0,0 +1,179 @@
+# Auto-generated by lucicfg.
+# Do not modify manually.
+#
+# For the schema of this file, see ProjectConfig message:
+#   https://luci-config.appspot.com/schemas/projects:luci-scheduler.cfg
+
+job {
+  id: "crashpad_fuchsia_arm64_dbg"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_fuchsia_arm64_dbg"
+  }
+}
+job {
+  id: "crashpad_fuchsia_arm64_rel"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_fuchsia_arm64_rel"
+  }
+}
+job {
+  id: "crashpad_fuchsia_x64_dbg"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_fuchsia_x64_dbg"
+  }
+}
+job {
+  id: "crashpad_fuchsia_x64_rel"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_fuchsia_x64_rel"
+  }
+}
+job {
+  id: "crashpad_ios_arm64_dbg"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_ios_arm64_dbg"
+  }
+}
+job {
+  id: "crashpad_ios_arm64_rel"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_ios_arm64_rel"
+  }
+}
+job {
+  id: "crashpad_ios_x64_dbg"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_ios_x64_dbg"
+  }
+}
+job {
+  id: "crashpad_ios_x64_rel"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_ios_x64_rel"
+  }
+}
+job {
+  id: "crashpad_linux_x64_dbg"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_linux_x64_dbg"
+  }
+}
+job {
+  id: "crashpad_linux_x64_rel"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_linux_x64_rel"
+  }
+}
+job {
+  id: "crashpad_mac_x64_dbg"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_mac_x64_dbg"
+  }
+}
+job {
+  id: "crashpad_mac_x64_rel"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_mac_x64_rel"
+  }
+}
+job {
+  id: "crashpad_win_x64_dbg"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_win_x64_dbg"
+  }
+}
+job {
+  id: "crashpad_win_x64_rel"
+  realm: "ci"
+  acl_sets: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "luci.crashpad.ci"
+    builder: "crashpad_win_x64_rel"
+  }
+}
+trigger {
+  id: "master-gitiles-trigger"
+  realm: "ci"
+  acl_sets: "ci"
+  triggers: "crashpad_fuchsia_arm64_dbg"
+  triggers: "crashpad_fuchsia_arm64_rel"
+  triggers: "crashpad_fuchsia_x64_dbg"
+  triggers: "crashpad_fuchsia_x64_rel"
+  triggers: "crashpad_ios_arm64_dbg"
+  triggers: "crashpad_ios_arm64_rel"
+  triggers: "crashpad_ios_x64_dbg"
+  triggers: "crashpad_ios_x64_rel"
+  triggers: "crashpad_linux_x64_dbg"
+  triggers: "crashpad_linux_x64_rel"
+  triggers: "crashpad_mac_x64_dbg"
+  triggers: "crashpad_mac_x64_rel"
+  triggers: "crashpad_win_x64_dbg"
+  triggers: "crashpad_win_x64_rel"
+  gitiles {
+    repo: "https://chromium.googlesource.com/crashpad/crashpad"
+    refs: "regexp:refs/heads/main"
+  }
+}
+acl_sets {
+  name: "ci"
+  acls {
+    role: OWNER
+    granted_to: "group:project-crashpad-admins"
+  }
+  acls {
+    granted_to: "group:all"
+  }
+}
diff --git a/infra/config/generated/realms.cfg b/infra/config/generated/realms.cfg
index 4137730..8dc05f6 100644
--- a/infra/config/generated/realms.cfg
+++ b/infra/config/generated/realms.cfg
@@ -19,6 +19,14 @@
     principals: "group:all"
   }
   bindings {
+    role: "role/logdog.writer"
+    principals: "group:luci-logdog-chromium-writers"
+  }
+  bindings {
+    role: "role/scheduler.owner"
+    principals: "group:project-crashpad-admins"
+  }
+  bindings {
     role: "role/scheduler.reader"
     principals: "group:all"
   }
diff --git a/infra/config/main.star b/infra/config/main.star
index fb8af22..632bcec 100755
--- a/infra/config/main.star
+++ b/infra/config/main.star
@@ -21,6 +21,8 @@
 # Launch 100% of Swarming tasks for builds in "realms-aware mode".
 luci.builder.defaults.experiments.set({"luci.use_realms": 100})
 
+REPO_URL = "https://chromium.googlesource.com/crashpad/crashpad"
+REVIEW_URL = "https://chromium-review.googlesource.com/crashpad/crashpad"
 
 luci.project(
     name = "crashpad",
@@ -36,7 +38,71 @@
             ],
             groups = "all",
         ),
+        acl.entry(
+            roles = acl.LOGDOG_WRITER,
+            groups = "luci-logdog-chromium-writers",
+        ),
+        acl.entry(
+            roles = acl.SCHEDULER_OWNER,
+            groups = "project-crashpad-admins",
+        ),
     ],
+    logdog = "luci-logdog.appspot.com",
+    milo = "luci-milo.appspot.com",
+    scheduler = "luci-scheduler.appspot.com",
+)
+
+luci.cq(
+    status_host = "chromium-cq-status.appspot.com",
+    submit_max_burst = 4,
+    submit_burst_delay = 8 * time.minute,
+)
+
+luci.cq_group(
+    name = "crashpad",
+    watch = cq.refset(repo = REVIEW_URL, refs = ["refs/heads/.+"]),
+    retry_config = cq.retry_config(
+        single_quota = 1,
+        global_quota = 2,
+        failure_weight = 1,
+        transient_failure_weight = 1,
+        timeout_weight = 2,
+    ),
+    acls = [
+        acl.entry(
+            roles = acl.CQ_COMMITTER,
+            groups = "project-crashpad-tryjob-access",
+        ),
+        acl.entry(
+            roles = acl.CQ_DRY_RUNNER,
+            groups = "project-crashpad-tryjob-access",
+        ),
+    ],
+)
+
+luci.gitiles_poller(
+    name = "master-gitiles-trigger",
+    bucket = "ci",
+    repo = REPO_URL,
+)
+
+luci.logdog(
+    gs_bucket = "chromium-luci-logdog",
+)
+
+luci.milo(
+    logo = "https://storage.googleapis.com/chrome-infra-public/logo/crashpad-logo.svg",
+)
+
+luci.console_view(
+    name = "main",
+    repo = REPO_URL,
+    title = "Crashpad Main Console",
+)
+
+luci.list_view(
+    name = "try",
+    title = "Crashpad Try Builders",
 )
 
 luci.bucket(
@@ -131,8 +197,29 @@
     return properties
 
 def crashpad_builder(platform, cpu, config, bucket):
+    name = "_".join(["crashpad", platform, cpu, config])
+    triggered_by = None
+
+    if bucket == "ci":
+        luci.console_view_entry(
+            builder = "ci/" + name,
+            console_view = "main",
+            short_name = config,
+            category = platform + "|" + cpu,
+        )
+        triggered_by = ["master-gitiles-trigger"]
+    elif bucket == "try":
+        luci.list_view_entry(
+            builder = "try/" + name,
+            list_view = "try",
+        )
+        luci.cq_tryjob_verifier(
+            "try/" + name,
+            cq_group = "crashpad",
+        )
+
     return luci.builder(
-        name = "_".join(["crashpad", platform, cpu, config]),
+        name = name,
         bucket = bucket,
         executable = crashpad_recipe(),
         build_numbers = True,
@@ -140,8 +227,8 @@
         dimensions = crashpad_dimensions(platform, bucket),
         execution_timeout = 3 * time.hour,
         properties = crashpad_properties(platform, cpu, config, bucket),
-        service_account = "crashpad-" + bucket +
-                          "-builder@chops-service-accounts.iam.gserviceaccount.com",
+        service_account = "crashpad-" + bucket + "-builder@chops-service-accounts.iam.gserviceaccount.com",
+        triggered_by = triggered_by,
     )
 
 crashpad_builder("fuchsia", "arm64", "dbg", "ci")