fastlane-plugin-aws_s3 0.2.8 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a564357e8a8e019e078f37befa103359e490e6dd
4
- data.tar.gz: c2d966375d9b81c60809a2e3dad7e701265e3d13
3
+ metadata.gz: a0b71d17903f7045ded444288ab4d579f658b6ae
4
+ data.tar.gz: 9e8cc661d91204fcdbdffbbed76d08c68ae4d49d
5
5
  SHA512:
6
- metadata.gz: 6193e0f2667f0a03e8c85ffb63bd502f8c4fdbaeb48f017f95b484a9915d1f012f54a53fbdc94035ec704b41ec39ed7f6258ba6a599a433d1012405bb71303e1
7
- data.tar.gz: eba0b2bb6dd4d989308ab957a7663e654da84432a80daa408d5dba9fd0600097d4a03238b941c8ab9cf56b79da3604657be2f532b5883dd2dea79e5cd6b3f805
6
+ metadata.gz: 31ee79f8b36a294738077cfca68ff75057065b9cfe134651dbd54df2683d5fa9281ebdef51ac2a4f7058b3b5d134e8a3d2840e282956605491c61a54e3b9d314
7
+ data.tar.gz: 40d0bd830b8c6c34d152fe5016137a82b19e4866035f77e30b5d04f07f90f7702a0ae3139ecc787e0bd12fe4a6b37af1b99f3b6862d51d0c9af70936f89e43bf
data/README.md CHANGED
@@ -32,10 +32,13 @@ You can also customize a lot of options:
32
32
  ```ruby
33
33
  aws_s3(
34
34
  # All of these are used to make Shenzhen's `ipa distribute:s3` command
35
- access_key: ENV['S3_ACCESS_KEY'], # Required from user.
36
- secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], # Required from user.
35
+ access_key: ENV['S3_ACCESS_KEY'], # Required from user (unless using aws_profile).
36
+ secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], # Required from user (unless using aws_profile).
37
+ aws_profile: ENV['AWS_PROFILE'] # Required from user (unless using access_key and secret_access_key)
37
38
  bucket: ENV['S3_BUCKET'], # Required from user.
38
39
  region: ENV['S3_REGION'], # Required from user.
40
+ acl: ENV['S3_ACL'], # Optional - defaults to 'public-read'
41
+ server_side_encryption: ENV['S3_SERVER_SIDE_ENCRYPTION'] # Optional
39
42
 
40
43
  endpoint: 'https://s3-us-west-1.amazonaws.com', # Optional, for buckets that require a specific endpoint
41
44
  ipa: 'AppName.ipa', # Required (if not uploading an APK).
@@ -57,6 +57,8 @@
57
57
  <a href="<%= apk_url %>" id="text" class="btn btn-lg btn-default" onclick="document.getElementById('finished').id = '';">
58
58
  Install <%= title %> <%= version_name %> (<%= version_code %>)
59
59
  </a>
60
+ <br>
61
+ <p>Built on <%= Date.today.strftime('%a, %e %b %Y %H:%M %p') %></p>
60
62
  </span>
61
63
 
62
64
  <!-- <span class="download" id="android">
@@ -57,6 +57,8 @@
57
57
  <a href="itms-services://?action=download-manifest&url=<%= url_encode(plist_url) %>" id="text" class="btn btn-lg btn-default" onclick="document.getElementById('finished').id = '';">
58
58
  Install <%= title %> <%= bundle_version %> (<%= build_num %>)
59
59
  </a>
60
+ <br>
61
+ <p>Built on <%= Date.today.strftime('%a, %e %b %Y %H:%M %p') %></p>
60
62
  </span>
61
63
 
62
64
  <!-- <span class="download" id="android">
@@ -3,6 +3,7 @@ require 'fastlane/erb_template_helper'
3
3
  include ERB::Util
4
4
  require 'ostruct'
5
5
  require 'cgi'
6
+ require 'mime-types'
6
7
 
7
8
  module Fastlane
8
9
  module Actions
@@ -25,11 +26,13 @@ module Fastlane
25
26
  params[:dsym] = config[:dsym]
26
27
  params[:access_key] = config[:access_key]
27
28
  params[:secret_access_key] = config[:secret_access_key]
29
+ params[:aws_profile] = config[:aws_profile]
28
30
  params[:bucket] = config[:bucket]
29
31
  params[:endpoint] = config[:endpoint]
30
32
  params[:region] = config[:region]
31
33
  params[:app_directory] = config[:app_directory]
32
34
  params[:acl] = config[:acl]
35
+ params[:server_side_encryption] = config[:server_side_encryption]
33
36
  params[:source] = config[:source]
34
37
  params[:path] = config[:path]
35
38
  params[:upload_metadata] = config[:upload_metadata]
@@ -38,6 +41,7 @@ module Fastlane
38
41
  params[:html_template_path] = config[:html_template_path]
39
42
  params[:html_file_name] = config[:html_file_name]
40
43
  params[:skip_html_upload] = config[:skip_html_upload]
44
+ params[:html_in_folder] = config[:html_in_folder]
41
45
  params[:version_template_path] = config[:version_template_path]
42
46
  params[:version_file_name] = config[:version_file_name]
43
47
 
@@ -45,6 +49,7 @@ module Fastlane
45
49
  s3_region = params[:region]
46
50
  s3_access_key = params[:access_key]
47
51
  s3_secret_access_key = params[:secret_access_key]
52
+ s3_profile = params[:aws_profile]
48
53
  s3_bucket = params[:bucket]
49
54
  s3_endpoint = params[:endpoint]
50
55
  apk_file = params[:apk]
@@ -52,17 +57,25 @@ module Fastlane
52
57
  dsym_file = params[:dsym]
53
58
  s3_path = params[:path]
54
59
  acl = params[:acl].to_sym
60
+ server_side_encryption = params[:server_side_encryption]
55
61
 
56
- UI.user_error!("No S3 access key given, pass using `access_key: 'key'`") unless s3_access_key.to_s.length > 0
57
- UI.user_error!("No S3 secret access key given, pass using `secret_access_key: 'secret key'`") unless s3_secret_access_key.to_s.length > 0
62
+ unless s3_profile
63
+ UI.user_error!("No S3 access key given, pass using `access_key: 'key'` (or use `aws_profile: 'profile'`)") unless s3_access_key.to_s.length > 0
64
+ UI.user_error!("No S3 secret access key given, pass using `secret_access_key: 'secret key'` (or use `aws_profile: 'profile'`)") unless s3_secret_access_key.to_s.length > 0
65
+ end
58
66
  UI.user_error!("No S3 bucket given, pass using `bucket: 'bucket'`") unless s3_bucket.to_s.length > 0
59
67
  UI.user_error!("No IPA or APK file path given, pass using `ipa: 'ipa path'` or `apk: 'apk path'`") if ipa_file.to_s.length == 0 && apk_file.to_s.length == 0
60
68
  UI.user_error!("Please only give IPA path or APK path (not both)") if ipa_file.to_s.length > 0 && apk_file.to_s.length > 0
61
69
 
62
70
  require 'aws-sdk'
71
+ if s3_profile
72
+ creds = Aws::SharedCredentials.new(profile_name: s3_profile);
73
+ else
74
+ creds = Aws::Credentials.new(s3_access_key, s3_secret_access_key)
75
+ end
63
76
  Aws.config.update({
64
77
  region: s3_region,
65
- credentials: Aws::Credentials.new(s3_access_key, s3_secret_access_key)
78
+ credentials: creds
66
79
  })
67
80
 
68
81
  s3_client = if s3_endpoint
@@ -71,13 +84,13 @@ module Fastlane
71
84
  Aws::S3::Client.new
72
85
  end
73
86
 
74
- upload_ipa(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, ipa_file, dsym_file, s3_path, acl) if ipa_file.to_s.length > 0
75
- upload_apk(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, apk_file, s3_path, acl) if apk_file.to_s.length > 0
87
+ upload_ipa(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, ipa_file, dsym_file, s3_path, acl, server_side_encryption) if ipa_file.to_s.length > 0
88
+ upload_apk(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, apk_file, s3_path, acl, server_side_encryption) if apk_file.to_s.length > 0
76
89
 
77
90
  return true
78
91
  end
79
92
 
80
- def self.upload_ipa(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, ipa_file, dsym_file, s3_path, acl)
93
+ def self.upload_ipa(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, ipa_file, dsym_file, s3_path, acl, server_side_encryption)
81
94
 
82
95
  s3_path = "v{CFBundleShortVersionString}_b{CFBundleVersion}/" unless s3_path
83
96
 
@@ -87,6 +100,7 @@ module Fastlane
87
100
  plist_file_name = params[:plist_file_name]
88
101
  html_template_path = params[:html_template_path]
89
102
  html_file_name = params[:html_file_name]
103
+ generate_html_in_folder = params[:html_in_folder]
90
104
  version_template_path = params[:version_template_path]
91
105
  version_file_name = params[:version_file_name]
92
106
 
@@ -96,7 +110,7 @@ module Fastlane
96
110
  ipa_file_name = "#{url_part}#{ipa_file_basename}"
97
111
  ipa_file_data = File.open(ipa_file, 'rb')
98
112
 
99
- ipa_url = self.upload_file(s3_client, s3_bucket, app_directory, ipa_file_name, ipa_file_data, acl)
113
+ ipa_url = self.upload_file(s3_client, s3_bucket, app_directory, ipa_file_name, ipa_file_data, acl, server_side_encryption)
100
114
 
101
115
  # Setting action and environment variables
102
116
  Actions.lane_context[SharedValues::S3_IPA_OUTPUT_PATH] = ipa_url
@@ -107,7 +121,7 @@ module Fastlane
107
121
  dsym_file_name = "#{url_part}#{dsym_file_basename}"
108
122
  dsym_file_data = File.open(dsym_file, 'rb')
109
123
 
110
- dsym_url = self.upload_file(s3_client, s3_bucket, app_directory, dsym_file_name, dsym_file_data, acl)
124
+ dsym_url = self.upload_file(s3_client, s3_bucket, app_directory, dsym_file_name, dsym_file_data, acl, server_side_encryption)
111
125
 
112
126
  # Setting action and environment variables
113
127
  Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH] = dsym_url
@@ -164,7 +178,7 @@ module Fastlane
164
178
  # plist uploading
165
179
  #
166
180
  #####################################
167
- plist_url = self.upload_file(s3_client, s3_bucket, app_directory, plist_file_name, plist_render, acl)
181
+ plist_url = self.upload_file(s3_client, s3_bucket, app_directory, plist_file_name, plist_render, acl, server_side_encryption)
168
182
 
169
183
  # Creates html from template
170
184
  if html_template_path && File.exist?(html_template_path)
@@ -202,11 +216,11 @@ module Fastlane
202
216
  # html uploading
203
217
  #
204
218
  #####################################
205
-
219
+
206
220
  skip_html = params[:skip_html_upload]
207
-
208
- html_url = self.upload_file(s3_client, s3_bucket, app_directory, html_file_name, html_render, acl) unless skip_html
209
- version_url = self.upload_file(s3_client, s3_bucket, app_directory, version_file_name, version_render, acl)
221
+ html_file_name = "#{url_part}#{html_file_name}" if generate_html_in_folder
222
+ html_url = self.upload_file(s3_client, s3_bucket, app_directory, html_file_name, html_render, acl, server_side_encryption) unless skip_html
223
+ version_url = self.upload_file(s3_client, s3_bucket, app_directory, version_file_name, version_render, acl, server_side_encryption)
210
224
 
211
225
  # Setting action and environment variables
212
226
  Actions.lane_context[SharedValues::S3_PLIST_OUTPUT_PATH] = plist_url
@@ -217,14 +231,14 @@ module Fastlane
217
231
 
218
232
  Actions.lane_context[SharedValues::S3_VERSION_OUTPUT_PATH] = version_url
219
233
  ENV[SharedValues::S3_VERSION_OUTPUT_PATH.to_s] = version_url
220
-
221
- self.upload_source(s3_client, params, s3_bucket, params[:source], s3_path, acl)
234
+
235
+ self.upload_source(s3_client, params, s3_bucket, params[:source], s3_path, acl, server_side_encryption)
222
236
 
223
237
  UI.success("Successfully uploaded ipa file to '#{Actions.lane_context[SharedValues::S3_IPA_OUTPUT_PATH]}'")
224
238
  UI.success("iOS app can be downloaded at '#{Actions.lane_context[SharedValues::S3_HTML_OUTPUT_PATH]}'") unless skip_html
225
239
  end
226
240
 
227
- def self.upload_apk(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, apk_file, s3_path, acl)
241
+ def self.upload_apk(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, apk_file, s3_path, acl, server_side_encryption)
228
242
  version = get_apk_version(apk_file)
229
243
 
230
244
  version_code = version[0]
@@ -237,6 +251,7 @@ module Fastlane
237
251
 
238
252
  html_template_path = params[:html_template_path]
239
253
  html_file_name = params[:html_file_name]
254
+ generate_html_in_folder = params[:html_in_folder]
240
255
  version_template_path = params[:version_template_path]
241
256
  version_file_name = params[:version_file_name]
242
257
 
@@ -246,7 +261,7 @@ module Fastlane
246
261
  apk_file_name = "#{url_part}#{apk_file_basename}"
247
262
  apk_file_data = File.open(apk_file, 'rb')
248
263
 
249
- apk_url = self.upload_file(s3_client, s3_bucket, app_directory, apk_file_name, apk_file_data, acl)
264
+ apk_url = self.upload_file(s3_client, s3_bucket, app_directory, apk_file_name, apk_file_data, acl, server_side_encryption)
250
265
 
251
266
  # Setting action and environment variables
252
267
  Actions.lane_context[SharedValues::S3_APK_OUTPUT_PATH] = apk_url
@@ -300,11 +315,11 @@ module Fastlane
300
315
  # html and plist uploading
301
316
  #
302
317
  #####################################
303
-
304
- skip_html = params[:skip_html_upload]
305
318
 
306
- html_url = self.upload_file(s3_client, s3_bucket, app_directory, html_file_name, html_render, acl) unless skip_html
307
- version_url = self.upload_file(s3_client, s3_bucket, app_directory, version_file_name, version_render, acl)
319
+ skip_html = params[:skip_html_upload]
320
+ html_file_name = "#{url_part}#{html_file_name}" if generate_html_in_folder
321
+ html_url = self.upload_file(s3_client, s3_bucket, app_directory, html_file_name, html_render, acl, server_side_encryption) unless skip_html
322
+ version_url = self.upload_file(s3_client, s3_bucket, app_directory, version_file_name, version_render, acl, server_side_encryption)
308
323
 
309
324
  Actions.lane_context[SharedValues::S3_HTML_OUTPUT_PATH] = html_url unless skip_html
310
325
  ENV[SharedValues::S3_HTML_OUTPUT_PATH.to_s] = html_url unless skip_html
@@ -312,33 +327,33 @@ module Fastlane
312
327
  Actions.lane_context[SharedValues::S3_VERSION_OUTPUT_PATH] = version_url
313
328
  ENV[SharedValues::S3_VERSION_OUTPUT_PATH.to_s] = version_url
314
329
 
315
- self.upload_source(s3_client, params, s3_bucket, params[:source], s3_path, acl)
316
-
330
+ self.upload_source(s3_client, params, s3_bucket, params[:source], s3_path, acl, server_side_encryption)
331
+
317
332
  UI.success("Successfully uploaded apk file to '#{Actions.lane_context[SharedValues::S3_APK_OUTPUT_PATH]}'")
318
333
  UI.success("Android app can be downloaded at '#{Actions.lane_context[SharedValues::S3_HTML_OUTPUT_PATH]}'") unless skip_html
319
334
  end
320
-
321
- def self.upload_source(s3_client, params, s3_bucket, source_directory, s3_path, acl)
335
+
336
+ def self.upload_source(s3_client, params, s3_bucket, source_directory, s3_path, acl, server_side_encryption)
322
337
  if source_directory && File.directory?(source_directory)
323
338
  source_directory = File.absolute_path source_directory
324
339
  output_file_path = Tempfile.new('aws_s3_source').path
325
-
340
+
326
341
  output_file_path = other_action.zip(
327
342
  path: source_directory,
328
343
  output_path: output_file_path.gsub(/(?<!.zip)$/, ".zip")
329
344
  )
330
-
345
+
331
346
  s3_path = "#{version_code}_#{version_name}/" unless s3_path
332
347
  app_directory = params[:app_directory]
333
348
  url_part = s3_path
334
349
  zip_file_name = "#{url_part}source.zip"
335
-
350
+
336
351
  output_path_data = File.open("#{output_file_path}", 'rb')
337
- source_url = self.upload_file(s3_client, s3_bucket, app_directory, zip_file_name, output_path_data, acl)
338
-
352
+ source_url = self.upload_file(s3_client, s3_bucket, app_directory, zip_file_name, output_path_data, acl, server_side_encryption)
353
+
339
354
  Actions.lane_context[SharedValues::S3_SOURCE_OUTPUT_PATH] = source_url
340
355
  ENV[SharedValues::S3_SOURCE_OUTPUT_PATH.to_s] = source_url
341
-
356
+
342
357
  UI.success("Source can be downloaded at '#{Actions.lane_context[SharedValues::S3_SOURCE_OUTPUT_PATH]}'")
343
358
  end
344
359
  end
@@ -381,18 +396,21 @@ module Fastlane
381
396
  [versionCode, versionName, name]
382
397
  end
383
398
 
384
- def self.upload_file(s3_client, bucket_name, app_directory, file_name, file_data, acl)
399
+ def self.upload_file(s3_client, bucket_name, app_directory, file_name, file_data, acl, server_side_encryption)
385
400
 
386
401
  if app_directory
387
402
  file_name = "#{app_directory}/#{file_name}"
388
403
  end
389
404
 
390
405
  bucket = Aws::S3::Bucket.new(bucket_name, client: s3_client)
391
- obj = bucket.put_object({
406
+ details = {
392
407
  acl: acl,
393
408
  key: file_name,
394
- body: file_data
395
- })
409
+ body: file_data,
410
+ content_type: MIME::Types.type_for(File.extname(file_name)).first.to_s
411
+ }
412
+ details = details.merge(server_side_encryption: server_side_encryption) if server_side_encryption.length > 0
413
+ obj = bucket.put_object(details)
396
414
 
397
415
  # When you enable versioning on a S3 bucket,
398
416
  # writing to an object will create an object version
@@ -478,6 +496,12 @@ module Fastlane
478
496
  optional: true,
479
497
  default_value: false,
480
498
  is_string: false),
499
+ FastlaneCore::ConfigItem.new(key: :html_in_folder,
500
+ env_name: "",
501
+ description: "move the uploaded html file into the version folder",
502
+ optional: true,
503
+ default_value: false,
504
+ is_string: false),
481
505
  FastlaneCore::ConfigItem.new(key: :version_template_path,
482
506
  env_name: "",
483
507
  description: "version erb template path",
@@ -496,12 +520,17 @@ module Fastlane
496
520
  description: "AWS Secret Access Key ",
497
521
  optional: true,
498
522
  default_value: ENV['AWS_SECRET_ACCESS_KEY']),
523
+ FastlaneCore::ConfigItem.new(key: :aws_profile,
524
+ env_name: "S3_PROFILE",
525
+ description: "AWS profile to use for credentials",
526
+ optional: true,
527
+ default_value: ENV['AWS_PROFILE']),
499
528
  FastlaneCore::ConfigItem.new(key: :bucket,
500
529
  env_name: "S3_BUCKET",
501
530
  description: "AWS bucket name",
502
531
  optional: true,
503
532
  default_value: ENV['AWS_BUCKET_NAME']),
504
- FastlaneCore::ConfigItem.new(key: :region,
533
+ FastlaneCore::ConfigItem.new(key: :region,
505
534
  env_name: "S3_REGION",
506
535
  description: "AWS region (for bucket creation) ",
507
536
  optional: true,
@@ -522,14 +551,18 @@ module Fastlane
522
551
  env_name: "S3_ACL",
523
552
  description: "Uploaded object permissions e.g public_read (default), private, public_read_write, authenticated_read ",
524
553
  optional: true,
525
- default_value: "public-read"
526
- ),
554
+ default_value: "public-read"),
555
+ FastlaneCore::ConfigItem.new(key: :server_side_encryption,
556
+ env_name: "S3_SERVER_SIDE_ENCRYPTION",
557
+ description: "Enable encryption of the uploaded S3 object (set it to 'AES256' for example)",
558
+ optional: true,
559
+ default_value: ""),
527
560
  FastlaneCore::ConfigItem.new(key: :endpoint,
528
561
  env_name: "S3_ENDPOINT",
529
562
  description: "The base endpoint for your S3 bucket",
530
563
  optional: true,
531
564
  default_value: nil
532
- ),
565
+ ),
533
566
  ]
534
567
  end
535
568
 
@@ -14,8 +14,7 @@ module Fastlane
14
14
  #
15
15
  require "erb"
16
16
  def self.load(template_name)
17
- path = "#{Helper.gem_path('fastlane-plugin-aws_s3')}/lib/assets/#{template_name}.erb"
18
- puts "path #{path}"
17
+ path = "#{gem_path('fastlane-plugin-aws_s3')}/lib/assets/#{template_name}.erb"
19
18
  load_from_path(path)
20
19
  end
21
20
 
@@ -29,6 +28,19 @@ module Fastlane
29
28
  def self.render(template, template_vars_hash)
30
29
  Fastlane::ErbalT.new(template_vars_hash).render(template)
31
30
  end
31
+
32
+ #
33
+ # Taken from https://github.com/fastlane/fastlane/blob/f0dd4d0f4ecc74d9f7f62e0efc33091d975f2043/fastlane_core/lib/fastlane_core/helper.rb#L248-L259
34
+ # Unsure best other way to do this so using this logic for now since its deprecated in fastlane proper
35
+ #
36
+ def self.gem_path(gem_name)
37
+ if !Helper.is_test? and Gem::Specification.find_all_by_name(gem_name).any?
38
+ return Gem::Specification.find_by_name(gem_name).gem_dir
39
+ else
40
+ return './'
41
+ end
42
+ end
43
+
32
44
  end
33
45
  end
34
46
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module AwsS3
3
- VERSION = "0.2.8"
3
+ VERSION = "1.0.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-aws_s3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Holtz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-19 00:00:00.000000000 Z
11
+ date: 2017-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mime-types
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.1'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: pry
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -131,9 +145,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
145
  version: '0'
132
146
  requirements: []
133
147
  rubyforge_project:
134
- rubygems_version: 2.5.1
148
+ rubygems_version: 2.5.2
135
149
  signing_key:
136
150
  specification_version: 4
137
151
  summary: Upload IPA and APK to S3
138
152
  test_files: []
139
- has_rdoc: