Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: slave/skia_slave_scripts/do_auto_roll.py

Issue 648353002: Remove Skia's forked buildbot code (Closed) Base URL: https://skia.googlesource.com/buildbot.git@master
Patch Set: Fix launch_slaves, remove more stuff Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6
7 """Run the Blink AutoRoll bot for Skia."""
8
9
10 import os
11 import re
12 import sys
13
14 from build_step import BuildStep
15 from py.utils import misc
16 from py.utils import shell_utils
17 from slave import slave_utils
18 from utils import gs_utils
19
20 sys.path.append(misc.BUILDBOT_PATH)
21
22 from site_config import skia_vars
23
24
25 DEPS_ROLL_AUTHOR = 'skia-deps-roller@chromium.org'
26 DEPS_ROLL_NAME = 'Skia DEPS Roller'
27 HTML_CONTENT = '''
28 <html>
29 <head>
30 <meta http-equiv="Pragma" content="no-cache">
31 <meta http-equiv="Expires" content="-1">
32 <meta http-equiv="refresh" content="0; url=%s" />
33 </head>
34 </html>
35 '''
36 ISSUE_URL_TEMPLATE = 'https://codereview.chromium.org/%(issue)s/'
37
38 # TODO(borenet): Find a way to share these filenames (or their full GS URL) with
39 # the webstatus which links to them.
40 FILENAME_CURRENT_ATTEMPT = 'depsroll.html'
41 FILENAME_ROLL_STATUS = 'arb_status.html'
42
43 REGEXP_ISSUE_CREATED = (
44 r'Issue created. URL: https://codereview.chromium.org/(?P<issue>\d+)')
45 REGEXP_ROLL_ACTIVE = (
46 r'https://codereview.chromium.org/(?P<issue>\d+)/ is still active')
47 REGEXP_ROLL_STOPPED = (
48 r'https://codereview.chromium.org/(?P<issue>\d+)/: Rollbot was stopped by')
49 # This occurs when the ARB has "caught up" and has nothing new to roll, or when
50 # a different roll (typically a manual roll) has already rolled past it.
51 REGEXP_ROLL_TOO_OLD = r'Already at .+ refusing to roll backwards to .+'
52
53 ROLL_STATUS_IN_PROGRESS = 'In progress - %s' % ISSUE_URL_TEMPLATE
54 ROLL_STATUS_STOPPED = 'Stopped - %s' % ISSUE_URL_TEMPLATE
55 ROLL_STATUS_IDLE = 'Idle'
56
57 ROLL_STATUSES = [
58 (REGEXP_ISSUE_CREATED, ROLL_STATUS_IN_PROGRESS),
59 (REGEXP_ROLL_ACTIVE, ROLL_STATUS_IN_PROGRESS),
60 (REGEXP_ROLL_STOPPED, ROLL_STATUS_STOPPED),
61 (REGEXP_ROLL_TOO_OLD, ROLL_STATUS_IDLE),
62 ]
63
64
65 class AutoRoll(BuildStep):
66 """BuildStep which runs the Blink AutoRoll bot."""
67
68 def _Run(self):
69 chrome_path = os.path.join(os.pardir, 'src')
70 with misc.ChDir(chrome_path):
71 shell_utils.run(['git', 'config', '--local', 'user.name', DEPS_ROLL_NAME])
72 shell_utils.run(['git', 'config', '--local', 'user.email',
73 DEPS_ROLL_AUTHOR])
74
75 auto_roll = os.path.join(misc.BUILDBOT_PATH, 'third_party',
76 'chromium_buildbot_tot', 'scripts', 'tools',
77 'blink_roller', 'auto_roll.py')
78
79 # python auto_roll.py <project> <author> <path to chromium/src>
80 cmd = ['python', auto_roll, 'skia', DEPS_ROLL_AUTHOR, chrome_path]
81
82 exception = None
83 try:
84 output = shell_utils.run(cmd)
85 except shell_utils.CommandFailedException as e:
86 output = e.output
87 # Suppress failure for "refusing to roll backwards."
88 if not re.search(REGEXP_ROLL_TOO_OLD, output):
89 exception = e
90
91 bucket_url = gs_utils.GSUtils.with_gs_prefix(
92 skia_vars.GetGlobalVariable('googlestorage_bucket'))
93
94 match = re.search(REGEXP_ISSUE_CREATED, output)
95 if match:
96 issue = match.group('issue')
97 print 'Found issue #', issue
98 with open(FILENAME_CURRENT_ATTEMPT, 'w') as f:
99 f.write(HTML_CONTENT % (ISSUE_URL_TEMPLATE % {'issue': issue}))
100 slave_utils.GSUtilCopyFile(
101 filename=FILENAME_CURRENT_ATTEMPT,
102 gs_base=bucket_url,
103 subdir=None,
104 gs_acl='public-read')
105
106 roll_status = None
107 for regexp, status_msg in ROLL_STATUSES:
108 match = re.search(regexp, output)
109 if match:
110 roll_status = status_msg % match.groupdict()
111 break
112
113 if roll_status:
114 with open(FILENAME_ROLL_STATUS, 'w') as f:
115 f.write(roll_status)
116 slave_utils.GSUtilCopyFile(
117 filename=FILENAME_ROLL_STATUS,
118 gs_base=bucket_url,
119 subdir=None,
120 gs_acl='public-read')
121
122 #pylint: disable=E0702
123 if exception:
124 raise exception
125
126
127 if '__main__' == __name__:
128 sys.exit(BuildStep.RunBuildStep(AutoRoll))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698