fastlane 2.131.0 → 2.135.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +70 -70
  3. data/cert/lib/cert/module.rb +2 -0
  4. data/cert/lib/cert/options.rb +6 -0
  5. data/cert/lib/cert/runner.rb +17 -11
  6. data/fastlane/lib/fastlane/action.rb +1 -1
  7. data/{pilot/lib/pilot/.manager.rb.swp → fastlane/lib/fastlane/actions/.google_play_track_version_codes.rb.swp} +0 -0
  8. data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
  9. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +10 -2
  10. data/fastlane/lib/fastlane/actions/carthage.rb +7 -0
  11. data/fastlane/lib/fastlane/actions/cocoapods.rb +24 -2
  12. data/fastlane/lib/fastlane/actions/copy_artifacts.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/deploygate.rb +1 -1
  14. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +1 -1
  15. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +26 -5
  16. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +26 -2
  17. data/fastlane/lib/fastlane/actions/download_dsyms.rb +26 -3
  18. data/fastlane/lib/fastlane/actions/download_from_play_store.rb +1 -1
  19. data/fastlane/lib/fastlane/actions/ensure_env_vars.rb +58 -0
  20. data/fastlane/lib/fastlane/actions/get_version_number.rb +12 -3
  21. data/fastlane/lib/fastlane/actions/google_play_track_version_codes.rb +5 -1
  22. data/fastlane/lib/fastlane/actions/onesignal.rb +59 -29
  23. data/fastlane/lib/fastlane/actions/pod_push.rb +10 -1
  24. data/fastlane/lib/fastlane/actions/register_devices.rb +1 -1
  25. data/fastlane/lib/fastlane/actions/sonar.rb +16 -0
  26. data/fastlane/lib/fastlane/actions/testfairy.rb +1 -1
  27. data/fastlane/lib/fastlane/actions/update_fastlane.rb +9 -49
  28. data/fastlane/lib/fastlane/actions/update_keychain_access_groups.rb +94 -0
  29. data/fastlane/lib/fastlane/environment_printer.rb +9 -3
  30. data/fastlane/lib/fastlane/fast_file.rb +10 -4
  31. data/fastlane/lib/fastlane/lane_manager.rb +1 -1
  32. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +12 -2
  33. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -0
  34. data/fastlane/lib/fastlane/runner.rb +2 -2
  35. data/fastlane/lib/fastlane/setup/setup_android.rb +1 -1
  36. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +10 -2
  37. data/fastlane/lib/fastlane/swift_fastlane_function.rb +72 -3
  38. data/fastlane/lib/fastlane/version.rb +1 -1
  39. data/fastlane/swift/Deliverfile.swift +1 -1
  40. data/fastlane/swift/DeliverfileProtocol.swift +121 -1
  41. data/fastlane/swift/Fastlane.swift +3928 -18
  42. data/fastlane/swift/Gymfile.swift +1 -1
  43. data/fastlane/swift/GymfileProtocol.swift +81 -1
  44. data/fastlane/swift/Matchfile.swift +1 -1
  45. data/fastlane/swift/MatchfileProtocol.swift +63 -1
  46. data/fastlane/swift/Precheckfile.swift +1 -1
  47. data/fastlane/swift/PrecheckfileProtocol.swift +15 -2
  48. data/fastlane/swift/Scanfile.swift +1 -1
  49. data/fastlane/swift/ScanfileProtocol.swift +109 -1
  50. data/fastlane/swift/Screengrabfile.swift +1 -1
  51. data/fastlane/swift/ScreengrabfileProtocol.swift +39 -2
  52. data/fastlane/swift/Snapshotfile.swift +1 -1
  53. data/fastlane/swift/SnapshotfileProtocol.swift +71 -1
  54. data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +3 -3
  55. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +1 -1
  56. data/fastlane_core/lib/fastlane_core/device_manager.rb +1 -1
  57. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +1 -3
  58. data/fastlane_core/lib/fastlane_core/swag.rb +1 -1
  59. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
  60. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +3 -2
  61. data/frameit/lib/frameit/screenshot.rb +4 -0
  62. data/match/lib/match/generator.rb +1 -0
  63. data/match/lib/match/importer.rb +1 -1
  64. data/match/lib/match/module.rb +2 -0
  65. data/match/lib/match/nuke.rb +5 -5
  66. data/match/lib/match/options.rb +12 -0
  67. data/match/lib/match/runner.rb +2 -0
  68. data/match/lib/match/storage/git_storage.rb +8 -2
  69. data/match/lib/match/storage/google_cloud_storage.rb +85 -33
  70. data/produce/lib/produce/service.rb +7 -1
  71. data/scan/lib/scan/error_handler.rb +9 -4
  72. data/scan/lib/scan/runner.rb +1 -1
  73. data/sigh/lib/assets/resign.sh +2 -2
  74. data/sigh/lib/sigh/runner.rb +13 -5
  75. data/snapshot/lib/snapshot/options.rb +5 -0
  76. data/snapshot/lib/snapshot/reports_generator.rb +3 -0
  77. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
  78. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +2 -2
  79. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +16 -1
  80. data/spaceship/lib/spaceship/client.rb +2 -2
  81. data/spaceship/lib/spaceship/connect_api/models/app.rb +6 -6
  82. data/spaceship/lib/spaceship/connect_api/models/build.rb +3 -3
  83. data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +1 -1
  84. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +1 -1
  85. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +1 -1
  86. data/spaceship/lib/spaceship/connect_api/models/device.rb +1 -1
  87. data/spaceship/lib/spaceship/connect_api/models/profile.rb +1 -1
  88. data/spaceship/lib/spaceship/portal/provisioning_profile.rb +1 -1
  89. data/spaceship/lib/spaceship/tunes/app_version.rb +4 -0
  90. data/spaceship/lib/spaceship/tunes/application.rb +4 -0
  91. data/spaceship/lib/spaceship/tunes/iap_family_details.rb +10 -2
  92. data/spaceship/lib/spaceship/tunes/tunes_client.rb +25 -0
  93. data/supply/lib/supply.rb +23 -0
  94. data/supply/lib/supply/client.rb +101 -55
  95. data/supply/lib/supply/options.rb +49 -14
  96. data/supply/lib/supply/release_listing.rb +18 -0
  97. data/supply/lib/supply/setup.rb +42 -34
  98. data/supply/lib/supply/uploader.rb +168 -93
  99. metadata +50 -53
  100. data/fastlane/lib/fastlane/actions/.hockey.rb.swp +0 -0
  101. data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
  102. data/fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp +0 -0
  103. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  104. data/gym/lib/gym/.runner.rb.swp +0 -0
  105. data/spaceship/lib/spaceship/connect_api/.DS_Store +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c95215aded25754cdd253b9e510d47ce04fed50af174ca81132d626303e6bc11
4
- data.tar.gz: df1659455c9d06b31f2c0f0ed66cbb45506fe644e44d4d9ba0a129bc08f9daec
3
+ metadata.gz: 2fe764bd3b1a32e200d3338929d3fa02a91deffd9479300b16769132fd42cabd
4
+ data.tar.gz: 651915b3334ee1f7bde2fbade3c0669e587494569e02709572ac7baad44d7b12
5
5
  SHA512:
6
- metadata.gz: a2370d61af5741661b679f9686c58985d09bad6ec1e07dd74fcae8292e73f29334c55d935981f9a715771a98e53dc5f8db615cbd5db23bd2e70d91e12d5cf49d
7
- data.tar.gz: 55af9d205658816d6f4025f76b6559dcf1cda97f5d96bbaffd5e7db90331825ce4732bcf0c06aba57cac6e6abcd0db667bc4f633b083414d45fa05ba0fe04d69
6
+ metadata.gz: 230ff3dc2b23e63be722cb1d6871d6663200ba62abd427d63aa0f5e571f982663951ae5eafa5ba8b60505a617be36ce4823ff6708064b22753f6b5d2a1fba10f
7
+ data.tar.gz: 9528e57ea82bc5dffb36291132fb00d67c7f82b3740b69f64c238eb7c7969bc75cde2baf4bd34b1aef76af880eb487fa54cddf1b075ce90e8ff64cb5801216b1
data/README.md CHANGED
@@ -34,87 +34,93 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
34
34
  <!-- This table is regenerated and resorted on each release -->
35
35
  <table id='team'>
36
36
  <tr>
37
- <td id='jérôme-lacoste'>
38
- <a href='https://github.com/lacostej'>
39
- <img src='https://github.com/lacostej.png?size=140'>
40
- </a>
41
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
42
- </td>
43
- <td id='jorge-revuelta-h'>
44
- <a href='https://github.com/minuscorp'>
45
- <img src='https://github.com/minuscorp.png?size=140'>
46
- </a>
47
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
48
- </td>
49
- <td id='jimmy-dee'>
50
- <a href='https://github.com/jdee'>
51
- <img src='https://github.com/jdee.png?size=140'>
52
- </a>
53
- <h4 align='center'>Jimmy Dee</h4>
54
- </td>
55
- <td id='kohki-miki'>
56
- <a href='https://github.com/giginet'>
57
- <img src='https://github.com/giginet.png?size=140'>
37
+ <td id='felix-krause'>
38
+ <a href='https://github.com/KrauseFx'>
39
+ <img src='https://github.com/KrauseFx.png?size=140'>
58
40
  </a>
59
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
41
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
60
42
  </td>
61
- <td id='iulian-onofrei'>
62
- <a href='https://github.com/revolter'>
63
- <img src='https://github.com/revolter.png?size=140'>
43
+ <td id='manu-wallner'>
44
+ <a href='https://github.com/milch'>
45
+ <img src='https://github.com/milch.png?size=140'>
64
46
  </a>
65
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
47
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
66
48
  </td>
67
- </tr>
68
- <tr>
69
49
  <td id='stefan-natchev'>
70
50
  <a href='https://github.com/snatchev'>
71
51
  <img src='https://github.com/snatchev.png?size=140'>
72
52
  </a>
73
53
  <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
74
54
  </td>
75
- <td id='helmut-januschka'>
76
- <a href='https://github.com/hjanuschka'>
77
- <img src='https://github.com/hjanuschka.png?size=140'>
55
+ <td id='maksym-grebenets'>
56
+ <a href='https://github.com/mgrebenets'>
57
+ <img src='https://github.com/mgrebenets.png?size=140'>
78
58
  </a>
79
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
80
60
  </td>
61
+ <td id='jimmy-dee'>
62
+ <a href='https://github.com/jdee'>
63
+ <img src='https://github.com/jdee.png?size=140'>
64
+ </a>
65
+ <h4 align='center'>Jimmy Dee</h4>
66
+ </td>
67
+ </tr>
68
+ <tr>
81
69
  <td id='andrew-mcburney'>
82
70
  <a href='https://github.com/armcburney'>
83
71
  <img src='https://github.com/armcburney.png?size=140'>
84
72
  </a>
85
73
  <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
86
74
  </td>
87
- <td id='luka-mirosevic'>
88
- <a href='https://github.com/lmirosevic'>
89
- <img src='https://github.com/lmirosevic.png?size=140'>
75
+ <td id='jorge-revuelta-h'>
76
+ <a href='https://github.com/minuscorp'>
77
+ <img src='https://github.com/minuscorp.png?size=140'>
90
78
  </a>
91
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
79
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
92
80
  </td>
93
- <td id='manu-wallner'>
94
- <a href='https://github.com/milch'>
95
- <img src='https://github.com/milch.png?size=140'>
81
+ <td id='helmut-januschka'>
82
+ <a href='https://github.com/hjanuschka'>
83
+ <img src='https://github.com/hjanuschka.png?size=140'>
96
84
  </a>
97
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
86
+ </td>
87
+ <td id='iulian-onofrei'>
88
+ <a href='https://github.com/revolter'>
89
+ <img src='https://github.com/revolter.png?size=140'>
90
+ </a>
91
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
98
92
  </td>
99
- </tr>
100
- <tr>
101
93
  <td id='matthew-ellis'>
102
94
  <a href='https://github.com/matthewellis'>
103
95
  <img src='https://github.com/matthewellis.png?size=140'>
104
96
  </a>
105
97
  <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
106
98
  </td>
107
- <td id='jan-piotrowski'>
108
- <a href='https://github.com/janpio'>
109
- <img src='https://github.com/janpio.png?size=140'>
99
+ </tr>
100
+ <tr>
101
+ <td id='fumiya-nakamura'>
102
+ <a href='https://github.com/nafu'>
103
+ <img src='https://github.com/nafu.png?size=140'>
110
104
  </a>
111
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
105
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
112
106
  </td>
113
- <td id='maksym-grebenets'>
114
- <a href='https://github.com/mgrebenets'>
115
- <img src='https://github.com/mgrebenets.png?size=140'>
107
+ <td id='jérôme-lacoste'>
108
+ <a href='https://github.com/lacostej'>
109
+ <img src='https://github.com/lacostej.png?size=140'>
116
110
  </a>
117
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
111
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
112
+ </td>
113
+ <td id='aaron-brager'>
114
+ <a href='https://github.com/getaaron'>
115
+ <img src='https://github.com/getaaron.png?size=140'>
116
+ </a>
117
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
118
+ </td>
119
+ <td id='danielle-tomlinson'>
120
+ <a href='https://github.com/endocrimes'>
121
+ <img src='https://github.com/endocrimes.png?size=140'>
122
+ </a>
123
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
118
124
  </td>
119
125
  <td id='joshua-liebowitz'>
120
126
  <a href='https://github.com/taquitos'>
@@ -122,37 +128,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
122
128
  </a>
123
129
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
124
130
  </td>
131
+ </tr>
132
+ <tr>
125
133
  <td id='olivier-halligon'>
126
134
  <a href='https://github.com/AliSoftware'>
127
135
  <img src='https://github.com/AliSoftware.png?size=140'>
128
136
  </a>
129
137
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
130
138
  </td>
131
- </tr>
132
- <tr>
133
- <td id='aaron-brager'>
134
- <a href='https://github.com/getaaron'>
135
- <img src='https://github.com/getaaron.png?size=140'>
136
- </a>
137
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
138
- </td>
139
- <td id='felix-krause'>
140
- <a href='https://github.com/KrauseFx'>
141
- <img src='https://github.com/KrauseFx.png?size=140'>
139
+ <td id='jan-piotrowski'>
140
+ <a href='https://github.com/janpio'>
141
+ <img src='https://github.com/janpio.png?size=140'>
142
142
  </a>
143
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
144
144
  </td>
145
- <td id='danielle-tomlinson'>
146
- <a href='https://github.com/endocrimes'>
147
- <img src='https://github.com/endocrimes.png?size=140'>
145
+ <td id='luka-mirosevic'>
146
+ <a href='https://github.com/lmirosevic'>
147
+ <img src='https://github.com/lmirosevic.png?size=140'>
148
148
  </a>
149
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
149
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
150
150
  </td>
151
- <td id='fumiya-nakamura'>
152
- <a href='https://github.com/nafu'>
153
- <img src='https://github.com/nafu.png?size=140'>
151
+ <td id='kohki-miki'>
152
+ <a href='https://github.com/giginet'>
153
+ <img src='https://github.com/giginet.png?size=140'>
154
154
  </a>
155
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
155
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
156
156
  </td>
157
157
  <td id='josh-holtz'>
158
158
  <a href='https://github.com/joshdholtz'>
@@ -1,4 +1,5 @@
1
1
  require 'fastlane_core/helper'
2
+ require 'fastlane/boolean'
2
3
 
3
4
  module Cert
4
5
  # Use this to just setup the configuration attribute and set it later somewhere else
@@ -8,6 +9,7 @@ module Cert
8
9
 
9
10
  Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
10
11
  UI = FastlaneCore::UI
12
+ Boolean = Fastlane::Boolean
11
13
  ROOT = Pathname.new(File.expand_path('../../..', __FILE__))
12
14
 
13
15
  ENV['FASTLANE_TEAM_ID'] ||= ENV["CERT_TEAM_ID"]
@@ -20,6 +20,12 @@ module Cert
20
20
  description: "Create a certificate even if an existing certificate exists",
21
21
  is_string: false,
22
22
  default_value: false),
23
+ FastlaneCore::ConfigItem.new(key: :generate_apple_certs,
24
+ env_name: "CERT_GENERATE_APPLE_CERTS",
25
+ description: "Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)",
26
+ type: Boolean,
27
+ default_value: FastlaneCore::Helper.mac? && FastlaneCore::Helper.xcode_at_least?('11'),
28
+ default_value_dynamic: true),
23
29
  FastlaneCore::ConfigItem.new(key: :username,
24
30
  short_option: "-u",
25
31
  env_name: "CERT_USERNAME",
@@ -134,19 +134,25 @@ module Cert
134
134
 
135
135
  # The kind of certificate we're interested in
136
136
  def certificate_type
137
- case Cert.config[:platform].to_s
138
- when 'ios', 'tvos'
139
- cert_type = Spaceship.certificate.production
140
- cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house?
141
- cert_type = Spaceship.certificate.development if Cert.config[:development]
142
-
143
- when 'macos'
144
- cert_type = Spaceship.certificate.mac_app_distribution
145
- cert_type = Spaceship.certificate.mac_development if Cert.config[:development]
146
-
137
+ # Check if apple certs (Xcode 11 and later) should be used
138
+ if Cert.config[:generate_apple_certs]
139
+ cert_type = Spaceship.certificate.apple_distribution
140
+ cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house? # Enterprise doesn't use Apple Distribution
141
+ cert_type = Spaceship.certificate.apple_development if Cert.config[:development]
142
+ else
143
+ case Cert.config[:platform].to_s
144
+ when 'ios', 'tvos'
145
+ cert_type = Spaceship.certificate.production
146
+ cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house?
147
+ cert_type = Spaceship.certificate.development if Cert.config[:development]
148
+
149
+ when 'macos'
150
+ cert_type = Spaceship.certificate.mac_app_distribution
151
+ cert_type = Spaceship.certificate.mac_development if Cert.config[:development]
152
+ end
147
153
  end
148
154
 
149
- cert_type
155
+ return cert_type
150
156
  end
151
157
 
152
158
  def create_certificate
@@ -134,7 +134,7 @@ module Fastlane
134
134
  UI.user_error!("To call another action from an action use `other_action.#{method_sym}` instead")
135
135
  end
136
136
 
137
- # When shelling out from the actoin, should we use `bundle exec`?
137
+ # When shelling out from the action, should we use `bundle exec`?
138
138
  def self.shell_out_should_use_bundle_exec?
139
139
  return File.exist?('Gemfile') && !Helper.contained_fastlane?
140
140
  end
@@ -77,7 +77,7 @@ module Fastlane
77
77
  # rubocop:enable Style/AccessorMethodName
78
78
 
79
79
  # Returns the class ref to the action based on the action name
80
- # Returns nil if the action is not aailable
80
+ # Returns nil if the action is not available
81
81
  def self.action_class_ref(action_name)
82
82
  class_name = action_name.to_s.fastlane_class + 'Action'
83
83
  class_ref = nil
@@ -36,6 +36,7 @@ module Fastlane
36
36
  return build_nr
37
37
  else
38
38
  version_number = params[:version]
39
+ platform = params[:platform]
39
40
 
40
41
  # Create filter for get_builds with optional version number
41
42
  filter = { app: app.apple_id }
@@ -46,18 +47,25 @@ module Fastlane
46
47
  version_number_message = "any version"
47
48
  end
48
49
 
50
+ if platform
51
+ filter["preReleaseVersion.platform"] = Spaceship::ConnectAPI::Platform.map(platform)
52
+ platform_message = "#{platform} platform"
53
+ else
54
+ platform_message = "any platform"
55
+ end
56
+
49
57
  UI.message("Fetching the latest build number for #{version_number_message}")
50
58
 
51
59
  # Get latest build for optional version number and return build number if found
52
60
  build = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-uploadedDate", includes: "preReleaseVersion", limit: 1).first
53
61
  if build
54
62
  build_nr = build.version
55
- UI.message("Latest upload for version #{build.app_version} is build: #{build_nr}")
63
+ UI.message("Latest upload for version #{build.app_version} on #{platform_message} is build: #{build_nr}")
56
64
  return build_nr
57
65
  end
58
66
 
59
67
  # Let user know that build couldn't be found
60
- UI.important("Could not find a build for #{version_number_message} on App Store Connect")
68
+ UI.important("Could not find a build for #{version_number_message} on #{platform_message} on App Store Connect")
61
69
 
62
70
  if params[:initial_build_number].nil?
63
71
  UI.user_error!("Could not find a build on App Store Connect - and 'initial_build_number' option is not set")
@@ -21,6 +21,7 @@ module Fastlane
21
21
  cmd << "--use-ssh" if params[:use_ssh]
22
22
  cmd << "--use-submodules" if params[:use_submodules]
23
23
  cmd << "--no-use-binaries" if params[:use_binaries] == false
24
+ cmd << "--no-checkout" if params[:no_checkout] == true
24
25
  cmd << "--no-build" if params[:no_build] == true
25
26
  cmd << "--no-skip-current" if params[:no_skip_current] == true
26
27
  cmd << "--verbose" if params[:verbose] == true
@@ -94,6 +95,12 @@ module Fastlane
94
95
  is_string: false,
95
96
  type: Boolean,
96
97
  optional: true),
98
+ FastlaneCore::ConfigItem.new(key: :no_checkout,
99
+ env_name: "FL_CARTHAGE_NO_CHECKOUT",
100
+ description: "When bootstrapping Carthage do not checkout",
101
+ is_string: false,
102
+ type: Boolean,
103
+ optional: true),
97
104
  FastlaneCore::ConfigItem.new(key: :no_build,
98
105
  env_name: "FL_CARTHAGE_NO_BUILD",
99
106
  description: "When bootstrapping Carthage do not build",
@@ -14,15 +14,17 @@ module Fastlane
14
14
  cmd << ["cd '#{podfile_folder}' &&"]
15
15
  end
16
16
 
17
- cmd << ['bundle exec'] if params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
17
+ cmd << ['bundle exec'] if use_bundle_exec?(params)
18
18
  cmd << ['pod install']
19
19
 
20
20
  cmd << '--no-clean' unless params[:clean]
21
21
  cmd << '--no-integrate' unless params[:integrate]
22
+ cmd << '--clean-install' if params[:clean_install] && pod_version.to_f >= 1.7
22
23
  cmd << '--repo-update' if params[:repo_update]
23
24
  cmd << '--silent' if params[:silent]
24
25
  cmd << '--verbose' if params[:verbose]
25
26
  cmd << '--no-ansi' unless params[:ansi]
27
+ cmd << '--deployment' if params[:deployment]
26
28
 
27
29
  Actions.sh(cmd.join(' '), error_callback: lambda { |result|
28
30
  if !params[:repo_update] && params[:try_repo_update_on_error]
@@ -36,6 +38,14 @@ module Fastlane
36
38
  })
37
39
  end
38
40
 
41
+ def self.use_bundle_exec?(params)
42
+ params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
43
+ end
44
+
45
+ def self.pod_version
46
+ use_bundle_exec?(params) ? `bundle exec pod --version` : `pod --version`
47
+ end
48
+
39
49
  def self.call_error_callback(params, result)
40
50
  if params[:error_callback]
41
51
  Dir.chdir(FastlaneCore::FastlaneFolder.path) do
@@ -57,6 +67,11 @@ module Fastlane
57
67
  description: "Add `--repo-update` flag to `pod install` command",
58
68
  is_string: false,
59
69
  default_value: false),
70
+ FastlaneCore::ConfigItem.new(key: :clean_install,
71
+ env_name: "FL_COCOAPODS_CLEAN_INSTALL",
72
+ description: "Execute a full pod installation ignoring the content of the project cache",
73
+ is_string: false,
74
+ default_value: false),
60
75
  FastlaneCore::ConfigItem.new(key: :silent,
61
76
  env_name: "FL_COCOAPODS_SILENT",
62
77
  description: "Execute command without logging output",
@@ -98,11 +113,18 @@ module Fastlane
98
113
  is_string: false,
99
114
  default_value: false,
100
115
  type: Boolean),
116
+ FastlaneCore::ConfigItem.new(key: :deployment,
117
+ env_name: "FL_COCOAPODS_DEPLOYMENT",
118
+ description: 'Disallow any changes to the Podfile or the Podfile.lock during installation',
119
+ optional: true,
120
+ is_string: false,
121
+ default_value: false,
122
+ type: Boolean),
101
123
 
102
124
  # Deprecated
103
125
  FastlaneCore::ConfigItem.new(key: :clean,
104
126
  env_name: "FL_COCOAPODS_CLEAN",
105
- description: "(Option removed from cocoapods) Remove SCM directories",
127
+ description: "(Option renamed as clean_install) Remove SCM directories",
106
128
  deprecated: true,
107
129
  is_string: false,
108
130
  default_value: true),
@@ -16,7 +16,7 @@ module Fastlane
16
16
  # If any of the paths include "*", we assume that we are referring to the Unix entries
17
17
  # e.g /tmp/fastlane/* refers to all the files in /tmp/fastlane
18
18
  # We use Dir.glob to expand all those paths, this would create an array of arrays though, so flatten
19
- artifacts = artifacts_to_search.map { |f| f.include?("*") ? Dir.glob(f) : f }.flatten
19
+ artifacts = artifacts_to_search.flat_map { |f| f.include?("*") ? Dir.glob(f) : f }
20
20
 
21
21
  UI.verbose("Copying artifacts #{artifacts.join(', ')} to #{target_path}")
22
22
  UI.verbose(params[:keep_original] ? "Keeping original files" : "Not keeping original files")
@@ -33,7 +33,7 @@ module Fastlane
33
33
  options[:disable_notify] = 'yes' if options[:disable_notify]
34
34
 
35
35
  connection.post("/api/users/#{user_name}/apps", options)
36
- rescue Faraday::Error::TimeoutError
36
+ rescue Faraday::TimeoutError
37
37
  UI.crash!("Timed out while uploading build. Check https://deploygate.com/ to see if the upload was completed.")
38
38
  end
39
39
 
@@ -128,7 +128,7 @@ Your screenshots will be stored in the `./screenshots/` folder by default (or `.
128
128
 
129
129
  New with Xcode 9, *snapshot* can run multiple simulators concurrently. This is the default behavior in order to take your screenshots as quickly as possible. This can be disabled to run each device, one at a time, by setting the `:concurrent_simulators` option to `false`.
130
130
 
131
- **Note:** While running *snapshot* with Xcode 9, the simulators will not be visibly spawned. So, while you wont see the simulators running your tests, they will, in fact, be taking your screenshots.
131
+ **Note:** While running *snapshot* with Xcode 9, the simulators will not be visibly spawned. So, while you won't see the simulators running your tests, they will, in fact, be taking your screenshots.
132
132
 
133
133
  If any error occurs while running the snapshot script on a device, that device will not have any screenshots, and _snapshot_ will continue with the next device or language. To stop the flow after the first error, run
134
134
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  A new approach to iOS code signing: Share one code signing identity across your development team to simplify your codesigning setup and prevent code signing issues.
8
8
 
9
- _match_ is the implementation of the [https://codesigning.guide concept](https://codesigning.guide). _match_ creates all required certificates & provisioning profiles and stores them in a separate git repository. Every team member with access to the repo can use those credentials for code signing. _match_ also automatically repairs broken and expired credentials. It's the easiest way to share signing credentials across teams
9
+ _match_ is the implementation of the [codesigning.guide concept](https://codesigning.guide). _match_ creates all required certificates & provisioning profiles and stores them in a separate git repository. Every team member with access to the repo can use those credentials for code signing. _match_ also automatically repairs broken and expired credentials. It's the easiest way to share signing credentials across teams
10
10
 
11
11
  [More information on how to get started with codesigning](https://docs.fastlane.tools/codesigning/getting-started/)
12
12
 
@@ -79,7 +79,7 @@ You'll be asked if you want to store your code signing identities inside a **Git
79
79
 
80
80
  Use Git Storage to store all code signing identities in a private git repo, owned and operated by you. The files will be encrypted using OpenSSL.
81
81
 
82
- First, enter the URL to your private (!) Git repo (You can create one for free on e.g. [GitHub](https://github.com/new) or [BitBucket](https://bitbucket.org/repo/create)). The URL you enter can be either a `https://` or a `git` URL. (If your machine is currently using SSH to authenticate with GitHub, you'll want to use a `git` URL, otherwise you may see an authentication error when you attempt to use match.) `fastlane match init` won't read or modify your certificates or profiles yet, and also won't validate your git URL.
82
+ First, enter the URL to your private (!) Git repo (You can create one for free on e.g. [GitHub](https://github.com/new) or [BitBucket](https://bitbucket.org/repo/create)). The URL you enter can be either a `https://` or a `git` URL. `fastlane match init` won't read or modify your certificates or profiles yet, and also won't validate your git URL.
83
83
 
84
84
  This will create a `Matchfile` in your current directory (or in your `./fastlane/` folder).
85
85
 
@@ -92,6 +92,25 @@ app_identifier("tools.fastlane.app")
92
92
  username("user@fastlane.tools")
93
93
  ```
94
94
 
95
+ ##### Git Storage on GitHub
96
+
97
+ If your machine is currently using SSH to authenticate with GitHub, you'll want to use a `git` URL, otherwise, you may see an authentication error when you attempt to use match. Alternatively, you can set a basic authorization for _match_:
98
+
99
+ Using parameter:
100
+
101
+ ```
102
+ match(git_basic_authorization: '<YOUR KEY>')
103
+ ```
104
+
105
+ Using environment variable:
106
+
107
+ ```
108
+ ENV['MATCH_GIT_BASIC_AUTHORIZATION'] = '<YOUR KEY>'
109
+ match
110
+ ```
111
+
112
+ You can find more information about GitHub basic authentication and personal token generation here: [https://developer.github.com/v3/auth/#basic-authentication](https://developer.github.com/v3/auth/#basic-authentication)
113
+
95
114
  #### Google Cloud Storage
96
115
 
97
116
  Use [Google Cloud Storage](https://cloud.google.com/storage/) for a fully hosted solution for your code signing identities. Certificates are stored on Google Cloud, encrypted using Google managed keys. Everything will be stored on your Google account, inside a storage bucket you provide. You can also directly access the files using the web console.
@@ -119,7 +138,7 @@ match(git_branch: "team2", username: "user@team2.com")
119
138
 
120
139
  #### Google Cloud Storage
121
140
 
122
- If you use Google Cloud Storage, you don't need to do anything manually. Just use Google Cloud Storage, and the top level folder will be the team ID.
141
+ If you use Google Cloud Storage, you don't need to do anything manually for multiple teams. Just use Google Cloud Storage, and the top level folder will be the team ID.
123
142
 
124
143
  ### Run
125
144
 
@@ -214,12 +233,14 @@ There are two cases for reading and writing certificates stored in a Google Clou
214
233
  1. Continuous integration jobs. These will authenticate to your Google Cloud project via a service account, and use a `gc_keys.json` file as credentials.
215
234
  1. Developers on a local workstation. In this case, you should choose whether everyone on your team will create their own `gc_keys.json` file, or whether you want to manage access to the bucket directly using your developers' Google accounts.
216
235
 
217
- When running `fastlane match init` the first time, the setup process will give you the option to create your `gc_keys.json` file. This file contains the auth credentials needed to access your Google Cloud storage bucket. Make sure to keep that file secret and never add it to version control. We recommend adding `gc_keys.json` to your `.gitignore`
236
+ When running `fastlane match init` the first time, the setup process will give you the option to create your `gc_keys.json` file. This file contains the authentication credentials needed to access your Google Cloud storage bucket. Make sure to keep that file secret and never add it to version control. We recommend adding `gc_keys.json` to your `.gitignore`
218
237
 
219
238
  ##### Managing developer access via keys
239
+
220
240
  If you want to manage developer access to your certificates via authentication keys, every developer should create their own `gc_keys.json` and add the file to all their work machines. This will give the admin full control over who has read/write access to the given Storage bucket. At the same time it allows your team to revoke a single key if a file gets compromised.
221
241
 
222
- ##### Managing developer acess via Google accounts
242
+ ##### Managing developer access via Google accounts
243
+
223
244
  If your developers already have Google accounts and access to your Google Cloud project, you can also manage access to the storage bucket via [Cloud Identity and Access Management (IAM)](https://cloud.google.com/storage/docs/access-control/iam). Just [set up](https://cloud.google.com/storage/docs/access-control/lists) individual developer accounts or an entire Google Group containing your team as readers and writers on your storage bucket.
224
245
 
225
246
  You can then specify the Google Cloud project id containing your storage bucket in your `Matchfile`: