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

Side by Side Diff: tools/release/create_release.py

Issue 2584523002: [release] Make release scripts work without gnumbd (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « no previous file | tools/release/test_scripts.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2015 the V8 project authors. All rights reserved. 2 # Copyright 2015 the V8 project authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import argparse 6 import argparse
7 import os 7 import os
8 import sys 8 import sys
9 import tempfile 9 import tempfile
10 import urllib2 10 import urllib2
11 11
12 from common_includes import * 12 from common_includes import *
13 13
14 class Preparation(Step): 14 class Preparation(Step):
15 MESSAGE = "Preparation." 15 MESSAGE = "Preparation."
16 16
17 def RunStep(self): 17 def RunStep(self):
18 fetchspecs = [ 18 self.Git("fetch origin +refs/heads/*:refs/heads/*")
19 "+refs/heads/*:refs/heads/*",
20 "+refs/pending/*:refs/pending/*",
21 "+refs/pending-tags/*:refs/pending-tags/*",
22 ]
23 self.Git("fetch origin %s" % " ".join(fetchspecs))
24 self.GitCheckout("origin/master") 19 self.GitCheckout("origin/master")
25 self.DeleteBranch("work-branch") 20 self.DeleteBranch("work-branch")
26 21
27 22
28 class PrepareBranchRevision(Step): 23 class PrepareBranchRevision(Step):
29 MESSAGE = "Check from which revision to branch off." 24 MESSAGE = "Check from which revision to branch off."
30 25
31 def RunStep(self): 26 def RunStep(self):
32 self["push_hash"] = (self._options.revision or 27 self["push_hash"] = (self._options.revision or
33 self.GitLog(n=1, format="%H", branch="origin/master")) 28 self.GitLog(n=1, format="%H", branch="origin/master"))
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 changelog_entry = "\n".join(map(Fill80, changelog_entry.splitlines())) 143 changelog_entry = "\n".join(map(Fill80, changelog_entry.splitlines()))
149 changelog_entry = changelog_entry.lstrip() 144 changelog_entry = changelog_entry.lstrip()
150 145
151 if changelog_entry == "": # pragma: no cover 146 if changelog_entry == "": # pragma: no cover
152 self.Die("Empty ChangeLog entry.") 147 self.Die("Empty ChangeLog entry.")
153 148
154 # Safe new change log for adding it later to the candidates patch. 149 # Safe new change log for adding it later to the candidates patch.
155 TextToFile(changelog_entry, self.Config("CHANGELOG_ENTRY_FILE")) 150 TextToFile(changelog_entry, self.Config("CHANGELOG_ENTRY_FILE"))
156 151
157 152
153 class PushBranchRef(Step):
154 MESSAGE = "Create branch ref."
155
156 def RunStep(self):
157 cmd = "push origin %s:refs/heads/%s" % (self["push_hash"], self["version"])
158 if self._options.dry_run:
159 print "Dry run. Command:\ngit %s" % cmd
160 else:
161 self.Git(cmd)
162
163
158 class MakeBranch(Step): 164 class MakeBranch(Step):
159 MESSAGE = "Create the branch." 165 MESSAGE = "Create the branch."
160 166
161 def RunStep(self): 167 def RunStep(self):
162 self.Git("reset --hard origin/master") 168 self.Git("reset --hard origin/master")
163 self.Git("checkout -b work-branch %s" % self["push_hash"]) 169 self.Git("new-branch work-branch --upstream origin/%s" % self["version"])
164 self.GitCheckoutFile(CHANGELOG_FILE, self["latest_version"]) 170 self.GitCheckoutFile(CHANGELOG_FILE, self["latest_version"])
165 self.GitCheckoutFile(VERSION_FILE, self["latest_version"]) 171 self.GitCheckoutFile(VERSION_FILE, self["latest_version"])
166 self.GitCheckoutFile(WATCHLISTS_FILE, self["latest_version"]) 172 self.GitCheckoutFile(WATCHLISTS_FILE, self["latest_version"])
167 173
168 174
169 class AddChangeLog(Step): 175 class AddChangeLog(Step):
170 MESSAGE = "Add ChangeLog changes to release branch." 176 MESSAGE = "Add ChangeLog changes to release branch."
171 177
172 def RunStep(self): 178 def RunStep(self):
173 changelog_entry = FileToText(self.Config("CHANGELOG_ENTRY_FILE")) 179 changelog_entry = FileToText(self.Config("CHANGELOG_ENTRY_FILE"))
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 if not text: # pragma: no cover 222 if not text: # pragma: no cover
217 self.Die("Commit message editing failed.") 223 self.Die("Commit message editing failed.")
218 self["commit_title"] = text.splitlines()[0] 224 self["commit_title"] = text.splitlines()[0]
219 TextToFile(text, self.Config("COMMITMSG_FILE")) 225 TextToFile(text, self.Config("COMMITMSG_FILE"))
220 226
221 self.GitCommit(file_name = self.Config("COMMITMSG_FILE")) 227 self.GitCommit(file_name = self.Config("COMMITMSG_FILE"))
222 os.remove(self.Config("COMMITMSG_FILE")) 228 os.remove(self.Config("COMMITMSG_FILE"))
223 os.remove(self.Config("CHANGELOG_ENTRY_FILE")) 229 os.remove(self.Config("CHANGELOG_ENTRY_FILE"))
224 230
225 231
226 class FixBrokenTag(Step):
227 MESSAGE = "Check for a missing tag and fix that instead."
228
229 def RunStep(self):
230 commit = None
231 try:
232 commit = self.GitLog(
233 n=1, format="%H",
234 grep=self["commit_title"],
235 branch="origin/%s" % self["version"],
236 )
237 except GitFailedException:
238 # In the normal case, the remote doesn't exist yet and git will fail.
239 pass
240 if commit:
241 print "Found %s. Trying to repair tag and bail out." % self["version"]
242 self.Git("tag %s %s" % (self["version"], commit))
243 self.Git("push origin refs/tags/%s" % self["version"])
244 return True
245
246
247 class PushBranch(Step): 232 class PushBranch(Step):
248 MESSAGE = "Push changes." 233 MESSAGE = "Push changes."
249 234
250 def RunStep(self): 235 def RunStep(self):
251 pushspecs = [ 236 cmd = "cl land --bypass-hooks -f"
252 "refs/heads/work-branch:refs/pending/heads/%s" % self["version"],
253 "%s:refs/pending-tags/heads/%s" % (self["push_hash"], self["version"]),
254 "%s:refs/heads/%s" % (self["push_hash"], self["version"]),
255 ]
256 cmd = "push origin %s" % " ".join(pushspecs)
257 if self._options.dry_run: 237 if self._options.dry_run:
258 print "Dry run. Command:\ngit %s" % cmd 238 print "Dry run. Command:\ngit %s" % cmd
259 else: 239 else:
260 self.Git(cmd) 240 self.Git(cmd)
261 241
262 242
263 class TagRevision(Step): 243 class TagRevision(Step):
264 MESSAGE = "Tag the new revision." 244 MESSAGE = "Tag the new revision."
265 245
266 def RunStep(self): 246 def RunStep(self):
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 } 292 }
313 293
314 def _Steps(self): 294 def _Steps(self):
315 return [ 295 return [
316 Preparation, 296 Preparation,
317 PrepareBranchRevision, 297 PrepareBranchRevision,
318 IncrementVersion, 298 IncrementVersion,
319 DetectLastRelease, 299 DetectLastRelease,
320 PrepareChangeLog, 300 PrepareChangeLog,
321 EditChangeLog, 301 EditChangeLog,
302 PushBranchRef,
322 MakeBranch, 303 MakeBranch,
323 AddChangeLog, 304 AddChangeLog,
324 SetVersion, 305 SetVersion,
325 EnableMergeWatchlist, 306 EnableMergeWatchlist,
326 CommitBranch, 307 CommitBranch,
327 FixBrokenTag,
328 PushBranch, 308 PushBranch,
329 TagRevision, 309 TagRevision,
330 CleanUp, 310 CleanUp,
331 ] 311 ]
332 312
333 313
334 if __name__ == "__main__": # pragma: no cover 314 if __name__ == "__main__": # pragma: no cover
335 sys.exit(CreateRelease().Run()) 315 sys.exit(CreateRelease().Run())
OLDNEW
« no previous file with comments | « no previous file | tools/release/test_scripts.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698