Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: releaseAutomation.py

Issue 29562599: Issue 5751 - Removing legacy gecko support (Closed)
Patch Set: Rebase against current master ( 489:293593da6033 ) Created Oct. 10, 2017, 9:25 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 # This Source Code Form is subject to the terms of the Mozilla Public 1 # This Source Code Form is subject to the terms of the Mozilla Public
2 # License, v. 2.0. If a copy of the MPL was not distributed with this 2 # License, v. 2.0. If a copy of the MPL was not distributed with this
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4 4
5 from __future__ import print_function 5 from __future__ import print_function
6 6
7 import os 7 import os
8 import re 8 import re
9 import codecs 9 import codecs
10 import subprocess 10 import subprocess
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 if repo_has_outgoing(): 111 if repo_has_outgoing():
112 return continue_with_outgoing() 112 return continue_with_outgoing()
113 return True 113 return True
114 114
115 115
116 def run(baseDir, type, version, keyFile, downloadsRepo): 116 def run(baseDir, type, version, keyFile, downloadsRepo):
117 if not can_safely_release(baseDir, downloadsRepo): 117 if not can_safely_release(baseDir, downloadsRepo):
118 print('Aborting release.') 118 print('Aborting release.')
119 return 1 119 return 1
120 120
121 if type == 'gecko': 121 if type == 'safari':
122 import buildtools.packagerGecko as packager
123 elif type == 'safari':
124 import buildtools.packagerSafari as packager 122 import buildtools.packagerSafari as packager
125 elif type == 'edge': 123 elif type == 'edge':
126 import buildtools.packagerEdge as packager 124 import buildtools.packagerEdge as packager
127 elif type == 'chrome': 125 elif type == 'chrome':
128 import buildtools.packagerChrome as packager 126 import buildtools.packagerChrome as packager
129 127
130 # Replace version number in metadata file "manually", ConfigParser will mess 128 # Replace version number in metadata file "manually", ConfigParser will mess
131 # up the order of lines. 129 # up the order of lines.
132 metadata = readMetadata(baseDir, type) 130 metadata = readMetadata(baseDir, type)
133 with open(metadata.option_source('general', 'version'), 'r+b') as file: 131 with open(metadata.option_source('general', 'version'), 'r+b') as file:
134 rawMetadata = file.read() 132 rawMetadata = file.read()
135 rawMetadata = re.sub( 133 rawMetadata = re.sub(
136 r'^(\s*version\s*=\s*).*', r'\g<1>%s' % version, 134 r'^(\s*version\s*=\s*).*', r'\g<1>%s' % version,
137 rawMetadata, flags=re.I | re.M 135 rawMetadata, flags=re.I | re.M
138 ) 136 )
139 137
140 file.seek(0) 138 file.seek(0)
141 file.write(rawMetadata) 139 file.write(rawMetadata)
142 file.truncate() 140 file.truncate()
143 141
144 # Read extension name from locale data 142 # Read extension name from locale data
145 import buildtools.packagerGecko as packagerGecko 143 default_locale_path = os.path.join('_locales', packager.defaultLocale,
146 if type == 'gecko': 144 'messages.json')
147 locales_base = baseDir 145 with open(default_locale_path, 'r') as fp:
148 else: 146 extensionName = json.load(fp)['name']
149 # This is somewhat of a hack but reading out locale import config here w ould be too much
150 locales_base = os.path.join(baseDir, 'adblockplus')
151
152 locales = packagerGecko.readLocaleMetadata(locales_base, [packagerGecko.defa ultLocale])
153 extensionName = locales[packagerGecko.defaultLocale]['name']
154 147
155 # Now commit the change and tag it 148 # Now commit the change and tag it
156 subprocess.check_call(['hg', 'commit', '-R', baseDir, '-m', 'Releasing %s %s ' % (extensionName, version)]) 149 subprocess.check_call(['hg', 'commit', '-R', baseDir, '-m', 'Releasing %s %s ' % (extensionName, version)])
157 tag_name = version 150 tag_name = version
158 if type in {'safari', 'edge'}: 151 if type in {'safari', 'edge'}:
159 tag_name = '{}-{}'.format(tag_name, type) 152 tag_name = '{}-{}'.format(tag_name, type)
160 subprocess.check_call(['hg', 'tag', '-R', baseDir, '-f', tag_name]) 153 subprocess.check_call(['hg', 'tag', '-R', baseDir, '-f', tag_name])
161 154
162 # Create a release build 155 # Create a release build
163 downloads = [] 156 downloads = []
164 if type == 'gecko': 157 if type == 'chrome':
165 buildPath = os.path.join(downloadsRepo, getDefaultFileName(metadata, ver sion, 'xpi'))
166 packager.createBuild(baseDir, type=type, outFile=buildPath, releaseBuild =True)
167 downloads.append(buildPath)
168 elif type == 'chrome':
169 # Create both signed and unsigned Chrome builds (the latter for Chrome W eb Store). 158 # Create both signed and unsigned Chrome builds (the latter for Chrome W eb Store).
170 buildPath = os.path.join(downloadsRepo, getDefaultFileName(metadata, ver sion, 'crx')) 159 buildPath = os.path.join(downloadsRepo, getDefaultFileName(metadata, ver sion, 'crx'))
171 packager.createBuild(baseDir, type=type, outFile=buildPath, releaseBuild =True, keyFile=keyFile) 160 packager.createBuild(baseDir, type=type, outFile=buildPath, releaseBuild =True, keyFile=keyFile)
172 downloads.append(buildPath) 161 downloads.append(buildPath)
173 162
174 buildPathUnsigned = os.path.join(baseDir, getDefaultFileName(metadata, v ersion, 'zip')) 163 buildPathUnsigned = os.path.join(baseDir, getDefaultFileName(metadata, v ersion, 'zip'))
175 packager.createBuild(baseDir, type=type, outFile=buildPathUnsigned, rele aseBuild=True, keyFile=None) 164 packager.createBuild(baseDir, type=type, outFile=buildPathUnsigned, rele aseBuild=True, keyFile=None)
176 elif type == 'safari': 165 elif type == 'safari':
177 buildPath = os.path.join(downloadsRepo, getDefaultFileName(metadata, ver sion, 'safariextz')) 166 buildPath = os.path.join(downloadsRepo, getDefaultFileName(metadata, ver sion, 'safariextz'))
178 packager.createBuild(baseDir, type='safari', outFile=buildPath, releaseB uild=True, keyFile=keyFile) 167 packager.createBuild(baseDir, type='safari', outFile=buildPath, releaseB uild=True, keyFile=keyFile)
179 downloads.append(buildPath) 168 downloads.append(buildPath)
180 elif type == 'edge': 169 elif type == 'edge':
181 # We only offer the Edge extension for use through the Windows Store 170 # We only offer the Edge extension for use through the Windows Store
182 buildPath = os.path.join(downloadsRepo, getDefaultFileName(metadata, ver sion, 'appx')) 171 buildPath = os.path.join(downloadsRepo, getDefaultFileName(metadata, ver sion, 'appx'))
183 packager.createBuild(baseDir, type=type, outFile=buildPath, releaseBuild =True) 172 packager.createBuild(baseDir, type=type, outFile=buildPath, releaseBuild =True)
184 downloads.append(buildPath) 173 downloads.append(buildPath)
185 174
186 # Create source archive 175 # Create source archive
187 archivePath = os.path.splitext(buildPath)[0] + '-source.tgz' 176 archivePath = os.path.splitext(buildPath)[0] + '-source.tgz'
188 create_sourcearchive(baseDir, archivePath) 177 create_sourcearchive(baseDir, archivePath)
189 downloads.append(archivePath) 178 downloads.append(archivePath)
190 179
191 # Now add the downloads and commit 180 # Now add the downloads and commit
192 subprocess.check_call(['hg', 'add', '-R', downloadsRepo] + downloads) 181 subprocess.check_call(['hg', 'add', '-R', downloadsRepo] + downloads)
193 subprocess.check_call(['hg', 'commit', '-R', downloadsRepo, '-m', 'Releasing %s %s' % (extensionName, version)]) 182 subprocess.check_call(['hg', 'commit', '-R', downloadsRepo, '-m', 'Releasing %s %s' % (extensionName, version)])
194 183
195 # Push all changes 184 # Push all changes
196 subprocess.check_call(['hg', 'push', '-R', baseDir]) 185 subprocess.check_call(['hg', 'push', '-R', baseDir])
197 subprocess.check_call(['hg', 'push', '-R', downloadsRepo]) 186 subprocess.check_call(['hg', 'push', '-R', downloadsRepo])
OLDNEW
« build.py ('K') | « packagerGecko.py ('k') | templates/bootstrap.js.tmpl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld