fastlane-plugin-polidea 2.1.1.pre.2 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -13
  3. data/lib/fastlane/plugin/polidea.rb +4 -0
  4. data/lib/fastlane/plugin/polidea/actions/fota_mail.rb +13 -3
  5. data/lib/fastlane/plugin/polidea/actions/fota_s3.rb +36 -29
  6. data/lib/fastlane/plugin/polidea/actions/release_notes.rb +1 -1
  7. data/lib/fastlane/plugin/polidea/actions/release_notes_from_commits.rb +54 -0
  8. data/lib/fastlane/plugin/polidea/helper/page_generator.rb +28 -56
  9. data/lib/fastlane/plugin/polidea/helper/qr_generator.rb +7 -42
  10. data/lib/fastlane/plugin/polidea/version.rb +1 -1
  11. data/templates/install.erb +238 -0
  12. data/{lib/fastlane/plugin/polidea/templates/download.erb → templates/mail.erb} +18 -23
  13. metadata +7 -107
  14. data/lib/fastlane/plugin/polidea/actions/extract_app_icon.rb +0 -172
  15. data/lib/fastlane/plugin/polidea/actions/extract_app_name.rb +0 -100
  16. data/lib/fastlane/plugin/polidea/actions/extract_version.rb +0 -106
  17. data/lib/fastlane/plugin/polidea/actions/get_binary_size.rb +0 -57
  18. data/lib/fastlane/plugin/polidea/templates/images/cover-shuttle.jpg +0 -0
  19. data/lib/fastlane/plugin/polidea/templates/images/icon-placeholder.png +0 -0
  20. data/lib/fastlane/plugin/polidea/templates/images/polidea-logo.png +0 -0
  21. data/lib/fastlane/plugin/polidea/templates/images/social-behance.png +0 -0
  22. data/lib/fastlane/plugin/polidea/templates/images/social-dribbble.png +0 -0
  23. data/lib/fastlane/plugin/polidea/templates/images/social-facebook.png +0 -0
  24. data/lib/fastlane/plugin/polidea/templates/images/social-github.png +0 -0
  25. data/lib/fastlane/plugin/polidea/templates/images/social-instagram.png +0 -0
  26. data/lib/fastlane/plugin/polidea/templates/images/social-linkedin.png +0 -0
  27. data/lib/fastlane/plugin/polidea/templates/images/social-twitter.png +0 -0
  28. data/lib/fastlane/plugin/polidea/templates/installation-page/css/installation-page.css +0 -4895
  29. data/lib/fastlane/plugin/polidea/templates/installation-page/css/installation-page.css.map +0 -7
  30. data/lib/fastlane/plugin/polidea/templates/installation-page/img/bg.png +0 -0
  31. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg.jpg +0 -0
  32. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1024.jpg +0 -0
  33. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1280.jpg +0 -0
  34. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1360.jpg +0 -0
  35. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1440.jpg +0 -0
  36. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1680.jpg +0 -0
  37. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_768.jpg +0 -0
  38. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_ipad_1024.jpg +0 -0
  39. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_ipad_768.jpg +0 -0
  40. data/lib/fastlane/plugin/polidea/templates/installation-page/img/logo.svg +0 -32
  41. data/lib/fastlane/plugin/polidea/templates/installation-page/img/logo_square.svg +0 -12
  42. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation.min.js +0 -10
  43. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.abide.js +0 -294
  44. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.accordion.js +0 -65
  45. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.alert.js +0 -43
  46. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.clearing.js +0 -558
  47. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.dropdown.js +0 -313
  48. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.equalizer.js +0 -74
  49. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.interchange.js +0 -344
  50. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.joyride.js +0 -915
  51. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.js +0 -625
  52. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.magellan.js +0 -189
  53. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.offcanvas.js +0 -139
  54. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.orbit.js +0 -472
  55. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.reveal.js +0 -443
  56. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.slider.js +0 -231
  57. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.tab.js +0 -167
  58. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.tooltip.js +0 -298
  59. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.topbar.js +0 -436
  60. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/aes.js +0 -35
  61. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/enc-base64-min.js +0 -8
  62. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/fastclick.js +0 -9
  63. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/jquery.cookie.js +0 -8
  64. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/jquery.js +0 -26
  65. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/modernizr.js +0 -8
  66. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/pbkdf2.js +0 -19
  67. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/placeholder.js +0 -2
  68. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/fonts.scss +0 -64
  69. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation.scss +0 -45
  70. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/_functions.scss +0 -101
  71. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/_settings.scss +0 -1441
  72. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_accordion.scss +0 -156
  73. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_alert-boxes.scss +0 -126
  74. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_block-grid.scss +0 -132
  75. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_breadcrumbs.scss +0 -132
  76. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_button-groups.scss +0 -200
  77. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_buttons.scss +0 -252
  78. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_clearing.scss +0 -247
  79. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_dropdown-buttons.scss +0 -129
  80. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_dropdown.scss +0 -248
  81. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_flex-video.scss +0 -51
  82. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_forms.scss +0 -570
  83. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_global.scss +0 -447
  84. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_grid.scss +0 -275
  85. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_icon-bar.scss +0 -293
  86. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_inline-lists.scss +0 -57
  87. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_joyride.scss +0 -222
  88. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_keystrokes.scss +0 -61
  89. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_labels.scss +0 -105
  90. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_magellan.scss +0 -34
  91. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_offcanvas.scss +0 -510
  92. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_orbit.scss +0 -368
  93. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_pagination.scss +0 -162
  94. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_panels.scss +0 -93
  95. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_pricing-tables.scss +0 -150
  96. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_progress-bars.scss +0 -79
  97. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_range-slider.scss +0 -168
  98. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_reveal.scss +0 -220
  99. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_side-nav.scss +0 -116
  100. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_split-buttons.scss +0 -191
  101. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_sub-nav.scss +0 -125
  102. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_switches.scss +0 -226
  103. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tables.scss +0 -135
  104. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tabs.scss +0 -123
  105. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_thumbs.scss +0 -66
  106. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_toolbar.scss +0 -70
  107. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tooltips.scss +0 -142
  108. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_top-bar.scss +0 -676
  109. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_type.scss +0 -523
  110. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_visibility.scss +0 -408
  111. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/installation-page.scss +0 -171
  112. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/normalize.scss +0 -425
  113. data/lib/fastlane/plugin/polidea/templates/installation_template.erb +0 -54
  114. data/lib/fastlane/plugin/polidea/templates/mailgun_template.erb +0 -1257
  115. data/lib/fastlane/plugin/polidea/templates/secure_installation_template.erb +0 -130
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b817ef56a2d3c03e980bf3c68a5c09fc2a6365f786af6fc95d8e375c23ced5d7
4
- data.tar.gz: a87da6f05e6ff0a604ab8fa8901c81ab9e7c533a27e90884e02730b1ef004993
3
+ metadata.gz: 47c06814e51a640fb88049a4cfc3f5ab117b6a7e4a7998fad230acf2cb4e36c2
4
+ data.tar.gz: 295b9efce8dda96c0a86366052b96934303fe3aadebda7e7aef28aec880fd170
5
5
  SHA512:
6
- metadata.gz: 8c54f04a635869d2cf94c12bd504fe28c788e4e59ee7562cdeca2ddb8522f7cbcdda36d7b24be9d49968b18458eedc5e37bec73593c6fce951d689371308b6ab
7
- data.tar.gz: 711cf3b038f6136cbadee2b3c24975e5c2edc7dd698b050c14785ccc637b9497042d0b1ce81e15d59bd5d902c9cbd65ebbba8f5596d9ce14ee2aad6d7c6fb7d4
6
+ metadata.gz: 12749757a7e39a57565db274c5c98145beec26cccc97d1fbde01c29bb76e2089a71392580e87d6863baf3b1e243fbd7ab092dc57813f36d0d5169d156c05bca6
7
+ data.tar.gz: 96257d4d5193d777c73622d576012e016e9d7b4192a87bcbba4f1c166feea9f4db32d8bf5817121996855fc4ba1151ff3593bf7684207f7182ef70701fde7f36
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # fastlane-plugin-polidea
2
2
 
3
- [![build status](https://gitlab.polidea.com/CICD/fastlane-plugin-polidea/badges/master/pipeline.svg)](https://gitlab.polidea.com/CICD/fastlane-plugin-polidea/pipelines)
3
+ [![build status](https://gitlab.polidea.com/Shuttle/fastlane-plugin-polidea/badges/master/pipeline.svg)](https://gitlab.polidea.com/Shuttle/fastlane-plugin-polidea/pipelines)
4
4
  [![Gem](https://img.shields.io/gem/v/fastlane-plugin-polidea.svg?style=flat)](http://rubygems.org/gems/fastlane-plugin-polidea)
5
5
 
6
6
 
@@ -15,14 +15,13 @@ fastlane add_plugin polidea
15
15
  ## Available actions
16
16
 
17
17
  Plugin contains following actions:
18
- - `extract_app_name`: Extracts application name from .apk/.ipa
19
- - `extract_app_icon`: Extracts largest icon from .ipa/.apk
20
- - `extract_version`: Extracts app version and build number from .ipa/.apk
21
- - `get_binary_size`: Measures binary size in bytes
22
- - `s3`: Custom version of s3 action with Polidea's installation page
18
+ - `extract_app_info`: Extracts application name, icon, version, binary size from .apk/.ipa
19
+ - `release_notes`: Extracts release notes from git tag message
20
+ - `fota_s3`: Custom version of s3 action with Polidea's installation page
23
21
  - `fota_mail`: Custom version of mailgun action with Polidea's mail template
22
+ - `shuttle`: Upload new app to Shuttle
24
23
 
25
- See more details [here](https://gitlab2.polidea.com/CI/fastlane-plugin-polidea/blob/master/docs/Actions.md).
24
+ See more details [here](./docs/Actions.md).
26
25
  To list all available actions run:
27
26
  ```bash
28
27
  fastlane actions
@@ -33,13 +32,10 @@ fastlane actions
33
32
  ```ruby
34
33
  lane :deploy do
35
34
  (some actions that produces .ipa/.apk)
36
- extract_app_name
37
- extract_app_icon
38
- extract_version
39
- get_binary_size
40
- s3
35
+ extract_app_info
36
+ fota_s3
41
37
  fota_mail(
42
- to: "piotr.dubiel@polidea.com"
38
+ to: "hey@polidea.com"
43
39
  )
44
40
  end
45
41
  ```
@@ -13,6 +13,10 @@ module Fastlane
13
13
  @session_id ||= SecureRandom.uuid
14
14
  @session ||= Analytics.new(@session_id)
15
15
  end
16
+
17
+ def self.root
18
+ File.expand_path('../../..', __dir__)
19
+ end
16
20
  end
17
21
  end
18
22
 
@@ -1,4 +1,3 @@
1
- # rubocop:disable Metrics/MethodLength
2
1
  require 'redcarpet'
3
2
  require 'fastlane/erb_template_helper'
4
3
 
@@ -118,7 +117,7 @@ module Fastlane
118
117
 
119
118
  def self.qr_code(installation_link)
120
119
  qr_code_path = "/tmp/qr_code.png"
121
- QRGenerator.new(installation_link, false, ::ChunkyPNG::Color.rgb(21, 18, 126)).generate(qr_code_path)
120
+ QRGenerator.new(installation_link, ::ChunkyPNG::Color.rgb(21, 18, 126)).generate(qr_code_path)
122
121
  File.new(qr_code_path)
123
122
  end
124
123
 
@@ -130,7 +129,7 @@ module Fastlane
130
129
  https://api.mailgun.net/v3/#{sandbox_domain}/messages \
131
130
  -F from='#{options[:from]} <#{options[:postmaster]}>' \
132
131
  -F to='#{options[:to]}' \
133
- -F subject='#{options[:app_name]} #{options[:app_version]} (#{options[:build_number]}) for #{options[:platform]} is ready to install' \
132
+ -F subject='#{options[:app_name]} #{options[:app_version]} (#{options[:build_number]}) for #{human_platform(options[:platform])} is ready to install' \
134
133
  --form-string html=#{Shellwords.escape(body)} \ """ + options[:inline].map { |file| "-F inline=@#{file.path}" }.join(" "), print_command: false, print_command_output: false
135
134
 
136
135
  return body
@@ -171,6 +170,17 @@ module Fastlane
171
170
  )
172
171
  premailer.to_inline_css
173
172
  end
173
+
174
+ def self.human_platform(platform)
175
+ case platform
176
+ when :ios
177
+ "iOS"
178
+ when :android
179
+ "Android"
180
+ else
181
+ platform.to_s
182
+ end
183
+ end
174
184
  end
175
185
  end
176
186
  end
@@ -1,5 +1,4 @@
1
1
  # rubocop:disable Metrics/AbcSize
2
- # rubocop:disable Metrics/MethodLength
3
2
  # rubocop:disable Metrics/ClassLength
4
3
  require 'fastlane/erb_template_helper'
5
4
  require 'ostruct'
@@ -12,22 +11,12 @@ module Fastlane
12
11
  S3_DSYM_OUTPUT_PATH = :S3_DSYM_OUTPUT_PATH
13
12
  S3_PLIST_OUTPUT_PATH = :S3_PLIST_OUTPUT_PATH
14
13
  S3_APK_OUTPUT_PATH = :S3_APK_OUTPUT_PATH
14
+ S3_MAPPING_OUTPUT_PATH = :S3_MAPPING_OUTPUT_PATH
15
15
  S3_HTML_OUTPUT_PATH = :S3_HTML_OUTPUT_PATH
16
16
  S3_VERSION_OUTPUT_PATH = :S3_VERSION_OUTPUT_PATH
17
17
  S3_ICON_OUTPUT_PATH = :S3_ICON_OUTPUT_PATH
18
18
  end
19
19
 
20
- S3_ARGS_MAP = {
21
- ipa: '-f',
22
- dsym: '-d',
23
- access_key: '-a',
24
- secret_access_key: '-s',
25
- bucket: '-b',
26
- region: '-r',
27
- acl: '--acl',
28
- path: '-P'
29
- }
30
-
31
20
  class FotaS3Action < Action
32
21
  def self.run(config)
33
22
  Fastlane::Polidea.session.action_launched("fota_s3", config)
@@ -40,6 +29,7 @@ module Fastlane
40
29
  params[:apk] = config[:apk]
41
30
  params[:icon] = config[:icon]
42
31
  params[:dsym] = config[:dsym]
32
+ params[:mapping] = config[:mapping]
43
33
  params[:access_key] = config[:access_key]
44
34
  params[:secret_access_key] = config[:secret_access_key]
45
35
  params[:bucket] = config[:bucket]
@@ -52,7 +42,6 @@ module Fastlane
52
42
  params[:version_template_path] = config[:version_template_path]
53
43
  params[:version_file_name] = config[:version_file_name]
54
44
  params[:acl] = config[:acl]
55
- params[:installation_password] = config[:installation_password]
56
45
  params[:release_notes] = config[:release_notes]
57
46
  params[:treat_bucket_as_domain_name] = config[:treat_bucket_as_domain_name]
58
47
 
@@ -78,7 +67,6 @@ module Fastlane
78
67
  icon_file = params[:icon]
79
68
  dsym_file = params[:dsym]
80
69
  acl = params[:acl]
81
- installation_password = params[:installation_password]
82
70
  release_notes = params[:release_notes]
83
71
  treat_bucket_as_domain_name = params[:treat_bucket_as_domain_name]
84
72
 
@@ -121,9 +109,7 @@ module Fastlane
121
109
 
122
110
  dsym_url = self.upload_file(bucket, dsym_file_name, dsym_file_data, acl, treat_bucket_as_domain_name)
123
111
 
124
- # Setting action and environment variables
125
- Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH] = dsym_url
126
- ENV[SharedValues::S3_DSYM_OUTPUT_PATH.to_s] = dsym_url
112
+ dsym_file_data.close
127
113
  end
128
114
 
129
115
  if params[:upload_metadata] == false
@@ -169,7 +155,6 @@ module Fastlane
169
155
  # Creates html from template
170
156
  html_render = PageGenerator.installation_page({
171
157
  url: "itms-services://?action=download-manifest&url=#{URI.encode_www_form_component(plist_url)}",
172
- installation_password: installation_password,
173
158
  app_version: bundle_version,
174
159
  build_number: build_number,
175
160
  app_name: app_name,
@@ -224,6 +209,11 @@ module Fastlane
224
209
  ENV[SharedValues::S3_ICON_OUTPUT_PATH.to_s] = icon_url
225
210
  UI.success("Successfully uploaded icon file to '#{Actions.lane_context[SharedValues::S3_ICON_OUTPUT_PATH]}'")
226
211
  end
212
+ if dsym_url
213
+ Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH] = dsym_url
214
+ ENV[SharedValues::S3_DSYM_OUTPUT_PATH.to_s] = dsym_url
215
+ UI.success("Successfully uploaded dsym file to '#{Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH]}'")
216
+ end
227
217
  end
228
218
 
229
219
  def self.upload_android(params)
@@ -234,8 +224,8 @@ module Fastlane
234
224
  s3_bucket = params[:bucket]
235
225
  apk_file = params[:apk]
236
226
  icon_file = params[:icon]
227
+ mapping_file = params[:mapping]
237
228
  acl = params[:acl]
238
- installation_password = params[:installation_password]
239
229
  release_notes = params[:release_notes]
240
230
  treat_bucket_as_domain_name = params[:treat_bucket_as_domain_name]
241
231
 
@@ -266,9 +256,23 @@ module Fastlane
266
256
  Actions.lane_context[SharedValues::S3_APK_OUTPUT_PATH] = apk_url
267
257
  ENV[SharedValues::S3_APK_OUTPUT_PATH.to_s] = apk_url
268
258
 
259
+ if mapping_file
260
+ mapping_file_basename = File.basename(mapping_file)
261
+ mapping_file_name = "#{url_part}#{mapping_file_basename}"
262
+ mapping_file_data = File.open(mapping_file, 'rb')
263
+
264
+ mapping_url = self.upload_file(bucket, mapping_file_name, mapping_file_data, acl, treat_bucket_as_domain_name)
265
+
266
+ # Setting action and environment variables
267
+ Actions.lane_context[SharedValues::S3_MAPPING_OUTPUT_PATH] = mapping_url
268
+ ENV[SharedValues::S3_MAPPING_OUTPUT_PATH.to_s] = mapping_url
269
+
270
+ mapping_file_data.close
271
+ end
272
+
269
273
  #####################################
270
274
  #
271
- # html and plist building
275
+ # html building
272
276
  #
273
277
  #####################################
274
278
 
@@ -283,7 +287,6 @@ module Fastlane
283
287
  # Creates html from template
284
288
  html_render = PageGenerator.installation_page({
285
289
  url: apk_url,
286
- installation_password: installation_password,
287
290
  app_version: app_version,
288
291
  build_number: build_number,
289
292
  app_name: app_name,
@@ -306,6 +309,9 @@ module Fastlane
306
309
  ENV[SharedValues::S3_ICON_OUTPUT_PATH.to_s] = icon_url
307
310
  UI.success("Successfully uploaded icon file to '#{Actions.lane_context[SharedValues::S3_ICON_OUTPUT_PATH]}'")
308
311
  end
312
+ if mapping_url
313
+ UI.success("Successfully uploaded mapping file to '#{Actions.lane_context[SharedValues::S3_MAPPING_OUTPUT_PATH]}'")
314
+ end
309
315
  end
310
316
 
311
317
  def self.validate(params)
@@ -446,19 +452,24 @@ module Fastlane
446
452
  [
447
453
  FastlaneCore::ConfigItem.new(key: :ipa,
448
454
  env_name: "",
449
- description: ".ipa file for the build ",
455
+ description: ".ipa file for the build",
450
456
  optional: true,
451
457
  default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]),
452
458
  FastlaneCore::ConfigItem.new(key: :dsym,
453
459
  env_name: "",
454
- description: "zipped .dsym package for the build ",
460
+ description: "zipped .dsym package for the build",
455
461
  optional: true,
456
462
  default_value: Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH]),
457
463
  FastlaneCore::ConfigItem.new(key: :apk,
458
464
  env_name: "",
459
- description: ".apk file for the build ",
465
+ description: ".apk file for the build",
460
466
  optional: true,
461
467
  default_value: Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]),
468
+ FastlaneCore::ConfigItem.new(key: :mapping,
469
+ env_name: "",
470
+ description: "The path to the mapping.txt file",
471
+ optional: true,
472
+ default_value: Actions.lane_context[SharedValues::GRADLE_MAPPING_TXT_OUTPUT_PATH]),
462
473
  FastlaneCore::ConfigItem.new(key: :icon,
463
474
  env_name: "",
464
475
  description: "app icon file to upload",
@@ -515,11 +526,6 @@ module Fastlane
515
526
  description: "Uploaded object permissions e.g public_read (default), private, public_read_write, authenticated_read ",
516
527
  optional: true,
517
528
  default_value: "public-read"),
518
- FastlaneCore::ConfigItem.new(key: :installation_password,
519
- env_name: "INSTALLATION_PASSWORD",
520
- description: "Password for installation page",
521
- optional: true,
522
- default_value: nil),
523
529
  FastlaneCore::ConfigItem.new(key: :release_notes,
524
530
  env_name: "S3_RELEASE_NOTES",
525
531
  description: "Release notes",
@@ -540,6 +546,7 @@ module Fastlane
540
546
  ['S3_DSYM_OUTPUT_PATH', 'Direct HTTP link to the uploaded dsym file'],
541
547
  ['S3_PLIST_OUTPUT_PATH', 'Direct HTTP link to the uploaded plist file'],
542
548
  ['S3_APK_OUTPUT_PATH', 'Direct HTTP link to the uploaded apk file'],
549
+ ['S3_MAPPING_OUTPUT_PATH', 'Direct HTTP link to the uploaded mapping.txt file'],
543
550
  ['S3_HTML_OUTPUT_PATH', 'Direct HTTP link to the uploaded HTML file'],
544
551
  ['S3_VERSION_OUTPUT_PATH', 'Direct HTTP link to the uploaded Version file'],
545
552
  ['S3_ICON_OUTPUT_PATH', 'Direct HTTP link to the uploaded icon file']
@@ -21,7 +21,7 @@ module Fastlane
21
21
  end
22
22
 
23
23
  def self.description
24
- "Extracts release notes from git tag messages"
24
+ "Extracts release notes from git tag message"
25
25
  end
26
26
 
27
27
  def self.output
@@ -0,0 +1,54 @@
1
+ module Fastlane
2
+ module Actions
3
+ module SharedValues
4
+ RELEASE_NOTES = :RELEASE_NOTES
5
+ end
6
+
7
+ class ReleaseNotesFromCommitsAction < Action
8
+ def self.run(config)
9
+ Fastlane::Polidea.session.action_launched("release_notes_from_commits", config)
10
+
11
+ current_version = config[:current_version]
12
+ previous_version = sh("git describe --abbrev=0 --tags #{current_version}^").strip
13
+ messages = sh("git log --oneline --pretty=format:'%s' #{previous_version}..#{current_version} | grep -Ev '^Merge'").strip
14
+ release_notes = messages.split("\n").map { |note| "- #{note}" }.join("\n")
15
+
16
+ UI.success "Extracted release notes:\n#{release_notes}"
17
+ Actions.lane_context[SharedValues::RELEASE_NOTES] = release_notes
18
+ ENV[SharedValues::RELEASE_NOTES.to_s] = release_notes
19
+
20
+ Fastlane::Polidea.session.action_completed("release_notes_from_commits")
21
+
22
+ release_notes
23
+ end
24
+
25
+ def self.description
26
+ "Extracts release notes from git commit messages since last tag"
27
+ end
28
+
29
+ def self.available_options
30
+ [
31
+ FastlaneCore::ConfigItem.new(key: :current_version,
32
+ env_name: "",
33
+ description: "Git ref of current version",
34
+ optional: true,
35
+ default_value: 'HEAD')
36
+ ]
37
+ end
38
+
39
+ def self.output
40
+ [
41
+ ['RELEASE_NOTES', 'Release notes extracted from git commits']
42
+ ]
43
+ end
44
+
45
+ def self.author
46
+ "Piotrek Dubiel"
47
+ end
48
+
49
+ def self.is_supported?(platform)
50
+ true
51
+ end
52
+ end
53
+ end
54
+ end
@@ -1,18 +1,20 @@
1
- require 'openssl'
2
- require 'base64'
3
1
  require 'json'
4
2
 
5
3
  module Fastlane
6
4
  module PageGenerator
5
+ PLACEHOLDER_URL = "https://s3.eu-central-1.amazonaws.com/fota.polidea.com/mails/images/icon-placeholder.jpg"
6
+
7
7
  def self.mail(config)
8
8
  UI.message("Generating e-mail...")
9
9
  eth = Fastlane::ErbTemplateHelper
10
- html_template = eth.load_from_path("#{__dir__}/../templates/download.erb")
10
+ html_template = eth.load_from_path(
11
+ File.expand_path("templates/mail.erb", Polidea.root)
12
+ )
11
13
  eth.render(html_template, {
12
14
  author: config[:author],
13
15
  last_commit: config[:last_commit],
14
16
  is_android: config[:is_android],
15
- app_icon: config[:app_icon] ? "cid:#{config[:app_icon]}" : "https://s3.eu-central-1.amazonaws.com/fota.polidea.com/mails/images/icon-placeholder.png",
17
+ app_icon: mail_app_icon_or_placholder(config[:app_icon]),
16
18
  app_name: config[:app_name],
17
19
  app_version: config[:app_version],
18
20
  build_number: config[:build_number],
@@ -26,68 +28,20 @@ module Fastlane
26
28
  end
27
29
 
28
30
  def self.installation_page(config)
29
- if config[:installation_password]
30
- generate_private(config)
31
- else
32
- generate_public(config)
33
- end
34
- end
35
-
36
- def self.generate_private(config)
37
- UI.message("Generating private installation page with password `#{config[:installation_password]}`...")
38
- eth = Fastlane::ErbTemplateHelper
39
- html_template = eth.load_from_path("#{__dir__}/../templates/secure_installation_template.erb")
40
- installation_link, salt, iv = encrypt(config[:url], config[:installation_password])
41
- eth.render(html_template, {
42
- url: installation_link,
43
- salt: salt,
44
- iv: iv,
45
- app_version: config[:app_version],
46
- build_number: config[:build_number],
47
- app_name: config[:app_name],
48
- app_icon: config[:app_icon],
49
- platform: config[:platform],
50
- release_notes: parse_release_notes(config[:release_notes])
51
- })
52
- end
53
- private_class_method :generate_private
54
-
55
- def self.generate_public(config)
56
31
  UI.message("Generating public installation page...")
57
32
  eth = Fastlane::ErbTemplateHelper
58
- html_template = eth.load_from_path("#{__dir__}/../templates/installation_template.erb")
33
+ html_template = eth.load_from_path(
34
+ File.expand_path("templates/install.erb", Polidea.root)
35
+ )
59
36
  eth.render(html_template, {
60
37
  url: config[:url],
61
38
  app_version: config[:app_version],
62
39
  build_number: config[:build_number],
63
40
  app_name: config[:app_name],
64
- app_icon: config[:app_icon],
65
- platform: config[:platform],
41
+ app_icon: app_icon_or_placholder(config[:app_icon]),
66
42
  release_notes: parse_release_notes(config[:release_notes])
67
43
  })
68
44
  end
69
- private_class_method :generate_public
70
-
71
- def self.encrypt(url, password)
72
- salt = OpenSSL::Random.random_bytes(32)
73
- iter = 128
74
- key_len = 32
75
- key = OpenSSL::PKCS5.pbkdf2_hmac_sha1(password, salt, iter, key_len)
76
-
77
- cipher = OpenSSL::Cipher::AES256.new(:CBC)
78
- cipher.encrypt
79
- cipher.key = key
80
-
81
- random_iv = cipher.random_iv
82
- iv = Base64.encode64(random_iv).delete "\n"
83
- to_json = { url: url.to_s }.to_json
84
- var = cipher.update(to_json.to_s) + cipher.final
85
-
86
- installation_link = Base64.encode64(var).delete "\n"
87
- salt = Base64.encode64(salt).delete "\n"
88
- return installation_link, salt, iv
89
- end
90
- private_class_method :encrypt
91
45
 
92
46
  def self.parse_release_notes(release_notes)
93
47
  renderer = Redcarpet::Render::HTML.new({
@@ -103,5 +57,23 @@ module Fastlane
103
57
  markdown.render(release_notes || "No release notes.")
104
58
  end
105
59
  private_class_method :parse_release_notes
60
+
61
+ def self.mail_app_icon_or_placholder(app_icon)
62
+ if app_icon.nil?
63
+ PLACEHOLDER_URL
64
+ else
65
+ "cid:#{app_icon}"
66
+ end
67
+ end
68
+ private_class_method :mail_app_icon_or_placholder
69
+
70
+ def self.app_icon_or_placholder(app_icon)
71
+ if app_icon.nil?
72
+ PLACEHOLDER_URL
73
+ else
74
+ app_icon
75
+ end
76
+ end
77
+ private_class_method :app_icon_or_placholder
106
78
  end
107
79
  end