fastlane 2.237.0 → 2.239.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 +107 -100
- data/bin/fastlane +2 -2
- data/deliver/lib/deliver/html_generator.rb +1 -1
- data/deliver/lib/deliver/options.rb +9 -1
- data/deliver/lib/deliver/upload_metadata.rb +22 -0
- data/deliver/lib/deliver/upload_screenshots.rb +12 -4
- data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +7 -2
- data/fastlane/lib/fastlane/actions/deploygate.rb +3 -2
- data/fastlane/lib/fastlane/actions/docs/get_push_certificate.md +6 -0
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +4 -2
- 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/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/git_helper.rb +4 -2
- data/fastlane/lib/fastlane/helper/sh_helper.rb +9 -1
- data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +9 -2
- data/fastlane/swift/Fastlane.swift +66 -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 +1 -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 +1 -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/pkg_upload_package_builder.rb +1 -1
- data/fastlane_core/lib/fastlane_core/print_table.rb +0 -16
- data/fastlane_core/lib/fastlane_core/queue_worker.rb +10 -1
- data/fastlane_core/lib/fastlane_core/video_utils.rb +4 -2
- data/gym/lib/gym/module.rb +20 -2
- data/match/lib/match/nuke.rb +2 -2
- data/match/lib/match/storage/git_storage.rb +1 -4
- data/match/lib/match/storage/google_cloud_storage.rb +6 -1
- data/pem/lib/pem/manager.rb +5 -1
- data/pem/lib/pem/options.rb +6 -0
- data/pilot/lib/pilot/build_manager.rb +34 -2
- data/pilot/lib/pilot/options.rb +10 -2
- data/pilot/lib/pilot/tester_manager.rb +2 -2
- data/precheck/lib/precheck/rules/copyright_date_rule.rb +1 -1
- data/precheck/lib/precheck/rules/unreachable_urls_rule.rb +2 -2
- data/sigh/lib/assets/resign.sh +21 -9
- 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/app_store_version.rb +16 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/routing_app_coverage.rb +75 -0
- data/spaceship/lib/spaceship/connect_api/token.rb +6 -1
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +45 -0
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- data/spaceship/lib/spaceship/helper/plist_middleware.rb +37 -8
- data/supply/lib/supply/client.rb +6 -0
- data/supply/lib/supply/reader.rb +15 -0
- metadata +79 -53
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bc5b46c829520975d6ad2871bf94e7bc3df0f4d2863dcbed323e2b22c2205931
|
|
4
|
+
data.tar.gz: 98f468374c8356ba200173ef637157a9e33747d4a46f3b89b70d4bc407367c47
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c03a7a56e6229a7c03f053340e74c8f146c1e4b0149dc0523d75370fa5d755f77c571e0c7a974c955c42fab6fd8d1668823dde0cd031a573e2b1340105c76f69
|
|
7
|
+
data.tar.gz: bc86b7ea3505cf0fd59c0d22ab2ae3324f16b77170abfa4fffcae1cce948d561ea4c436b92cca599d67838e3d6ab59328e42a418be04f4abef90a1d9378b5a26
|
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/ibotpeaches'>Connor Tumbleson</a></h4>
|
|
44
|
-
</td>
|
|
45
|
-
<td id='manu-wallner'>
|
|
46
|
-
<a href='https://github.com/milch'>
|
|
47
|
-
<img src='https://github.com/milch.png' width='140px;'>
|
|
48
|
-
</a>
|
|
49
|
-
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
|
50
|
-
</td>
|
|
51
|
-
<td id='matthew-ellis'>
|
|
52
|
-
<a href='https://github.com/matthewellis'>
|
|
53
|
-
<img src='https://github.com/matthewellis.png' width='140px;'>
|
|
39
|
+
<td id='helmut-januschka'>
|
|
40
|
+
<a href='https://github.com/hjanuschka'>
|
|
41
|
+
<img src='https://github.com/hjanuschka.png' width='140px;'>
|
|
54
42
|
</a>
|
|
55
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
43
|
+
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
|
56
44
|
</td>
|
|
57
45
|
<td id='josh-holtz'>
|
|
58
46
|
<a href='https://github.com/joshdholtz'>
|
|
@@ -60,57 +48,31 @@ 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/joshdholtz'>Josh Holtz</a></h4>
|
|
62
50
|
</td>
|
|
63
|
-
<td id='jorge-revuelta-h'>
|
|
64
|
-
<a href='https://github.com/minuscorp'>
|
|
65
|
-
<img src='https://github.com/minuscorp.png' width='140px;'>
|
|
66
|
-
</a>
|
|
67
|
-
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
|
68
|
-
</td>
|
|
69
|
-
</tr>
|
|
70
|
-
<tr>
|
|
71
51
|
<td id='felix-krause'>
|
|
72
52
|
<a href='https://github.com/KrauseFx'>
|
|
73
53
|
<img src='https://github.com/KrauseFx.png' width='140px;'>
|
|
74
54
|
</a>
|
|
75
55
|
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
|
76
56
|
</td>
|
|
77
|
-
<td id='maksym-grebenets'>
|
|
78
|
-
<a href='https://github.com/mgrebenets'>
|
|
79
|
-
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
|
80
|
-
</a>
|
|
81
|
-
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
|
82
|
-
</td>
|
|
83
57
|
<td id='kohki-miki'>
|
|
84
58
|
<a href='https://github.com/giginet'>
|
|
85
59
|
<img src='https://github.com/giginet.png' width='140px;'>
|
|
86
60
|
</a>
|
|
87
61
|
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
|
88
62
|
</td>
|
|
89
|
-
<td id='
|
|
90
|
-
<a href='https://github.com/
|
|
91
|
-
<img src='https://github.com/
|
|
92
|
-
</a>
|
|
93
|
-
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
|
94
|
-
</td>
|
|
95
|
-
<td id='luka-mirosevic'>
|
|
96
|
-
<a href='https://github.com/lmirosevic'>
|
|
97
|
-
<img src='https://github.com/lmirosevic.png' width='140px;'>
|
|
63
|
+
<td id='andrew-mcburney'>
|
|
64
|
+
<a href='https://github.com/armcburney'>
|
|
65
|
+
<img src='https://github.com/armcburney.png' width='140px;'>
|
|
98
66
|
</a>
|
|
99
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
67
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
|
100
68
|
</td>
|
|
101
69
|
</tr>
|
|
102
70
|
<tr>
|
|
103
|
-
<td id='
|
|
104
|
-
<a href='https://github.com/
|
|
105
|
-
<img src='https://github.com/
|
|
106
|
-
</a>
|
|
107
|
-
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
|
108
|
-
</td>
|
|
109
|
-
<td id='stefan-natchev'>
|
|
110
|
-
<a href='https://github.com/snatchev'>
|
|
111
|
-
<img src='https://github.com/snatchev.png' width='140px;'>
|
|
71
|
+
<td id='roger-oba'>
|
|
72
|
+
<a href='https://github.com/rogerluan'>
|
|
73
|
+
<img src='https://github.com/rogerluan.png' width='140px;'>
|
|
112
74
|
</a>
|
|
113
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
75
|
+
<h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
|
|
114
76
|
</td>
|
|
115
77
|
<td id='max-ott'>
|
|
116
78
|
<a href='https://github.com/max-ott'>
|
|
@@ -118,95 +80,133 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
118
80
|
</a>
|
|
119
81
|
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
|
120
82
|
</td>
|
|
121
|
-
<td id='
|
|
122
|
-
<a href='https://github.com/
|
|
123
|
-
<img src='https://github.com/
|
|
83
|
+
<td id='aaron-brager'>
|
|
84
|
+
<a href='https://github.com/getaaron'>
|
|
85
|
+
<img src='https://github.com/getaaron.png' width='140px;'>
|
|
124
86
|
</a>
|
|
125
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
87
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
|
126
88
|
</td>
|
|
127
|
-
<td id='
|
|
128
|
-
<a href='https://github.com/
|
|
129
|
-
<img src='https://github.com/
|
|
89
|
+
<td id='matthew-ellis'>
|
|
90
|
+
<a href='https://github.com/matthewellis'>
|
|
91
|
+
<img src='https://github.com/matthewellis.png' width='140px;'>
|
|
130
92
|
</a>
|
|
131
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
93
|
+
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
|
132
94
|
</td>
|
|
133
|
-
</tr>
|
|
134
|
-
<tr>
|
|
135
95
|
<td id='iulian-onofrei'>
|
|
136
96
|
<a href='https://github.com/revolter'>
|
|
137
97
|
<img src='https://github.com/revolter.png' width='140px;'>
|
|
138
98
|
</a>
|
|
139
99
|
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
|
140
100
|
</td>
|
|
141
|
-
|
|
142
|
-
<
|
|
143
|
-
<
|
|
101
|
+
</tr>
|
|
102
|
+
<tr>
|
|
103
|
+
<td id='danielle-tomlinson'>
|
|
104
|
+
<a href='https://github.com/endocrimes'>
|
|
105
|
+
<img src='https://github.com/endocrimes.png' width='140px;'>
|
|
144
106
|
</a>
|
|
145
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
107
|
+
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
|
146
108
|
</td>
|
|
147
|
-
<td id='
|
|
148
|
-
<a href='https://github.com/
|
|
149
|
-
<img src='https://github.com/
|
|
109
|
+
<td id='fumiya-nakamura'>
|
|
110
|
+
<a href='https://github.com/nafu'>
|
|
111
|
+
<img src='https://github.com/nafu.png' width='140px;'>
|
|
150
112
|
</a>
|
|
151
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
113
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
|
152
114
|
</td>
|
|
153
|
-
<td id='
|
|
154
|
-
<a href='https://github.com/
|
|
155
|
-
<img src='https://github.com/
|
|
115
|
+
<td id='olivier-halligon'>
|
|
116
|
+
<a href='https://github.com/AliSoftware'>
|
|
117
|
+
<img src='https://github.com/AliSoftware.png' width='140px;'>
|
|
156
118
|
</a>
|
|
157
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
119
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
|
158
120
|
</td>
|
|
159
|
-
<td id='
|
|
160
|
-
<a href='https://github.com/
|
|
161
|
-
<img src='https://github.com/
|
|
121
|
+
<td id='jérôme-lacoste'>
|
|
122
|
+
<a href='https://github.com/lacostej'>
|
|
123
|
+
<img src='https://github.com/lacostej.png' width='140px;'>
|
|
162
124
|
</a>
|
|
163
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
125
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
|
126
|
+
</td>
|
|
127
|
+
<td id='manu-wallner'>
|
|
128
|
+
<a href='https://github.com/milch'>
|
|
129
|
+
<img src='https://github.com/milch.png' width='140px;'>
|
|
130
|
+
</a>
|
|
131
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
|
164
132
|
</td>
|
|
165
133
|
</tr>
|
|
166
134
|
<tr>
|
|
135
|
+
<td id='jimmy-dee'>
|
|
136
|
+
<a href='https://github.com/jdee'>
|
|
137
|
+
<img src='https://github.com/jdee.png' width='140px;'>
|
|
138
|
+
</a>
|
|
139
|
+
<h4 align='center'>Jimmy Dee</h4>
|
|
140
|
+
</td>
|
|
167
141
|
<td id='satoshi-namai'>
|
|
168
142
|
<a href='https://github.com/ainame'>
|
|
169
143
|
<img src='https://github.com/ainame.png' width='140px;'>
|
|
170
144
|
</a>
|
|
171
145
|
<h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
|
|
172
146
|
</td>
|
|
173
|
-
<td id='
|
|
174
|
-
<a href='https://github.com/
|
|
175
|
-
<img src='https://github.com/
|
|
147
|
+
<td id='łukasz-grabowski'>
|
|
148
|
+
<a href='https://github.com/lucgrabowski'>
|
|
149
|
+
<img src='https://github.com/lucgrabowski.png' width='140px;'>
|
|
176
150
|
</a>
|
|
177
|
-
<h4 align='center'
|
|
151
|
+
<h4 align='center'>Łukasz Grabowski</h4>
|
|
178
152
|
</td>
|
|
179
|
-
<td id='
|
|
180
|
-
<a href='https://github.com/
|
|
181
|
-
<img src='https://github.com/
|
|
153
|
+
<td id='stefan-natchev'>
|
|
154
|
+
<a href='https://github.com/snatchev'>
|
|
155
|
+
<img src='https://github.com/snatchev.png' width='140px;'>
|
|
182
156
|
</a>
|
|
183
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
157
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
|
184
158
|
</td>
|
|
185
|
-
<td id='
|
|
186
|
-
<a href='https://github.com/
|
|
187
|
-
<img src='https://github.com/
|
|
159
|
+
<td id='manish-rathi'>
|
|
160
|
+
<a href='https://github.com/crazymanish'>
|
|
161
|
+
<img src='https://github.com/crazymanish.png' width='140px;'>
|
|
188
162
|
</a>
|
|
189
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
163
|
+
<h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
|
|
190
164
|
</td>
|
|
191
|
-
|
|
192
|
-
<
|
|
193
|
-
<
|
|
165
|
+
</tr>
|
|
166
|
+
<tr>
|
|
167
|
+
<td id='joshua-liebowitz'>
|
|
168
|
+
<a href='https://github.com/taquitos'>
|
|
169
|
+
<img src='https://github.com/taquitos.png' width='140px;'>
|
|
194
170
|
</a>
|
|
195
|
-
<h4 align='center'>
|
|
171
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
|
172
|
+
</td>
|
|
173
|
+
<td id='daniel-jankowski'>
|
|
174
|
+
<a href='https://github.com/mollyIV'>
|
|
175
|
+
<img src='https://github.com/mollyIV.png' width='140px;'>
|
|
176
|
+
</a>
|
|
177
|
+
<h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
|
|
178
|
+
</td>
|
|
179
|
+
<td id='jorge-revuelta-h'>
|
|
180
|
+
<a href='https://github.com/minuscorp'>
|
|
181
|
+
<img src='https://github.com/minuscorp.png' width='140px;'>
|
|
182
|
+
</a>
|
|
183
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
|
184
|
+
</td>
|
|
185
|
+
<td id='jan-piotrowski'>
|
|
186
|
+
<a href='https://github.com/janpio'>
|
|
187
|
+
<img src='https://github.com/janpio.png' width='140px;'>
|
|
188
|
+
</a>
|
|
189
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
|
190
|
+
</td>
|
|
191
|
+
<td id='connor-tumbleson'>
|
|
192
|
+
<a href='https://github.com/ibotpeaches'>
|
|
193
|
+
<img src='https://github.com/ibotpeaches.png' width='140px;'>
|
|
194
|
+
</a>
|
|
195
|
+
<h4 align='center'><a href='https://twitter.com/ibotpeaches'>Connor Tumbleson</a></h4>
|
|
196
196
|
</td>
|
|
197
197
|
</tr>
|
|
198
198
|
<tr>
|
|
199
|
-
<td id='
|
|
200
|
-
<a href='https://github.com/
|
|
201
|
-
<img src='https://github.com/
|
|
199
|
+
<td id='maksym-grebenets'>
|
|
200
|
+
<a href='https://github.com/mgrebenets'>
|
|
201
|
+
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
|
202
202
|
</a>
|
|
203
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
203
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
|
204
204
|
</td>
|
|
205
|
-
<td id='
|
|
206
|
-
<a href='https://github.com/
|
|
207
|
-
<img src='https://github.com/
|
|
205
|
+
<td id='luka-mirosevic'>
|
|
206
|
+
<a href='https://github.com/lmirosevic'>
|
|
207
|
+
<img src='https://github.com/lmirosevic.png' width='140px;'>
|
|
208
208
|
</a>
|
|
209
|
-
<h4 align='center'
|
|
209
|
+
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</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
|
|
data/bin/fastlane
CHANGED
|
@@ -24,7 +24,7 @@ module Deliver
|
|
|
24
24
|
UI.important("Verifying the upload via the HTML file can be disabled by either adding")
|
|
25
25
|
UI.important("`force true` to your Deliverfile or using `fastlane deliver --force`")
|
|
26
26
|
|
|
27
|
-
system("open
|
|
27
|
+
system("open", html_path)
|
|
28
28
|
okay = UI.confirm("Does the Preview on path '#{html_path}' look okay for you?")
|
|
29
29
|
|
|
30
30
|
if okay
|
|
@@ -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),
|
|
@@ -420,6 +420,14 @@ module Deliver
|
|
|
420
420
|
env_name: "DELIVER_APP_REVIEW_ATTACHMENT_FILE",
|
|
421
421
|
description: "Metadata: Path to the app review attachment file",
|
|
422
422
|
optional: true),
|
|
423
|
+
FastlaneCore::ConfigItem.new(key: :routing_app_coverage_file,
|
|
424
|
+
env_name: "DELIVER_ROUTING_APP_COVERAGE_FILE",
|
|
425
|
+
description: "Metadata: Path to the routing app coverage file (`.geojson`) that is required for routing apps",
|
|
426
|
+
optional: true,
|
|
427
|
+
verify_block: proc do |value|
|
|
428
|
+
UI.user_error!("Could not find routing app coverage file at path '#{File.expand_path(value)}'") unless File.exist?(value)
|
|
429
|
+
UI.user_error!("Routing app coverage file must be a .geojson file") unless File.extname(value).casecmp(".geojson").zero?
|
|
430
|
+
end),
|
|
423
431
|
# Localised
|
|
424
432
|
FastlaneCore::ConfigItem.new(key: :description,
|
|
425
433
|
description: "Metadata: The localised app description",
|
|
@@ -357,6 +357,7 @@ module Deliver
|
|
|
357
357
|
review_information(version)
|
|
358
358
|
app_clip_review_information(version)
|
|
359
359
|
review_attachment_file(version)
|
|
360
|
+
routing_app_coverage_file(version)
|
|
360
361
|
app_rating(app_info)
|
|
361
362
|
end
|
|
362
363
|
|
|
@@ -766,6 +767,27 @@ module Deliver
|
|
|
766
767
|
end
|
|
767
768
|
end
|
|
768
769
|
|
|
770
|
+
def routing_app_coverage_file(version)
|
|
771
|
+
# Skip logic entirely if no coverage file passed. So status-quo stays the same.
|
|
772
|
+
return unless options[:routing_app_coverage_file]
|
|
773
|
+
|
|
774
|
+
routing_app_coverage =
|
|
775
|
+
begin
|
|
776
|
+
version.fetch_routing_app_coverage
|
|
777
|
+
rescue => error
|
|
778
|
+
UI.error("Error fetching routing app coverage - #{error.message}")
|
|
779
|
+
nil
|
|
780
|
+
end
|
|
781
|
+
|
|
782
|
+
if routing_app_coverage
|
|
783
|
+
UI.message("Removing previous routing app coverage file from App Store Connect")
|
|
784
|
+
routing_app_coverage.delete!
|
|
785
|
+
end
|
|
786
|
+
|
|
787
|
+
UI.message("Uploading routing app coverage file to App Store Connect")
|
|
788
|
+
version.upload_routing_app_coverage(path: options[:routing_app_coverage_file])
|
|
789
|
+
end
|
|
790
|
+
|
|
769
791
|
def app_rating(app_info)
|
|
770
792
|
return unless options[:app_rating_config_path]
|
|
771
793
|
|
|
@@ -171,13 +171,17 @@ module Deliver
|
|
|
171
171
|
def wait_for_complete(iterator, timeout_seconds)
|
|
172
172
|
start_time = Time.now
|
|
173
173
|
loop do
|
|
174
|
+
# App Store Connect publishes a screenshot's `sourceFileChecksum` asynchronously,
|
|
175
|
+
# shortly after its state becomes COMPLETE. (#30094)
|
|
176
|
+
number_of_screenshots_missing_checksum = 0
|
|
174
177
|
states = iterator.each_app_screenshot.map { |_, _, app_screenshot| app_screenshot }.each_with_object({}) do |app_screenshot, hash|
|
|
175
178
|
state = app_screenshot.asset_delivery_state['state']
|
|
176
179
|
hash[state] ||= 0
|
|
177
180
|
hash[state] += 1
|
|
181
|
+
number_of_screenshots_missing_checksum += 1 if state == 'COMPLETE' && app_screenshot.source_file_checksum.nil?
|
|
178
182
|
end
|
|
179
183
|
|
|
180
|
-
is_processing = states.fetch('UPLOAD_COMPLETE', 0) > 0
|
|
184
|
+
is_processing = states.fetch('UPLOAD_COMPLETE', 0) > 0 || number_of_screenshots_missing_checksum > 0
|
|
181
185
|
return states unless is_processing
|
|
182
186
|
|
|
183
187
|
if Time.now - start_time > timeout_seconds
|
|
@@ -185,7 +189,11 @@ module Deliver
|
|
|
185
189
|
return states
|
|
186
190
|
end
|
|
187
191
|
|
|
188
|
-
|
|
192
|
+
if number_of_screenshots_missing_checksum > 0
|
|
193
|
+
UI.verbose("There are still incomplete screenshots - #{states}, missing checksum: #{number_of_screenshots_missing_checksum}")
|
|
194
|
+
else
|
|
195
|
+
UI.verbose("There are still incomplete screenshots - #{states}")
|
|
196
|
+
end
|
|
189
197
|
sleep(5)
|
|
190
198
|
end
|
|
191
199
|
end
|
|
@@ -205,9 +213,9 @@ module Deliver
|
|
|
205
213
|
UI.user_error!("Failed verification of all screenshots uploaded... #{incomplete_screenshot_count} incomplete screenshot(s) still exist")
|
|
206
214
|
else
|
|
207
215
|
UI.error("Failed to upload all screenshots... Tries remaining: #{tries}")
|
|
208
|
-
# Delete bad entries before retry
|
|
216
|
+
# Delete bad entries before retry (not complete OR missing checksum)
|
|
209
217
|
iterator.each_app_screenshot do |_, _, app_screenshot|
|
|
210
|
-
app_screenshot.delete! unless app_screenshot.complete?
|
|
218
|
+
app_screenshot.delete! unless app_screenshot.complete? && !app_screenshot.source_file_checksum.nil?
|
|
211
219
|
end
|
|
212
220
|
upload_screenshots(localizations, screenshots_per_language, timeout_seconds, tries: tries)
|
|
213
221
|
end
|
|
@@ -37,9 +37,9 @@ module Fastlane
|
|
|
37
37
|
|
|
38
38
|
Dir.chdir(params[:path]) do
|
|
39
39
|
if params[:commits_count]
|
|
40
|
-
changelog = Actions.git_log_last_commits(params[:pretty], params[:commits_count], merge_commit_filtering, params[:date_format], params[:ancestry_path], params[:app_path])
|
|
40
|
+
changelog = Actions.git_log_last_commits(params[:pretty], params[:commits_count], params[:matching_pattern], merge_commit_filtering, params[:date_format], params[:ancestry_path], params[:app_path])
|
|
41
41
|
else
|
|
42
|
-
changelog = Actions.git_log_between(params[:pretty], from, to, merge_commit_filtering, params[:date_format], params[:ancestry_path], params[:app_path])
|
|
42
|
+
changelog = Actions.git_log_between(params[:pretty], from, to, params[:matching_pattern], merge_commit_filtering, params[:date_format], params[:ancestry_path], params[:app_path])
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
changelog = changelog.gsub("\n\n", "\n") if changelog # as there are duplicate newlines
|
|
@@ -104,6 +104,10 @@ module Fastlane
|
|
|
104
104
|
description: 'The format applied to each commit while generating the collected value',
|
|
105
105
|
optional: true,
|
|
106
106
|
default_value: '%B'),
|
|
107
|
+
FastlaneCore::ConfigItem.new(key: :matching_pattern,
|
|
108
|
+
env_name: 'FL_CHANGELOG_FROM_GIT_COMMITS_MATCHING_PATTERN',
|
|
109
|
+
description: 'A regexp pattern to filter only the commits matching the pattern',
|
|
110
|
+
optional: true),
|
|
107
111
|
FastlaneCore::ConfigItem.new(key: :date_format,
|
|
108
112
|
env_name: 'FL_CHANGELOG_FROM_GIT_COMMITS_DATE_FORMAT',
|
|
109
113
|
description: 'The date format applied to each commit while generating the collected value',
|
|
@@ -179,6 +183,7 @@ module Fastlane
|
|
|
179
183
|
pretty: "- (%ae) %s", # Optional, lets you provide a custom format to apply to each commit when generating the changelog text
|
|
180
184
|
date_format: "short", # Optional, lets you provide an additional date format to dates within the pretty-formatted string
|
|
181
185
|
match_lightweight_tag: false, # Optional, lets you ignore lightweight (non-annotated) tags when searching for the last tag
|
|
186
|
+
matching_pattern: "[.*?].*", # Optional, lets you filter out commits not matching the regex pattern
|
|
182
187
|
merge_commit_filtering: "exclude_merges" # Optional, lets you filter out merge commits
|
|
183
188
|
)'
|
|
184
189
|
]
|
|
@@ -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
|
|
|
@@ -74,6 +74,12 @@ If you want to generate a Website Push certificate:
|
|
|
74
74
|
fastlane pem --website_push
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
+
If you want to generate a VoIP Services certificate (the type PushKit requires):
|
|
78
|
+
|
|
79
|
+
```no-highlight
|
|
80
|
+
fastlane pem --voip_push
|
|
81
|
+
```
|
|
82
|
+
|
|
77
83
|
Set a password for your `p12` file:
|
|
78
84
|
|
|
79
85
|
```no-highlight
|
|
@@ -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`
|
|
@@ -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',
|