[ews-build] Enabling uploading EWS archives to S3
https://bugs.webkit.org/show_bug.cgi?id=197914

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/Shared: Added.
* BuildSlaveSupport/Shared/transfer-archive-to-s3: Moved from Tools/BuildSlaveSupport/build.webkit.org-config/transfer-archive-to-s3.
(archiveExists): Replace tab with space.
(main): Added main method.
* BuildSlaveSupport/build.webkit.org-config/steps.py:
(TransferToS3): Updated path to the script.
* BuildSlaveSupport/build.webkit.org-config/transfer-archive-to-s3: Moved to Shared folder.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@245359 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Tools/BuildSlaveSupport/Shared/transfer-archive-to-s3 b/Tools/BuildSlaveSupport/Shared/transfer-archive-to-s3
new file mode 100644
index 0000000..a30ff8a
--- /dev/null
+++ b/Tools/BuildSlaveSupport/Shared/transfer-archive-to-s3
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+import argparse
+import boto3
+import os
+import sys
+
+S3_DEFAULT_BUCKET = 'archives.webkit.org'
+S3_EWS_BUCKET = 'ews-archives.webkit.org'
+S3_MINIFIED_BUCKET = 'minified-archives.webkit.org'
+S3_REGION_PREFIX = 'https://s3-us-west-2.amazonaws.com'
+
+def uploadToS3(archive_path, bucket, identifier, revision):
+    print 'Transferring {} to S3...'.format(archive_path)
+    key = '/'.join([identifier, revision + '.zip'])
+    print '\tS3 Bucket: {}\n\tS3 Key: {}'.format(bucket, key)
+    s3 = boto3.client('s3')
+    s3.upload_file(archive_path, bucket, key)
+    print('\tS3 URL: {}/{}/{}'.format(S3_REGION_PREFIX, bucket, key))
+
+def archiveExists(archive):
+    if archive:
+        if os.path.exists(archive):
+            return True
+        else:
+            print 'WARNING: Archive does not exist: {}'.format(archive)
+            return False
+
+def main():
+    parser = argparse.ArgumentParser(add_help=True)
+
+    group = parser.add_mutually_exclusive_group(required=True)
+    group.add_argument('--revision', action="store", help='Revision number or patch_id for the built archive')
+    group.add_argument('--patch_id', action="store", help='patch_id of the patch')
+
+    parser.add_argument('--identifier', action="store", required=True, help='S3 destination identifier, in the form of fullPlatform-architecture-configuration. [mac-mojave-x86_64-release]')
+    parser.add_argument('--archive', action="store", required=True, help='Path to the full size archive. [path/to/123456.zip]')
+    args = parser.parse_args()
+
+    parentdir, filename = os.path.split(str(args.archive))
+    minifiedArchive = os.path.join(parentdir, 'minified-' + filename)
+
+    s3_bucket = S3_DEFAULT_BUCKET
+    if args.patch_id:
+        s3_bucket = S3_EWS_BUCKET
+
+    if archiveExists(args.archive):
+        uploadToS3(args.archive, s3_bucket, args.identifier, args.revision or args.patch_id)
+    if not args.patch_id and archiveExists(minifiedArchive):
+        uploadToS3(minifiedArchive, S3_MINIFIED_BUCKET, args.identifier, args.revision)
+
+if __name__ == "__main__":
+    main()
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/steps.py b/Tools/BuildSlaveSupport/build.webkit.org-config/steps.py
index 2a0e04e..c27d262 100644
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/steps.py
+++ b/Tools/BuildSlaveSupport/build.webkit.org-config/steps.py
@@ -874,7 +874,7 @@
     minifiedArchive = WithProperties("archives/%(fullPlatform)s-%(architecture)s-%(configuration)s/minified-%(got_revision)s.zip")
     identifier = WithProperties("%(fullPlatform)s-%(architecture)s-%(configuration)s")
     revision = WithProperties("%(got_revision)s")
-    command = ["python", "./transfer-archive-to-s3", "--revision", revision, "--identifier", identifier, "--archive", archive]
+    command = ["python", "../Shared/transfer-archive-to-s3", "--revision", revision, "--identifier", identifier, "--archive", archive]
     haltOnFailure = True
 
     def __init__(self, **kwargs):
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/transfer-archive-to-s3 b/Tools/BuildSlaveSupport/build.webkit.org-config/transfer-archive-to-s3
deleted file mode 100644
index 183952c..0000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/transfer-archive-to-s3
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env python
-import argparse
-import boto3
-import os
-import os.path
-import sys
-
-S3_BUCKET = 'archives.webkit.org'
-S3_MINIFIED_BUCKET = 'minified-archives.webkit.org'
-S3_REGION_PREFIX = 'https://s3-us-west-2.amazonaws.com'
-
-def uploadToS3(archive_path, bucket, identifier, revision):
-    print 'Transferring {} to S3...'.format(archive_path)
-    key = '/'.join([identifier, revision + '.zip'])
-    print '\tS3 Bucket: {}\n\tS3 Key: {}'.format(bucket, key)
-    s3.upload_file(archive_path, bucket, key)
-    print('\tS3 URL: {}/{}/{}'.format(S3_REGION_PREFIX, bucket, key))
-
-def archiveExists(archive):
-    if archive:
-        if os.path.exists(archive):
-	        return True
-        else:
-            print 'WARNING: Archive does not exist: {}'.format(archive)
-            return False
-	
-parser = argparse.ArgumentParser(add_help=True)
-parser.add_argument('--revision', action="store", required=True, help='Revision number for the built archive')
-parser.add_argument('--identifier', action="store", required=True, help='S3 destination identifier, in the form of fullPlatform-architecture-configuration. [mac-sierra-x86_64-release]')
-parser.add_argument('--archive', action="store", required=True, help='Path to the full size archive. [path/to/123456.zip]')
-args = parser.parse_args()
-
-
-head, tail = os.path.split(str(args.archive))
-minifiedArchive = head + '/minified-' + tail
-s3 = boto3.client('s3')
-
-if archiveExists(args.archive):
-    uploadToS3(args.archive, S3_BUCKET, args.identifier, args.revision)
-if archiveExists(minifiedArchive):
-    uploadToS3(minifiedArchive, S3_MINIFIED_BUCKET, args.identifier, args.revision)
\ No newline at end of file
diff --git a/Tools/ChangeLog b/Tools/ChangeLog
index fa2f1d1..547a1b9 100644
--- a/Tools/ChangeLog
+++ b/Tools/ChangeLog
@@ -1,3 +1,18 @@
+2019-05-15  Aakash Jain  <aakash_jain@apple.com>
+
+        [ews-build] Enabling uploading EWS archives to S3
+        https://bugs.webkit.org/show_bug.cgi?id=197914
+
+        Reviewed by Jonathan Bedard.
+
+        * BuildSlaveSupport/Shared: Added.
+        * BuildSlaveSupport/Shared/transfer-archive-to-s3: Moved from Tools/BuildSlaveSupport/build.webkit.org-config/transfer-archive-to-s3.
+        (archiveExists): Replace tab with space.
+        (main): Added main method.
+        * BuildSlaveSupport/build.webkit.org-config/steps.py:
+        (TransferToS3): Updated path to the script.
+        * BuildSlaveSupport/build.webkit.org-config/transfer-archive-to-s3: Moved to Shared folder.
+
 2019-05-15  Wenson Hsieh  <wenson_hsieh@apple.com>
 
         inputmode="numeric" should show a number pad with digits 0-9, instead of the numeric keyplane