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

Side by Side Diff: buildbucket.py

Issue 1164363003: Add script for triggering Buildbucket builds (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 5 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2015 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 """Tool for scheduling builds on Buildbucket.
sheyang 2015/06/08 22:02:13 I guess there'll be a follow-up CL to make "git cl
smut 2015/06/08 22:16:46 Potentially.
7
8 Usage:
9 $ depot-tools-auth login https://cr-buildbucket.appspot.com
10 $ buildbucket.py \
11 --builder my-builder \
12 --bucket master.chromium.tryserver.linux \
sheyang 2015/06/08 22:02:13 master.tryserver.chromium.linux
smut 2015/06/08 22:16:46 Done.
13
14 Schedules a build on buildbucket for my-builder on chromium.tryserver.linux.
15 """
16
17 import argparse
18 import json
19 import urlparse
20 import os
21 import sys
22
23 from third_party import httplib2
24
25 import auth
26
27
28 BUILDBUCKET_URL = 'https://cr-buildbucket.appspot.com'
29 PUT_BUILD_URL = urlparse.urljoin(
30 BUILDBUCKET_URL,
31 '_ah/api/buildbucket/v1/builds',
32 )
33
34
35 def main(argv):
36 parser = argparse.ArgumentParser()
nodir 2015/06/08 21:46:15 Please make it buildbucket put --bucket ..... in
smut 2015/06/08 22:16:47 Done.
37 parser.add_argument(
38 '-m',
sheyang 2015/06/08 22:02:13 The combination ('-m' and '--bucket') seems strang
smut 2015/06/08 22:16:46 -m for master because -b was taken. added --master
39 '--bucket',
40 help='The bucket to schedule the build on. Typically the master name.',
sheyang 2015/06/08 22:02:13 I would give an example such as 'master.tryserver.
smut 2015/06/08 22:16:47 Done.
41 required=True,
42 )
43 parser.add_argument(
44 '-b',
45 '--builder-name',
46 help='The builder to schedule the build on.',
47 required=True,
48 )
49 parser.add_argument(
50 '-p',
51 '--properties',
52 help='A file to load a JSON dict of properties from.',
53 )
54 parser.add_argument(
55 '-v',
56 '--verbose',
57 action='store_true',
58 )
59 args = parser.parse_args()
60
61 properties = {
62 'category': os.path.basename(argv[0]),
63 'reason': os.path.basename(argv[0]),
nodir 2015/06/08 21:46:15 "buildbucket.py" is not a good category or reason.
smut 2015/06/08 22:16:46 I've seen "CQ" as the category and reason, so I th
64 }
65 if args.properties:
66 with open(args.properties) as fp:
67 properties.update(json.load(fp))
nodir 2015/06/08 21:46:15 Add exception handling with meaningful explanation
smut 2015/06/08 22:16:46 Exception is pretty clear: ValueError: No JSON obj
68
69 authenticator = auth.get_authenticator_for_host(
70 BUILDBUCKET_URL,
71 auth.make_auth_config(use_oauth2=True),
72 )
73 http = authenticator.authorize(httplib2.Http())
74 http.force_exception_to_status_code = True
75 response, content = http.request(
76 PUT_BUILD_URL,
77 'PUT',
78 body=json.dumps({
79 'bucket': args.bucket,
80 'parameters_json': json.dumps({
81 'builder_name': args.builder_name,
82 'properties': properties,
83 }),
84 }),
85 headers={'Content-Type': 'application/json'},
86 )
87
88 if args.verbose:
89 print content
90
91 return response.status != 200
nodir 2015/06/08 21:46:15 It should return an int, not boolean, no?
smut 2015/06/08 22:16:46 Doesn't really matter. int(False) is 0, int(True)
92
93
94 if __name__ == '__main__':
95 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698