Skip to content

Commit

Permalink
Add integrity hash for nightly builds
Browse files Browse the repository at this point in the history
  • Loading branch information
camelid committed May 13, 2020
1 parent 500a21c commit f1e37e2
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions python/servo/package_commands.py
Expand Up @@ -12,6 +12,7 @@
from datetime import datetime
import base64
import hashlib
import io
import json
import os
import os.path as path
Expand Down Expand Up @@ -630,12 +631,33 @@ def upload_to_s3(platform, package, timestamp):
extension = path.splitext(path.basename(package))[1]
latest_upload_key = '{}/servo-latest{}'.format(nightly_dir, extension)

# Compute the hash
SHA_BUF_SIZE = 1048576 # read in 1 MiB chunks
sha256_digest = hashlib.sha256()
with open(package, 'rb') as package_file:
while True:
data = package_file.read(SHA_BUF_SIZE)
if not data:
break
sha256_digest.update(data)
package_hash = sha256_digest.hexdigest()
package_hash_fileobj = io.BytesIO(package_hash)
package_hash_upload_key = '{}/{}.sha256'.format(nightly_dir, filename)
latest_hash_upload_key = '{}/servo-latest{}.sha256'.format(nightly_dir, extension)

s3.upload_file(package, BUCKET, package_upload_key)
s3.upload_fileobj(package_hash_fileobj, BUCKET, package_hash_upload_key)

copy_source = {
'Bucket': BUCKET,
'Key': package_upload_key,
}
copy_source_hash = {
'Bucket': BUCKET,
'Key': package_hash_upload_key,
}
s3.copy(copy_source, BUCKET, latest_upload_key)
s3.copy(copy_source_hash, BUCKET, latest_hash_upload_key)

def update_maven(directory):
(aws_access_key, aws_secret_access_key) = get_s3_secret()
Expand Down

0 comments on commit f1e37e2

Please sign in to comment.