diff --git a/script/lib/util.py b/script/lib/util.py index 933144d95c8ea..55e596ba09840 100644 --- a/script/lib/util.py +++ b/script/lib/util.py @@ -3,7 +3,6 @@ import atexit import contextlib import errno -import hashlib import platform import re import shutil @@ -16,7 +15,7 @@ import os import zipfile -from config import is_verbose_mode, s3_config +from config import is_verbose_mode from env_util import get_vs_env BOTO_DIR = os.path.abspath(os.path.join(__file__, '..', '..', '..', 'vendor', @@ -133,22 +132,6 @@ def make_zip(zip_file_path, files, dirs): for f in filenames: zip_file.write(os.path.join(root, f)) zip_file.close() - upload_zip_sha256_checksum(zip_file_path) - - -def upload_zip_sha256_checksum(zip_file_path): - bucket, access_key, secret_key = s3_config() - checksum_path = '{}.sha256sum'.format(zip_file_path) - safe_unlink(checksum_path) - sha256 = hashlib.sha256() - with open(zip_file_path, 'rb') as f: - sha256.update(f.read()) - - zip_basename = os.path.basename(zip_file_path) - with open(checksum_path, 'w') as checksum: - checksum.write('{} *{}'.format(sha256.hexdigest(), zip_basename)) - s3put(bucket, access_key, secret_key, os.path.dirname(checksum_path), - 'atom-shell/tmp', [checksum_path]) def rm_rf(path): diff --git a/script/merge-electron-checksums.py b/script/merge-electron-checksums.py old mode 100644 new mode 100755 index 7a5be5fe14af0..bab9d97a0c42f --- a/script/merge-electron-checksums.py +++ b/script/merge-electron-checksums.py @@ -12,21 +12,23 @@ from lib.util import boto_path_dirs sys.path.extend(boto_path_dirs()) - from boto.s3.connection import S3Connection + def main(): args = parse_args() + bucket_name, access_key, secret_key = s3_config() s3 = S3Connection(access_key, secret_key) bucket = s3.get_bucket(bucket_name) if bucket is None: print('S3 bucket "{}" does not exist!'.format(bucket_name), file=sys.stderr) return 1 + + prefix = 'atom-shell/tmp/{0}/'.format(args.version) shasums = [s3_object.get_contents_as_string().strip() - for s3_object in bucket.list('atom-shell/tmp/', delimiter='/') - if s3_object.key.endswith('.sha256sum') and - args.version in s3_object.key] + for s3_object in bucket.list(prefix, delimiter='/') + if s3_object.key.endswith('.sha256sum')] print('\n'.join(shasums)) return 0 @@ -37,5 +39,6 @@ def parse_args(): required=True) return parser.parse_args() + if __name__ == '__main__': sys.exit(main()) diff --git a/script/upload.py b/script/upload.py index e41946dffe4ce..8e04f35cc325f 100755 --- a/script/upload.py +++ b/script/upload.py @@ -2,16 +2,17 @@ import argparse import errno -from io import StringIO +import hashlib import os import subprocess import sys import tempfile +from io import StringIO from lib.config import PLATFORM, get_target_arch, get_chromedriver_version, \ - get_platform_key, get_env_var + get_platform_key, get_env_var, s3_config from lib.util import electron_gyp, execute, get_electron_version, \ - parse_version, scoped_cwd + parse_version, scoped_cwd, s3put from lib.github import GitHub @@ -227,6 +228,9 @@ def upload_electron(github, release, file_path): with open(file_path, 'rb') as f: upload_io_to_github(github, release, name, f, 'application/zip') + # Upload the checksum file. + upload_sha256_checksum(release['tag'], file_path) + def upload_io_to_github(github, release, name, io, content_type): params = {'name': name} @@ -235,6 +239,20 @@ def upload_io_to_github(github, release, name, io, content_type): params=params, headers=headers, data=io, verify=False) +def upload_sha256_checksum(version, file_path): + bucket, access_key, secret_key = s3_config() + checksum_path = '{}.sha256sum'.format(file_path) + sha256 = hashlib.sha256() + with open(file_path, 'rb') as f: + sha256.update(f.read()) + + filename = os.path.basename(file_path) + with open(checksum_path, 'w') as checksum: + checksum.write('{} *{}'.format(sha256.hexdigest(), filename)) + s3put(bucket, access_key, secret_key, os.path.dirname(checksum_path), + 'atom-shell/tmp/{0}'.format(version), [checksum_path]) + + def publish_release(github, release_id): data = dict(draft=False) github.repos(ELECTRON_REPO).releases(release_id).patch(data=data)