def upload_file_to_s3(file_path, s3_filename, content_type="text/html", extra_message=None): """ Uploads a file to bokeh-travis s3 bucket. """ conn = connect_to_s3() upload = conn is not None try: with open(file_path, "rb") as f: contents = f.read() except OSError: fail("Upload was requested but file %s was not available." % file_path) upload = False if __version__.endswith("-dirty"): fail("Uploads are not permitted when working directory is dirty.") fail("Make sure that __version__ doesn't contain -dirty suffix.") upload = False if upload: bucket = conn.get_bucket(S3_BUCKET) key = S3Key(bucket, s3_filename) key.set_metadata("Content-Type", content_type) key.set_contents_from_string(contents, policy="public-read") url = join(S3_URL, s3_filename) if extra_message is not None: ok("%s | Access upload at: %s" % (extra_message, url)) else: trace("Access upload at: %s" % url)