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

Side by Side Diff: sitescripts/extensions/bin/createNightlies.py

Issue 29733599: Issue 6523 - Update softlink for downloaded builds (Closed) Base URL: https://hg.adblockplus.org/abpssembly/file/f92468d41835
Patch Set: Created March 27, 2018, 10:27 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
« 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
1 # This file is part of the Adblock Plus web scripts, 1 # This file is part of the Adblock Plus web scripts,
2 # Copyright (C) 2006-present eyeo GmbH 2 # Copyright (C) 2006-present eyeo GmbH
3 # 3 #
4 # Adblock Plus is free software: you can redistribute it and/or modify 4 # Adblock Plus is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License version 3 as 5 # it under the terms of the GNU General Public License version 3 as
6 # published by the Free Software Foundation. 6 # published by the Free Software Foundation.
7 # 7 #
8 # Adblock Plus is distributed in the hope that it will be useful, 8 # Adblock Plus is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 config = get_config() 538 config = get_config()
539 iss = config.get('extensions', 'amo_key') 539 iss = config.get('extensions', 'amo_key')
540 secret = config.get('extensions', 'amo_secret') 540 secret = config.get('extensions', 'amo_secret')
541 541
542 url = ('https://addons.mozilla.org/api/v3/addons/{}/' 542 url = ('https://addons.mozilla.org/api/v3/addons/{}/'
543 'versions/{}/').format(app_id, version) 543 'versions/{}/').format(app_id, version)
544 544
545 request = self.generate_jwt_request(iss, secret, url, 'GET') 545 request = self.generate_jwt_request(iss, secret, url, 'GET')
546 response = json.load(urllib2.urlopen(request)) 546 response = json.load(urllib2.urlopen(request))
547 547
548 filename = '{}-{}.xpi'.format(self.basename, version)
549 self.path = os.path.join(
550 config.get('extensions', 'nightliesDirectory'),
551 self.basename,
552 filename
553 )
554
548 necessary = ['passed_review', 'reviewed', 'processed', 'valid'] 555 necessary = ['passed_review', 'reviewed', 'processed', 'valid']
549 if all(response[x] for x in necessary): 556 if all(response[x] for x in necessary):
550 download_url = response['files'][0]['download_url'] 557 download_url = response['files'][0]['download_url']
551 checksum = response['files'][0]['hash'] 558 checksum = response['files'][0]['hash']
552 559
553 filename = '{}-{}.xpi'.format(self.basename, version)
554 file_path = os.path.join(
555 config.get('extensions', 'nightliesDirectory'),
556 self.basename,
557 filename
558 )
559
560 request = self.generate_jwt_request(iss, secret, download_url, 560 request = self.generate_jwt_request(iss, secret, download_url,
561 'GET') 561 'GET')
562 try: 562 try:
563 response = urllib2.urlopen(request) 563 response = urllib2.urlopen(request)
564 except urllib2.HTTPError as e: 564 except urllib2.HTTPError as e:
565 logging.error(e.read()) 565 logging.error(e.read())
566 566
567 # Verify the extension's integrity 567 # Verify the extension's integrity
568 file_content = response.read() 568 file_content = response.read()
569 sha256 = hashlib.sha256(file_content) 569 sha256 = hashlib.sha256(file_content)
570 returned_checksum = '{}:{}'.format(sha256.name, sha256.hexdigest()) 570 returned_checksum = '{}:{}'.format(sha256.name, sha256.hexdigest())
571 571
572 if returned_checksum != checksum: 572 if returned_checksum != checksum:
573 logging.error('Checksum could not be verified: {} vs {}' 573 logging.error('Checksum could not be verified: {} vs {}'
574 ''.format(checksum, returned_checksum)) 574 ''.format(checksum, returned_checksum))
575 575
576 with open(file_path, 'w') as fp: 576 with open(self.path, 'w') as fp:
577 fp.write(file_content) 577 fp.write(file_content)
578 578
579 self.update_link = os.path.join( 579 self.update_link = os.path.join(
580 config.get('extensions', 'nightliesURL'), 580 config.get('extensions', 'nightliesURL'),
581 self.basename, 581 self.basename,
582 filename 582 filename
583 ) 583 )
584 584
585 self.remove_from_downloads_lockfile(self.config.type, 585 self.remove_from_downloads_lockfile(self.config.type,
586 'version', 586 'version',
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 828
829 if self.config.type in downloads: 829 if self.config.type in downloads:
830 try: 830 try:
831 self.copyRepository() 831 self.copyRepository()
832 self.readGeckoMetadata() 832 self.readGeckoMetadata()
833 833
834 for data in download_info[self.config.type]: 834 for data in download_info[self.config.type]:
835 self.version = data['version'] 835 self.version = data['version']
836 836
837 self.download_from_mozilla_addons(**data) 837 self.download_from_mozilla_addons(**data)
838 if os.path.exists(self.path):
839 # write out changelog
840 self.writeChangelog(self.getChanges())
838 841
839 # write out changelog 842 # write update manifest
840 self.writeChangelog(self.getChanges()) 843 self.writeUpdateManifest()
841 844
842 # write update manifest 845 # retire old builds
843 self.writeUpdateManifest() 846 versions = self.retireBuilds()
847 # update index page
848 self.updateIndex(versions)
844 849
845 # retire old builds 850 # Update soft link to latest build
846 versions = self.retireBuilds() 851 baseDir = os.path.join(
847 # update index page 852 self.config.nightliesDirectory, self.basename
848 self.updateIndex(versions) 853 )
854 linkPath = os.path.join(
855 baseDir, '00latest' + self.config.packageSuffix
856 )
857
858 self.symlink_or_copy(self.path, linkPath)
849 finally: 859 finally:
850 # clean up 860 # clean up
851 if self.tempdir: 861 if self.tempdir:
852 shutil.rmtree(self.tempdir, ignore_errors=True) 862 shutil.rmtree(self.tempdir, ignore_errors=True)
853 863
854 864
855 def main(download=False): 865 def main(download=False):
856 """ 866 """
857 main function for createNightlies.py 867 main function for createNightlies.py
858 """ 868 """
(...skipping 20 matching lines...) Expand all
879 889
880 file = open(nightlyConfigFile, 'wb') 890 file = open(nightlyConfigFile, 'wb')
881 nightlyConfig.write(file) 891 nightlyConfig.write(file)
882 892
883 893
884 if __name__ == '__main__': 894 if __name__ == '__main__':
885 parser = argparse.ArgumentParser() 895 parser = argparse.ArgumentParser()
886 parser.add_argument('--download', action='store_true', default=False) 896 parser.add_argument('--download', action='store_true', default=False)
887 args = parser.parse_args() 897 args = parser.parse_args()
888 main(args.download) 898 main(args.download)
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