fastlane 2.236.1 → 2.238.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +109 -102
- data/deliver/lib/deliver/options.rb +1 -1
- data/fastlane/lib/fastlane/actions/deploygate.rb +3 -2
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +7 -3
- data/fastlane/lib/fastlane/actions/hockey.rb +3 -2
- data/fastlane/lib/fastlane/actions/installr.rb +3 -2
- data/fastlane/lib/fastlane/actions/mailgun.rb +1 -0
- data/fastlane/lib/fastlane/actions/notarize.rb +3 -18
- data/fastlane/lib/fastlane/actions/register_devices.rb +21 -5
- data/fastlane/lib/fastlane/actions/setup_ci.rb +7 -2
- data/fastlane/lib/fastlane/actions/spm.rb +6 -0
- data/fastlane/lib/fastlane/actions/swiftlint.rb +10 -1
- data/fastlane/lib/fastlane/actions/testfairy.rb +5 -3
- data/fastlane/lib/fastlane/actions/tryouts.rb +3 -2
- data/fastlane/lib/fastlane/actions/update_project_team.rb +17 -9
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +33 -7
- data/fastlane/lib/fastlane/helper/sh_helper.rb +7 -3
- data/fastlane/lib/fastlane/lane_manager.rb +0 -1
- data/fastlane/lib/fastlane/plugins/template/.github/workflows/test.yml +0 -7
- data/fastlane/lib/fastlane/plugins/template/.gitignore +0 -1
- data/fastlane/lib/fastlane/plugins/template/.rspec +0 -2
- data/fastlane/lib/fastlane/plugins/template/Gemfile.erb +0 -2
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +2 -2
- data/fastlane/swift/Fastlane.swift +50 -20
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +1 -1
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +8 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +8 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
- data/fastlane_core/lib/fastlane_core/analytics/analytics_event_builder.rb +31 -5
- data/fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb +24 -12
- data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +22 -12
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +22 -9
- data/fastlane_core/lib/fastlane_core/helper.rb +4 -3
- data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +6 -2
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +3 -1
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -1
- data/fastlane_core/lib/fastlane_core/pkg_upload_package_builder.rb +1 -1
- data/fastlane_core/lib/fastlane_core/print_table.rb +0 -16
- data/fastlane_core/lib/fastlane_core/project.rb +3 -1
- data/fastlane_core/lib/fastlane_core/queue_worker.rb +10 -1
- data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_shell_error.rb +6 -0
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
- data/fastlane_core/lib/fastlane_core/video_utils.rb +4 -2
- data/gym/lib/gym/error_handler.rb +11 -1
- data/gym/lib/gym/generators/build_command_generator.rb +2 -0
- data/gym/lib/gym/module.rb +20 -2
- data/match/lib/match/options.rb +8 -0
- data/match/lib/match/runner.rb +4 -2
- data/match/lib/match/storage/git_storage.rb +18 -2
- data/pilot/lib/pilot/build_manager.rb +2 -2
- data/pilot/lib/pilot/options.rb +2 -2
- data/pilot/lib/pilot/tester_manager.rb +2 -2
- data/precheck/lib/precheck/rules/copyright_date_rule.rb +16 -10
- data/precheck/lib/precheck/rules/unreachable_urls_rule.rb +2 -2
- data/scan/lib/scan/options.rb +5 -0
- data/scan/lib/scan/runner.rb +1 -0
- data/scan/lib/scan/test_command_generator.rb +2 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +4 -1
- data/spaceship/lib/spaceship/client.rb +0 -1
- data/spaceship/lib/spaceship/connect_api/file_uploader.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +6 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +7 -2
- data/spaceship/lib/spaceship/helper/plist_middleware.rb +37 -8
- data/supply/lib/supply/uploader.rb +7 -1
- data/trainer/lib/trainer/xcresult/test_case.rb +21 -2
- data/trainer/lib/trainer/xcresult/test_plan.rb +3 -3
- data/trainer/lib/trainer/xcresult/test_suite.rb +28 -19
- metadata +74 -32
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b83a11ad4335b1a3c678c4a6d0f1aea9f6eb7ccd2fdda1392621a24be1ebc1b9
|
|
4
|
+
data.tar.gz: 40445027ea32c6b0a7d7c761f3aaa148ada6ac0d868f9d1212e68b1c0ff99940
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 915bb8bfd75b4e65b00c6213c861261aaa0b7e3b4ec5aaadc2c4029d90386d8682240628434983ec8891f5399798e584be4410ed1f37a11deb22d24cf61549e4
|
|
7
|
+
data.tar.gz: 206b83080b67e0feadc08b65e59e577ee63be8972826a17dc80ac102aeede7da6b11fe67f9b9c53c2ec6052ded492ae2850b78baecb8faa321dbe8904d079e74
|
data/README.md
CHANGED
|
@@ -36,23 +36,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
36
36
|
<!-- This table is regenerated and resorted on each release -->
|
|
37
37
|
<table id='team'>
|
|
38
38
|
<tr>
|
|
39
|
-
<td id='
|
|
40
|
-
<a href='https://github.com/
|
|
41
|
-
<img src='https://github.com/
|
|
42
|
-
</a>
|
|
43
|
-
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
|
44
|
-
</td>
|
|
45
|
-
<td id='jérôme-lacoste'>
|
|
46
|
-
<a href='https://github.com/lacostej'>
|
|
47
|
-
<img src='https://github.com/lacostej.png' width='140px;'>
|
|
48
|
-
</a>
|
|
49
|
-
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
|
50
|
-
</td>
|
|
51
|
-
<td id='manish-rathi'>
|
|
52
|
-
<a href='https://github.com/crazymanish'>
|
|
53
|
-
<img src='https://github.com/crazymanish.png' width='140px;'>
|
|
39
|
+
<td id='iulian-onofrei'>
|
|
40
|
+
<a href='https://github.com/revolter'>
|
|
41
|
+
<img src='https://github.com/revolter.png' width='140px;'>
|
|
54
42
|
</a>
|
|
55
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
43
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
|
56
44
|
</td>
|
|
57
45
|
<td id='helmut-januschka'>
|
|
58
46
|
<a href='https://github.com/hjanuschka'>
|
|
@@ -60,51 +48,75 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
60
48
|
</a>
|
|
61
49
|
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
|
62
50
|
</td>
|
|
63
|
-
<td id='
|
|
64
|
-
<a href='https://github.com/
|
|
65
|
-
<img src='https://github.com/
|
|
51
|
+
<td id='kohki-miki'>
|
|
52
|
+
<a href='https://github.com/giginet'>
|
|
53
|
+
<img src='https://github.com/giginet.png' width='140px;'>
|
|
66
54
|
</a>
|
|
67
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
55
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
|
56
|
+
</td>
|
|
57
|
+
<td id='felix-krause'>
|
|
58
|
+
<a href='https://github.com/KrauseFx'>
|
|
59
|
+
<img src='https://github.com/KrauseFx.png' width='140px;'>
|
|
60
|
+
</a>
|
|
61
|
+
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
|
62
|
+
</td>
|
|
63
|
+
<td id='olivier-halligon'>
|
|
64
|
+
<a href='https://github.com/AliSoftware'>
|
|
65
|
+
<img src='https://github.com/AliSoftware.png' width='140px;'>
|
|
66
|
+
</a>
|
|
67
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
|
68
68
|
</td>
|
|
69
69
|
</tr>
|
|
70
70
|
<tr>
|
|
71
|
+
<td id='stefan-natchev'>
|
|
72
|
+
<a href='https://github.com/snatchev'>
|
|
73
|
+
<img src='https://github.com/snatchev.png' width='140px;'>
|
|
74
|
+
</a>
|
|
75
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
|
76
|
+
</td>
|
|
77
|
+
<td id='łukasz-grabowski'>
|
|
78
|
+
<a href='https://github.com/lucgrabowski'>
|
|
79
|
+
<img src='https://github.com/lucgrabowski.png' width='140px;'>
|
|
80
|
+
</a>
|
|
81
|
+
<h4 align='center'>Łukasz Grabowski</h4>
|
|
82
|
+
</td>
|
|
71
83
|
<td id='luka-mirosevic'>
|
|
72
84
|
<a href='https://github.com/lmirosevic'>
|
|
73
85
|
<img src='https://github.com/lmirosevic.png' width='140px;'>
|
|
74
86
|
</a>
|
|
75
87
|
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
|
76
88
|
</td>
|
|
77
|
-
<td id='
|
|
78
|
-
<a href='https://github.com/
|
|
79
|
-
<img src='https://github.com/
|
|
89
|
+
<td id='joshua-liebowitz'>
|
|
90
|
+
<a href='https://github.com/taquitos'>
|
|
91
|
+
<img src='https://github.com/taquitos.png' width='140px;'>
|
|
80
92
|
</a>
|
|
81
|
-
<h4 align='center'>
|
|
93
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
|
82
94
|
</td>
|
|
83
|
-
<td id='
|
|
84
|
-
<a href='https://github.com/
|
|
85
|
-
<img src='https://github.com/
|
|
95
|
+
<td id='daniel-jankowski'>
|
|
96
|
+
<a href='https://github.com/mollyIV'>
|
|
97
|
+
<img src='https://github.com/mollyIV.png' width='140px;'>
|
|
86
98
|
</a>
|
|
87
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
99
|
+
<h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
|
|
88
100
|
</td>
|
|
89
|
-
|
|
90
|
-
<
|
|
91
|
-
<
|
|
101
|
+
</tr>
|
|
102
|
+
<tr>
|
|
103
|
+
<td id='fumiya-nakamura'>
|
|
104
|
+
<a href='https://github.com/nafu'>
|
|
105
|
+
<img src='https://github.com/nafu.png' width='140px;'>
|
|
92
106
|
</a>
|
|
93
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
107
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
|
94
108
|
</td>
|
|
95
|
-
<td id='
|
|
96
|
-
<a href='https://github.com/
|
|
97
|
-
<img src='https://github.com/
|
|
109
|
+
<td id='manish-rathi'>
|
|
110
|
+
<a href='https://github.com/crazymanish'>
|
|
111
|
+
<img src='https://github.com/crazymanish.png' width='140px;'>
|
|
98
112
|
</a>
|
|
99
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
113
|
+
<h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
|
|
100
114
|
</td>
|
|
101
|
-
|
|
102
|
-
<
|
|
103
|
-
<
|
|
104
|
-
<a href='https://github.com/ainame'>
|
|
105
|
-
<img src='https://github.com/ainame.png' width='140px;'>
|
|
115
|
+
<td id='maksym-grebenets'>
|
|
116
|
+
<a href='https://github.com/mgrebenets'>
|
|
117
|
+
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
|
106
118
|
</a>
|
|
107
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
119
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
|
108
120
|
</td>
|
|
109
121
|
<td id='matthew-ellis'>
|
|
110
122
|
<a href='https://github.com/matthewellis'>
|
|
@@ -112,31 +124,37 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
112
124
|
</a>
|
|
113
125
|
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
|
114
126
|
</td>
|
|
115
|
-
<td id='
|
|
116
|
-
<a href='https://github.com/
|
|
117
|
-
<img src='https://github.com/
|
|
127
|
+
<td id='satoshi-namai'>
|
|
128
|
+
<a href='https://github.com/ainame'>
|
|
129
|
+
<img src='https://github.com/ainame.png' width='140px;'>
|
|
118
130
|
</a>
|
|
119
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
131
|
+
<h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
|
|
120
132
|
</td>
|
|
121
|
-
|
|
122
|
-
<
|
|
123
|
-
<
|
|
133
|
+
</tr>
|
|
134
|
+
<tr>
|
|
135
|
+
<td id='jimmy-dee'>
|
|
136
|
+
<a href='https://github.com/jdee'>
|
|
137
|
+
<img src='https://github.com/jdee.png' width='140px;'>
|
|
124
138
|
</a>
|
|
125
|
-
<h4 align='center'
|
|
139
|
+
<h4 align='center'>Jimmy Dee</h4>
|
|
126
140
|
</td>
|
|
127
|
-
<td id='
|
|
128
|
-
<a href='https://github.com/
|
|
129
|
-
<img src='https://github.com/
|
|
141
|
+
<td id='manu-wallner'>
|
|
142
|
+
<a href='https://github.com/milch'>
|
|
143
|
+
<img src='https://github.com/milch.png' width='140px;'>
|
|
130
144
|
</a>
|
|
131
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
145
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
|
132
146
|
</td>
|
|
133
|
-
|
|
134
|
-
<
|
|
135
|
-
<
|
|
136
|
-
<a href='https://github.com/lucgrabowski'>
|
|
137
|
-
<img src='https://github.com/lucgrabowski.png' width='140px;'>
|
|
147
|
+
<td id='andrew-mcburney'>
|
|
148
|
+
<a href='https://github.com/armcburney'>
|
|
149
|
+
<img src='https://github.com/armcburney.png' width='140px;'>
|
|
138
150
|
</a>
|
|
139
|
-
<h4 align='center'
|
|
151
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
|
152
|
+
</td>
|
|
153
|
+
<td id='jan-piotrowski'>
|
|
154
|
+
<a href='https://github.com/janpio'>
|
|
155
|
+
<img src='https://github.com/janpio.png' width='140px;'>
|
|
156
|
+
</a>
|
|
157
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
|
140
158
|
</td>
|
|
141
159
|
<td id='jorge-revuelta-h'>
|
|
142
160
|
<a href='https://github.com/minuscorp'>
|
|
@@ -144,37 +162,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
144
162
|
</a>
|
|
145
163
|
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
|
146
164
|
</td>
|
|
147
|
-
|
|
148
|
-
<
|
|
149
|
-
<
|
|
150
|
-
|
|
151
|
-
<
|
|
152
|
-
</td>
|
|
153
|
-
<td id='iulian-onofrei'>
|
|
154
|
-
<a href='https://github.com/revolter'>
|
|
155
|
-
<img src='https://github.com/revolter.png' width='140px;'>
|
|
165
|
+
</tr>
|
|
166
|
+
<tr>
|
|
167
|
+
<td id='jérôme-lacoste'>
|
|
168
|
+
<a href='https://github.com/lacostej'>
|
|
169
|
+
<img src='https://github.com/lacostej.png' width='140px;'>
|
|
156
170
|
</a>
|
|
157
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
171
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
|
158
172
|
</td>
|
|
159
|
-
<td id='
|
|
160
|
-
<a href='https://github.com/
|
|
161
|
-
<img src='https://github.com/
|
|
173
|
+
<td id='connor-tumbleson'>
|
|
174
|
+
<a href='https://github.com/ibotpeaches'>
|
|
175
|
+
<img src='https://github.com/ibotpeaches.png' width='140px;'>
|
|
162
176
|
</a>
|
|
163
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
177
|
+
<h4 align='center'><a href='https://twitter.com/ibotpeaches'>Connor Tumbleson</a></h4>
|
|
164
178
|
</td>
|
|
165
|
-
|
|
166
|
-
<
|
|
167
|
-
<
|
|
168
|
-
<a href='https://github.com/armcburney'>
|
|
169
|
-
<img src='https://github.com/armcburney.png' width='140px;'>
|
|
179
|
+
<td id='roger-oba'>
|
|
180
|
+
<a href='https://github.com/rogerluan'>
|
|
181
|
+
<img src='https://github.com/rogerluan.png' width='140px;'>
|
|
170
182
|
</a>
|
|
171
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
183
|
+
<h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
|
|
172
184
|
</td>
|
|
173
|
-
<td id='
|
|
174
|
-
<a href='https://github.com/
|
|
175
|
-
<img src='https://github.com/
|
|
185
|
+
<td id='aaron-brager'>
|
|
186
|
+
<a href='https://github.com/getaaron'>
|
|
187
|
+
<img src='https://github.com/getaaron.png' width='140px;'>
|
|
176
188
|
</a>
|
|
177
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
189
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
|
178
190
|
</td>
|
|
179
191
|
<td id='max-ott'>
|
|
180
192
|
<a href='https://github.com/max-ott'>
|
|
@@ -182,31 +194,19 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
182
194
|
</a>
|
|
183
195
|
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
|
184
196
|
</td>
|
|
197
|
+
</tr>
|
|
198
|
+
<tr>
|
|
185
199
|
<td id='josh-holtz'>
|
|
186
200
|
<a href='https://github.com/joshdholtz'>
|
|
187
201
|
<img src='https://github.com/joshdholtz.png' width='140px;'>
|
|
188
202
|
</a>
|
|
189
203
|
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
|
190
204
|
</td>
|
|
191
|
-
<td id='
|
|
192
|
-
<a href='https://github.com/
|
|
193
|
-
<img src='https://github.com/
|
|
194
|
-
</a>
|
|
195
|
-
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
|
196
|
-
</td>
|
|
197
|
-
</tr>
|
|
198
|
-
<tr>
|
|
199
|
-
<td id='joshua-liebowitz'>
|
|
200
|
-
<a href='https://github.com/taquitos'>
|
|
201
|
-
<img src='https://github.com/taquitos.png' width='140px;'>
|
|
202
|
-
</a>
|
|
203
|
-
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
|
204
|
-
</td>
|
|
205
|
-
<td id='daniel-jankowski'>
|
|
206
|
-
<a href='https://github.com/mollyIV'>
|
|
207
|
-
<img src='https://github.com/mollyIV.png' width='140px;'>
|
|
205
|
+
<td id='danielle-tomlinson'>
|
|
206
|
+
<a href='https://github.com/endocrimes'>
|
|
207
|
+
<img src='https://github.com/endocrimes.png' width='140px;'>
|
|
208
208
|
</a>
|
|
209
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
209
|
+
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
|
210
210
|
</td>
|
|
211
211
|
</table>
|
|
212
212
|
|
|
@@ -226,6 +226,13 @@ _fastlane_ tracks a few key metrics to understand how developers are using the t
|
|
|
226
226
|
|
|
227
227
|
* The number of _fastlane_ runs
|
|
228
228
|
* A salted hash of the app identifier or package name, which helps us anonymously identify unique usage of _fastlane_
|
|
229
|
+
* How _fastlane_ is executed (Swift vs Ruby)
|
|
230
|
+
* The _fastlane_ version
|
|
231
|
+
* How _fastlane_ was installed (Homebrew, gem, bundler, etc)
|
|
232
|
+
* The Ruby version
|
|
233
|
+
* The Operating System in use
|
|
234
|
+
* The Xcode version
|
|
235
|
+
* Whether it was run in non-interactively or interactively
|
|
229
236
|
|
|
230
237
|
You can easily opt-out of metrics collection by adding `opt_out_usage` at the top of your `Fastfile` or by setting the environment variable `FASTLANE_OPT_OUT_USAGE`. [Check out the metrics code on GitHub](https://github.com/fastlane/fastlane/tree/master/fastlane_core/lib/fastlane_core/analytics)
|
|
231
238
|
|
|
@@ -326,7 +326,7 @@ module Deliver
|
|
|
326
326
|
# rubocop:disable Layout/LineLength
|
|
327
327
|
FastlaneCore::ConfigItem.new(key: :itc_provider,
|
|
328
328
|
env_name: "DELIVER_ITC_PROVIDER",
|
|
329
|
-
description: "The provider short name to be used with the iTMSTransporter to identify your team. This value will override the automatically detected provider short name. To get provider short name run `
|
|
329
|
+
description: "The provider short name to be used with the iTMSTransporter to identify your team. This value will override the automatically detected provider short name. To get provider short name run `xcrun iTMSTransporter -m provider -u 'USERNAME' -p 'PASSWORD' -account_type itunes_connect -v off`. The short names of providers should be listed in the second column",
|
|
330
330
|
optional: true,
|
|
331
331
|
code_gen_sensitive: true,
|
|
332
332
|
default_value: CredentialsManager::AppfileConfig.try_fetch_value(:itc_provider),
|
|
@@ -15,13 +15,14 @@ module Fastlane
|
|
|
15
15
|
|
|
16
16
|
def self.upload_build(api_token, user_name, binary, options)
|
|
17
17
|
require 'faraday'
|
|
18
|
-
require '
|
|
18
|
+
require 'faraday/multipart'
|
|
19
|
+
require 'faraday/follow_redirects'
|
|
19
20
|
|
|
20
21
|
connection = Faraday.new(url: DEPLOYGATE_URL_BASE, request: { timeout: 120 }) do |builder|
|
|
21
22
|
builder.request(:multipart)
|
|
22
23
|
builder.request(:json)
|
|
23
24
|
builder.response(:json, content_type: /\bjson$/)
|
|
24
|
-
builder.
|
|
25
|
+
builder.response(:follow_redirects)
|
|
25
26
|
builder.adapter(:net_http)
|
|
26
27
|
end
|
|
27
28
|
|
|
@@ -414,9 +414,9 @@ apple_watch_app_icon('./AppleWatchAppIcon.png')
|
|
|
414
414
|
|
|
415
415
|
The platform of your application (a.e. ios, osx).
|
|
416
416
|
|
|
417
|
-
This option is optional. The default value is "ios" and deliver
|
|
417
|
+
This option is optional. The default value is "ios" and deliver will ignore this option and figure out the platform from your binary if exactly one binary is present.
|
|
418
418
|
|
|
419
|
-
However, in the
|
|
419
|
+
However, in the cases of no binaries or multiple binaries being present, you can specify a platform which you want to deliver explicitly.
|
|
420
420
|
|
|
421
421
|
The available options:
|
|
422
422
|
|
|
@@ -697,6 +697,8 @@ Key | Editable While Live | Directory | Filename
|
|
|
697
697
|
- `profanityOrCrudeHumor`
|
|
698
698
|
- `sexualContentGraphicAndNudity`
|
|
699
699
|
- `sexualContentOrNudity`
|
|
700
|
+
- `socialMedia`
|
|
701
|
+
- `socialMediaAgeRestricted`
|
|
700
702
|
- `violenceCartoonOrFantasy`
|
|
701
703
|
- `violenceRealistic`
|
|
702
704
|
- `violenceRealisticProlongedGraphicOrSadistic`
|
|
@@ -817,7 +819,9 @@ In this case, default values for keywords, urls, name and release notes are used
|
|
|
817
819
|
|
|
818
820
|
[Starting March 20, 2019 Apple's App Store](https://developer.apple.com/news/?id=03202019a) requires 12.9-inch iPad Pro (3rd generation) screenshots additionally to the iPad Pro 2nd generation [screenshots](https://help.apple.com/app-store-connect/#/devd274dd925). As fastlane historically uses the screenshot dimensions to determine the "display family" of a screenshot, this poses a problem as both use the same dimensions and are recognized as the same device family.
|
|
819
821
|
|
|
820
|
-
|
|
822
|
+
For fastlane 2.230.0 and later, screenshots with the shared 12.9-inch iPad Pro resolution are treated as 3rd generation (and later) by default. To upload to the 2nd generation slot, include either `APP_IPAD_PRO_129` or both `12.9` and `2nd generation` in the filename.
|
|
823
|
+
|
|
824
|
+
> Note: For fastlane versions earlier than 2.230.0, a screenshot of a 12.9-inch iPad Pro (3rd generation) must contain either the string `iPad Pro (12.9-inch) (3rd generation)`, `IPAD_PRO_3GEN_129`, or `ipadPro129` (Apple's internal naming of the display family for the 3rd generation iPad Pro) in its filename to be assigned the correct display family and to be uploaded to the correct screenshot slot in your app's metadata.
|
|
821
825
|
|
|
822
826
|
## Automatically create screenshots
|
|
823
827
|
|
|
@@ -9,7 +9,8 @@ module Fastlane
|
|
|
9
9
|
class HockeyAction < Action
|
|
10
10
|
def self.connection(options)
|
|
11
11
|
require 'faraday'
|
|
12
|
-
require '
|
|
12
|
+
require 'faraday/multipart'
|
|
13
|
+
require 'faraday/follow_redirects'
|
|
13
14
|
|
|
14
15
|
base_url = options.delete(:bypass_cdn) ? "https://rink.hockeyapp.net" : "https://upload.hockeyapp.net"
|
|
15
16
|
foptions = {
|
|
@@ -19,7 +20,7 @@ module Fastlane
|
|
|
19
20
|
builder.request(:multipart)
|
|
20
21
|
builder.request(:url_encoded)
|
|
21
22
|
builder.response(:json, content_type: /\bjson$/)
|
|
22
|
-
builder.
|
|
23
|
+
builder.response(:follow_redirects)
|
|
23
24
|
builder.adapter(:net_http)
|
|
24
25
|
end
|
|
25
26
|
end
|
|
@@ -23,14 +23,15 @@ module Fastlane
|
|
|
23
23
|
|
|
24
24
|
def self.upload_build(params)
|
|
25
25
|
require 'faraday'
|
|
26
|
-
require '
|
|
26
|
+
require 'faraday/multipart'
|
|
27
|
+
require 'faraday/follow_redirects'
|
|
27
28
|
|
|
28
29
|
url = INSTALLR_API
|
|
29
30
|
connection = Faraday.new(url) do |builder|
|
|
30
31
|
builder.request(:multipart)
|
|
31
32
|
builder.request(:url_encoded)
|
|
32
33
|
builder.response(:json, content_type: /\bjson$/)
|
|
33
|
-
builder.
|
|
34
|
+
builder.response(:follow_redirects)
|
|
34
35
|
builder.adapter(:net_http)
|
|
35
36
|
end
|
|
36
37
|
|
|
@@ -4,7 +4,6 @@ module Fastlane
|
|
|
4
4
|
# rubocop:disable Metrics/PerceivedComplexity
|
|
5
5
|
def self.run(params)
|
|
6
6
|
package_path = params[:package]
|
|
7
|
-
bundle_id = params[:bundle_id]
|
|
8
7
|
skip_stapling = params[:skip_stapling]
|
|
9
8
|
print_log = params[:print_log]
|
|
10
9
|
verbose = params[:verbose]
|
|
@@ -15,7 +14,7 @@ module Fastlane
|
|
|
15
14
|
end
|
|
16
15
|
api_key = Spaceship::ConnectAPI::Token.from(hash: params[:api_key], filepath: params[:api_key_path])
|
|
17
16
|
|
|
18
|
-
# Compress
|
|
17
|
+
# Compress only if .app bundle
|
|
19
18
|
compressed_package_path = nil
|
|
20
19
|
if File.extname(package_path) == '.app'
|
|
21
20
|
compressed_package_path = "#{package_path}.zip"
|
|
@@ -23,22 +22,12 @@ module Fastlane
|
|
|
23
22
|
"ditto -c -k --rsrc --keepParent \"#{package_path}\" \"#{compressed_package_path}\"",
|
|
24
23
|
log: verbose
|
|
25
24
|
)
|
|
26
|
-
|
|
27
|
-
unless bundle_id
|
|
28
|
-
info_plist_path = File.join(package_path, 'Contents', 'Info.plist')
|
|
29
|
-
bundle_id = Actions.sh(
|
|
30
|
-
"/usr/libexec/PlistBuddy -c \"Print :CFBundleIdentifier\" \"#{info_plist_path}\"",
|
|
31
|
-
log: verbose
|
|
32
|
-
).strip
|
|
33
|
-
end
|
|
34
25
|
end
|
|
35
26
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
notarytool(params, package_path, bundle_id, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
|
27
|
+
notarytool(params, package_path, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
|
39
28
|
end
|
|
40
29
|
|
|
41
|
-
def self.notarytool(params, package_path,
|
|
30
|
+
def self.notarytool(params, package_path, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
|
42
31
|
temp_file = nil
|
|
43
32
|
|
|
44
33
|
# Create authorization part of command with either API Key or Apple ID
|
|
@@ -154,10 +143,6 @@ module Fastlane
|
|
|
154
143
|
optional: true,
|
|
155
144
|
default_value: false,
|
|
156
145
|
type: Boolean),
|
|
157
|
-
FastlaneCore::ConfigItem.new(key: :bundle_id,
|
|
158
|
-
env_name: 'FL_NOTARIZE_BUNDLE_ID',
|
|
159
|
-
description: 'Bundle identifier to uniquely identify the package',
|
|
160
|
-
optional: true),
|
|
161
146
|
FastlaneCore::ConfigItem.new(key: :username,
|
|
162
147
|
env_name: 'FL_NOTARIZE_USERNAME',
|
|
163
148
|
description: 'Apple ID username',
|
|
@@ -11,6 +11,10 @@ module Fastlane
|
|
|
11
11
|
['Device ID', 'Device Name', 'Device Platform']
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
def self.ignored_line?(row)
|
|
15
|
+
row.all? { |value| value.to_s.strip.empty? } || row.first.to_s.strip.start_with?('#')
|
|
16
|
+
end
|
|
17
|
+
|
|
14
18
|
def self.run(params)
|
|
15
19
|
platform = Spaceship::ConnectAPI::BundleIdPlatform.map(params[:platform])
|
|
16
20
|
|
|
@@ -22,6 +26,7 @@ module Fastlane
|
|
|
22
26
|
require 'csv'
|
|
23
27
|
|
|
24
28
|
devices_file = CSV.read(File.expand_path(File.join(params[:devices_file])), col_sep: "\t")
|
|
29
|
+
devices_file = devices_file.reject { |row| ignored_line?(row) }
|
|
25
30
|
unless devices_file.first == file_column_headers.first(2) || devices_file.first == file_column_headers
|
|
26
31
|
UI.user_error!("Please provide a file according to the Apple Sample UDID file (https://developer.apple.com/account/resources/downloads/Multiple-Upload-Samples.zip)")
|
|
27
32
|
end
|
|
@@ -55,8 +60,14 @@ module Fastlane
|
|
|
55
60
|
existing_devices = Spaceship::ConnectAPI::Device.all
|
|
56
61
|
|
|
57
62
|
device_objs = new_devices.map do |device|
|
|
58
|
-
|
|
59
|
-
|
|
63
|
+
normalized_udid = device[0].tr("-", "")
|
|
64
|
+
existing_device = existing_devices.find do |ed|
|
|
65
|
+
ed.udid.tr("-", "").casecmp(normalized_udid).zero?
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
if existing_device
|
|
69
|
+
UI.verbose("UDID #{existing_device.udid} already exists - Skipping...")
|
|
70
|
+
|
|
60
71
|
next
|
|
61
72
|
end
|
|
62
73
|
|
|
@@ -74,8 +85,12 @@ module Fastlane
|
|
|
74
85
|
try_create_device(name: device[1], platform: device_platform, udid: device[0])
|
|
75
86
|
end
|
|
76
87
|
|
|
77
|
-
|
|
78
|
-
|
|
88
|
+
if device_objs.compact.empty?
|
|
89
|
+
UI.success("No new devices to register")
|
|
90
|
+
else
|
|
91
|
+
UI.success("Successfully registered new devices.")
|
|
92
|
+
end
|
|
93
|
+
return device_objs.compact
|
|
79
94
|
end
|
|
80
95
|
|
|
81
96
|
def self.try_create_device(name: nil, platform: nil, udid: nil)
|
|
@@ -169,7 +184,8 @@ module Fastlane
|
|
|
169
184
|
[
|
|
170
185
|
"This will register iOS/Mac devices with the Developer Portal so that you can include them in your provisioning profiles.",
|
|
171
186
|
"This is an optimistic action, in that it will only ever add new devices to the member center, and never remove devices. If a device which has already been registered within the member center is not passed to this action, it will be left alone in the member center and continue to work.",
|
|
172
|
-
"The action will connect to the Apple Developer Portal using the username you specified in your `Appfile` with `apple_id`, but you can override it using the `username` option, or by setting the env variable `ENV['DELIVER_USER']`."
|
|
187
|
+
"The action will connect to the Apple Developer Portal using the username you specified in your `Appfile` with `apple_id`, but you can override it using the `username` option, or by setting the env variable `ENV['DELIVER_USER']`.",
|
|
188
|
+
"When using `devices_file`, blank lines and lines starting with `#` are ignored, so you can group devices, add notes, or comment out a device row without removing it."
|
|
173
189
|
].join("\n")
|
|
174
190
|
end
|
|
175
191
|
|
|
@@ -41,7 +41,7 @@ module Fastlane
|
|
|
41
41
|
UI.message("Creating temporary keychain: \"#{keychain_name}\".")
|
|
42
42
|
Actions::CreateKeychainAction.run(
|
|
43
43
|
name: keychain_name,
|
|
44
|
-
default_keychain:
|
|
44
|
+
default_keychain: params[:set_default_keychain],
|
|
45
45
|
unlock: true,
|
|
46
46
|
timeout: params[:timeout],
|
|
47
47
|
lock_when_sleeps: true,
|
|
@@ -113,7 +113,12 @@ module Fastlane
|
|
|
113
113
|
env_name: "FL_SETUP_CI_KEYCHAIN_NAME",
|
|
114
114
|
description: "Set a custom keychain name",
|
|
115
115
|
type: String,
|
|
116
|
-
default_value: "fastlane_tmp_keychain")
|
|
116
|
+
default_value: "fastlane_tmp_keychain"),
|
|
117
|
+
FastlaneCore::ConfigItem.new(key: :set_default_keychain,
|
|
118
|
+
env_name: "FL_SETUP_CI_SET_DEFAULT_KEYCHAIN",
|
|
119
|
+
description: "Set the temporary keychain as the system default",
|
|
120
|
+
type: Boolean,
|
|
121
|
+
default_value: true)
|
|
117
122
|
]
|
|
118
123
|
end
|
|
119
124
|
|
|
@@ -10,6 +10,7 @@ module Fastlane
|
|
|
10
10
|
cmd << "--package-path #{params[:package_path]}" if params[:package_path]
|
|
11
11
|
cmd << "--configuration #{params[:configuration]}" if params[:configuration]
|
|
12
12
|
cmd << "--disable-sandbox" if params[:disable_sandbox]
|
|
13
|
+
cmd << "--skip-update" if params[:skip_update]
|
|
13
14
|
cmd << "--verbose" if params[:verbose]
|
|
14
15
|
cmd << "--very-verbose" if params[:very_verbose]
|
|
15
16
|
if params[:simulator]
|
|
@@ -113,6 +114,11 @@ module Fastlane
|
|
|
113
114
|
description: "Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf'), requires xcpretty_output to be specified also",
|
|
114
115
|
type: String,
|
|
115
116
|
optional: true),
|
|
117
|
+
FastlaneCore::ConfigItem.new(key: :skip_update,
|
|
118
|
+
env_name: "FL_SPM_SKIP_UPDATE",
|
|
119
|
+
description: "Skip updating dependencies from their remote during a resolution",
|
|
120
|
+
type: Boolean,
|
|
121
|
+
default_value: false),
|
|
116
122
|
FastlaneCore::ConfigItem.new(key: :verbose,
|
|
117
123
|
short_option: "-v",
|
|
118
124
|
env_name: "FL_SPM_VERBOSE",
|
|
@@ -37,6 +37,8 @@ module Fastlane
|
|
|
37
37
|
command << " --use-script-input-files"
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
+
command << path_argument(params) if params[:path]
|
|
41
|
+
|
|
40
42
|
command << " > #{params[:output_file].shellescape}" if params[:output_file]
|
|
41
43
|
|
|
42
44
|
begin
|
|
@@ -49,7 +51,6 @@ module Fastlane
|
|
|
49
51
|
|
|
50
52
|
def self.optional_flags(params)
|
|
51
53
|
command = ""
|
|
52
|
-
command << " --path #{params[:path].shellescape}" if params[:path]
|
|
53
54
|
command << supported_option_switch(params, :strict, "0.9.2", true)
|
|
54
55
|
command << " --config #{params[:config_file].shellescape}" if params[:config_file]
|
|
55
56
|
command << " --reporter #{params[:reporter]}" if params[:reporter]
|
|
@@ -61,6 +62,14 @@ module Fastlane
|
|
|
61
62
|
return command
|
|
62
63
|
end
|
|
63
64
|
|
|
65
|
+
def self.path_argument(params)
|
|
66
|
+
escaped_path = params[:path].shellescape
|
|
67
|
+
version = swiftlint_version(executable: params[:executable])
|
|
68
|
+
return " --path #{escaped_path}" if version < Gem::Version.new('0.48.0')
|
|
69
|
+
|
|
70
|
+
" #{escaped_path}"
|
|
71
|
+
end
|
|
72
|
+
|
|
64
73
|
# Get current SwiftLint version
|
|
65
74
|
def self.swiftlint_version(executable: nil)
|
|
66
75
|
binary = executable || 'swiftlint'
|
|
@@ -9,16 +9,18 @@ module Fastlane
|
|
|
9
9
|
class TestfairyAction < Action
|
|
10
10
|
def self.upload_build(upload_url, ipa, options, timeout)
|
|
11
11
|
require 'faraday'
|
|
12
|
-
require '
|
|
12
|
+
require 'faraday/multipart'
|
|
13
|
+
require 'faraday/retry'
|
|
14
|
+
require 'faraday/follow_redirects'
|
|
13
15
|
|
|
14
16
|
UI.success("Uploading to #{upload_url}...")
|
|
15
17
|
|
|
16
18
|
connection = Faraday.new(url: upload_url) do |builder|
|
|
17
19
|
builder.request(:multipart)
|
|
18
20
|
builder.request(:url_encoded)
|
|
19
|
-
builder.request(:retry, max: 3, interval: 5)
|
|
21
|
+
builder.request(:retry, { max: 3, interval: 5 })
|
|
20
22
|
builder.response(:json, content_type: /\bjson$/)
|
|
21
|
-
builder.
|
|
23
|
+
builder.response(:follow_redirects)
|
|
22
24
|
builder.adapter(:net_http)
|
|
23
25
|
end
|
|
24
26
|
|