[nobuildbot] RecreateSKPs

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4836

Change-Id: Idee05a4b1ea909c5dc1de2e9ebc8c2f9631c78e2
Reviewed-on: https://skia-review.googlesource.com/4836
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Ravi Mistry <rmistry@google.com>
diff --git a/infra/bots/gen_tasks.go b/infra/bots/gen_tasks.go
index 62cdc30..ff48b76 100644
--- a/infra/bots/gen_tasks.go
+++ b/infra/bots/gen_tasks.go
@@ -40,7 +40,9 @@
 		"Build-Mac-Clang-arm64-Debug-GN_iOS",
 		"Build-Ubuntu-GCC-x86_64-Release-GN",
 		"Build-Win-Clang-arm64-Release-GN_Android",
+		"Housekeeper-Nightly-RecreateSKPs_Canary",
 		"Housekeeper-PerCommit-InfraTests",
+		"Housekeeper-Weekly-RecreateSKPs",
 		"Perf-Android-Clang-AndroidOne-CPU-MT6582-arm-Debug-GN_Android",
 		"Perf-Android-Clang-AndroidOne-CPU-MT6582-arm-Release-GN_Android",
 		"Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Debug-GN_Android",
@@ -264,8 +266,9 @@
 // dependency.
 func recreateSKPs(b *specs.TasksCfgBuilder, name string) string {
 	b.MustAddTask(name, &specs.TaskSpec{
-		CipdPackages: []*specs.CipdPackage{},
-		Dimensions:   LINUX_GCE_DIMENSIONS,
+		CipdPackages:     []*specs.CipdPackage{},
+		Dimensions:       LINUX_GCE_DIMENSIONS,
+		ExecutionTimeout: 4 * time.Hour,
 		ExtraArgs: []string{
 			"--workdir", "../../..", "swarm_RecreateSKPs",
 			fmt.Sprintf("repository=%s", specs.PLACEHOLDER_REPO),
@@ -280,8 +283,9 @@
 			fmt.Sprintf("patch_issue=%s", specs.PLACEHOLDER_ISSUE),
 			fmt.Sprintf("patch_set=%s", specs.PLACEHOLDER_PATCHSET),
 		},
-		Isolate:  "compile_skia.isolate",
-		Priority: 0.8,
+		IoTimeout: 40 * time.Minute,
+		Isolate:   "compile_skia.isolate",
+		Priority:  0.8,
 	})
 	return name
 }
@@ -548,19 +552,21 @@
 		deps = append(deps, compile(b, name, parts))
 	}
 
-	// Any remaining bots need a compile task.
+	// Most remaining bots need a compile task.
 	compileTaskName := deriveCompileTaskName(name, parts)
 	compileTaskParts, err := jobNameSchema.ParseJobName(compileTaskName)
 	if err != nil {
 		glog.Fatal(err)
 	}
-	// The InfraTests bot doesn't need a compile task.
-	if parts["role"] != "Build" && name != "Housekeeper-PerCommit-InfraTests" {
+	// These bots don't need a compile task.
+	if parts["role"] != "Build" &&
+		name != "Housekeeper-PerCommit-InfraTests" &&
+		!strings.Contains(name, "RecreateSKPs") {
 		compile(b, compileTaskName, compileTaskParts)
 	}
 
 	// Housekeeper.
-	if parts["role"] == "Housekeeper" && name != "Housekeeper-PerCommit-InfraTests" {
+	if parts["role"] == "Housekeeper-PerCommit" {
 		deps = append(deps, housekeeper(b, name, compileTaskName))
 	}
 
@@ -591,10 +597,17 @@
 	}
 
 	// Add the Job spec.
-	b.AddJob(name, &specs.JobSpec{
+	j := &specs.JobSpec{
 		Priority:  0.8,
 		TaskSpecs: deps,
-	})
+	}
+	if name == "Housekeeper-Nightly-RecreateSKPs_Canary" {
+		j.Trigger = "nightly"
+	}
+	if name == "Housekeeper-Weekly-RecreateSKPs" {
+		j.Trigger = "weekly"
+	}
+	b.AddJob(name, j)
 }
 
 // Regenerate the tasks.json file.
diff --git a/infra/bots/tasks.json b/infra/bots/tasks.json
index 3d2cfb8..a54b44a 100644
--- a/infra/bots/tasks.json
+++ b/infra/bots/tasks.json
@@ -66,12 +66,26 @@
         "Build-Win-Clang-arm64-Release-GN_Android"
       ]
     },
+    "Housekeeper-Nightly-RecreateSKPs_Canary": {
+      "priority": 0.8,
+      "tasks": [
+        "Housekeeper-Nightly-RecreateSKPs_Canary"
+      ],
+      "trigger": "nightly"
+    },
     "Housekeeper-PerCommit-InfraTests": {
       "priority": 0.8,
       "tasks": [
         "Housekeeper-PerCommit-InfraTests"
       ]
     },
+    "Housekeeper-Weekly-RecreateSKPs": {
+      "priority": 0.8,
+      "tasks": [
+        "Housekeeper-Weekly-RecreateSKPs"
+      ],
+      "trigger": "weekly"
+    },
     "Perf-Android-Clang-AndroidOne-CPU-MT6582-arm-Debug-GN_Android": {
       "priority": 0.8,
       "tasks": [
@@ -566,6 +580,34 @@
       "isolate": "compile_skia.isolate",
       "priority": 0.8
     },
+    "Housekeeper-Nightly-RecreateSKPs_Canary": {
+      "dimensions": [
+        "cpu:x86-64-avx2",
+        "gpu:none",
+        "os:Ubuntu",
+        "pool:Skia"
+      ],
+      "execution_timeout_ns": 14400000000000,
+      "extra_args": [
+        "--workdir",
+        "../../..",
+        "swarm_RecreateSKPs",
+        "repository=<(REPO)",
+        "buildername=Housekeeper-Nightly-RecreateSKPs_Canary",
+        "mastername=fake-master",
+        "buildnumber=2",
+        "slavename=fake-buildslave",
+        "nobuildbot=True",
+        "swarm_out_dir=${ISOLATED_OUTDIR}",
+        "revision=<(REVISION)",
+        "patch_storage=<(PATCH_STORAGE)",
+        "patch_issue=<(ISSUE)",
+        "patch_set=<(PATCHSET)"
+      ],
+      "io_timeout_ns": 2400000000000,
+      "isolate": "compile_skia.isolate",
+      "priority": 0.8
+    },
     "Housekeeper-PerCommit-InfraTests": {
       "dimensions": [
         "cpu:x86-64-avx2",
@@ -592,6 +634,34 @@
       "isolate": "infra_skia.isolate",
       "priority": 0.8
     },
+    "Housekeeper-Weekly-RecreateSKPs": {
+      "dimensions": [
+        "cpu:x86-64-avx2",
+        "gpu:none",
+        "os:Ubuntu",
+        "pool:Skia"
+      ],
+      "execution_timeout_ns": 14400000000000,
+      "extra_args": [
+        "--workdir",
+        "../../..",
+        "swarm_RecreateSKPs",
+        "repository=<(REPO)",
+        "buildername=Housekeeper-Weekly-RecreateSKPs",
+        "mastername=fake-master",
+        "buildnumber=2",
+        "slavename=fake-buildslave",
+        "nobuildbot=True",
+        "swarm_out_dir=${ISOLATED_OUTDIR}",
+        "revision=<(REVISION)",
+        "patch_storage=<(PATCH_STORAGE)",
+        "patch_issue=<(ISSUE)",
+        "patch_set=<(PATCHSET)"
+      ],
+      "io_timeout_ns": 2400000000000,
+      "isolate": "compile_skia.isolate",
+      "priority": 0.8
+    },
     "Perf-Android-Clang-AndroidOne-CPU-MT6582-arm-Debug-GN_Android": {
       "cipd_packages": [
         {