Add desugar bot, enable triggering it with tools/trigger.py --desugar
Change-Id: Iaac47454f8c290ec25fa21d2a857f9091ae26e49
diff --git a/infra/config/global/cr-buildbucket.cfg b/infra/config/global/cr-buildbucket.cfg
index 10a7426..8ec67d2 100644
--- a/infra/config/global/cr-buildbucket.cfg
+++ b/infra/config/global/cr-buildbucket.cfg
@@ -127,6 +127,18 @@
}
}
+ # This builder is only triggered manually to build and archive maven
+ # artifacts for the desugared library.
+ builders {
+ name: "archive_lib_desugar"
+ priority: 25
+ mixins: "linux"
+ execution_timeout_secs: 3600 # 1h
+ recipe {
+ properties: "archive:True"
+ properties: "sdk_desugar:True"
+ }
+ }
builders {
name: "linux"
mixins: "linux"
diff --git a/infra/config/global/luci-milo.cfg b/infra/config/global/luci-milo.cfg
index 42ee7f0..3f0af99 100644
--- a/infra/config/global/luci-milo.cfg
+++ b/infra/config/global/luci-milo.cfg
@@ -81,6 +81,11 @@
short_name: "win"
}
builders {
+ name: "buildbucket/luci.r8.ci/archive_lib_desugar"
+ category: "archive_desugar"
+ short_name: "sdk_desugar"
+ }
+ builders {
name: "buildbucket/luci.r8.ci/archive_release"
category: "release archive"
short_name: "archive"
diff --git a/infra/config/global/luci-scheduler.cfg b/infra/config/global/luci-scheduler.cfg
index 525bb2e..1150d18 100644
--- a/infra/config/global/luci-scheduler.cfg
+++ b/infra/config/global/luci-scheduler.cfg
@@ -43,6 +43,12 @@
}
trigger {
+ id: "desugar_library_trigger"
+ acl_sets: "default"
+ triggers: "archive_lib_desugar"
+}
+
+trigger {
id: "branch-gitiles-trigger"
acl_sets: "default"
gitiles: {
@@ -94,6 +100,20 @@
}
job {
+ id: "archive_lib_desugar"
+ acl_sets: "default"
+ triggering_policy: {
+ max_concurrent_invocations: 1
+ max_batch_size: 1
+ }
+ buildbucket {
+ server: "cr-buildbucket.appspot.com"
+ bucket: "luci.r8.ci"
+ builder: "archive_lib_desugar"
+ }
+}
+
+job {
id: "linux"
acl_sets: "default"
triggering_policy: {
diff --git a/tools/git_utils.py b/tools/git_utils.py
index bd1694e..72485e1 100644
--- a/tools/git_utils.py
+++ b/tools/git_utils.py
@@ -11,8 +11,9 @@
utils.PrintCmd(cmd)
return subprocess.check_call(cmd)
-def GetHeadRevision(checkout_dir):
- cmd = ['git', 'rev-parse', 'HEAD']
+def GetHeadRevision(checkout_dir, use_master=False):
+ revision_from = 'origin/master' if use_master else 'HEAD'
+ cmd = ['git', 'rev-parse', revision_from]
utils.PrintCmd(cmd)
- with ChangedWorkingDirectory(checkout_dir):
+ with utils.ChangedWorkingDirectory(checkout_dir):
return subprocess.check_output(cmd).strip()
diff --git a/tools/trigger.py b/tools/trigger.py
index 1a33795..5ce6a42 100755
--- a/tools/trigger.py
+++ b/tools/trigger.py
@@ -6,6 +6,7 @@
# Convenience script for triggering bots on specific commits.
import json
+import git_utils
import optparse
import os
import re
@@ -21,6 +22,8 @@
# triggers: "BUILDER_NAME"
TRIGGERS_RE = r'^ triggers: "(\w.*)"'
+DESUGAR_BOT = 'archive_lib_desugar'
+
def ParseOptions():
result = optparse.OptionParser()
result.add_option('--release',
@@ -30,10 +33,14 @@
help='Run the specified cl on the bots. This should be '
'the full url, e.g., '
'https://r8-review.googlesource.com/c/r8/+/37420/1')
+ result.add_option('--desugar',
+ help='Run the library desugar and archiving bot.',
+ default=False, action='store_true')
result.add_option('--builder', help='Trigger specific builder')
return result.parse_args()
def get_builders():
+
is_release = False
master_builders = []
release_builders = []
@@ -51,6 +58,9 @@
else:
assert 'release' not in builder
master_builders.append(builder)
+ assert DESUGAR_BOT in master_builders
+ print 'Desugar builder:\n ' + DESUGAR_BOT
+ master_builders.remove(DESUGAR_BOT)
print 'Master builders:\n ' + '\n '.join(master_builders)
print 'Release builders:\n ' + '\n '.join(release_builders)
return (master_builders, release_builders)
@@ -74,7 +84,7 @@
def Main():
(options, args) = ParseOptions()
- if len(args) != 1 and not options.cl:
+ if len(args) != 1 and not options.cl and not options.desugar:
print 'Takes exactly one argument, the commit to run'
return 1
@@ -82,13 +92,21 @@
print 'You can\'t run cls on the release bots'
return 1
- commit = None if options.cl else args[0]
+ if options.cl and options.desugar:
+ print 'You can\'t run cls on the desugar bot'
+ return 1
+
+ commit = None if (options.cl or options.desugar) else args[0]
(master_builders, release_builders) = get_builders()
builders = release_builders if options.release else master_builders
if options.builder:
builder = options.builder
assert builder in master_builders or builder in release_builders
builders = [options.builder]
+ if options.desugar:
+ builders = [DESUGAR_BOT]
+ trigger_builders(
+ builders, git_utils.GetHeadRevision(utils.REPO_ROOT, use_master=True))
if options.cl:
trigger_cl(builders, options.cl)
else: