fastlane 2.197.0 → 2.200.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/README.md +72 -72
- data/cert/lib/cert/runner.rb +5 -2
- data/deliver/lib/deliver/app_screenshot.rb +8 -0
- data/deliver/lib/deliver/app_screenshot_iterator.rb +1 -1
- data/deliver/lib/deliver/runner.rb +1 -1
- data/fastlane/lib/.DS_Store +0 -0
- data/fastlane/lib/fastlane/.DS_Store +0 -0
- data/fastlane/lib/fastlane/actions/.DS_Store +0 -0
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +26 -27
- data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_version_number.rb +7 -2
- data/fastlane/lib/fastlane/actions/notarize.rb +29 -11
- data/fastlane/lib/fastlane/actions/set_github_release.rb +11 -5
- data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +18 -1
- data/fastlane/lib/fastlane/actions/xcversion.rb +18 -3
- data/fastlane/lib/fastlane/documentation/docs_generator.rb +17 -12
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Actions.swift +1 -1
- data/fastlane/swift/Appfile.swift +1 -1
- data/fastlane/swift/ArgumentProcessor.swift +1 -1
- data/fastlane/swift/ControlCommand.swift +1 -1
- data/fastlane/swift/Deliverfile.swift +2 -2
- data/fastlane/swift/DeliverfileProtocol.swift +2 -2
- data/fastlane/swift/Fastlane.swift +65 -20
- data/fastlane/swift/Gymfile.swift +2 -2
- data/fastlane/swift/GymfileProtocol.swift +6 -2
- data/fastlane/swift/LaneFileProtocol.swift +1 -1
- data/fastlane/swift/MainProcess.swift +1 -1
- data/fastlane/swift/Matchfile.swift +2 -2
- data/fastlane/swift/MatchfileProtocol.swift +2 -2
- data/fastlane/swift/OptionalConfigValue.swift +1 -1
- data/fastlane/swift/Plugins.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +2 -2
- data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
- data/fastlane/swift/RubyCommand.swift +1 -1
- data/fastlane/swift/RubyCommandable.swift +1 -1
- data/fastlane/swift/Runner.swift +4 -8
- data/fastlane/swift/RunnerArgument.swift +1 -1
- data/fastlane/swift/Scanfile.swift +2 -2
- data/fastlane/swift/ScanfileProtocol.swift +4 -4
- data/fastlane/swift/Screengrabfile.swift +2 -2
- data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
- data/fastlane/swift/Snapshotfile.swift +2 -2
- data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
- data/fastlane/swift/SocketClient.swift +1 -1
- data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
- data/fastlane/swift/SocketResponse.swift +1 -1
- data/fastlane/swift/formatting/Brewfile.lock.json +23 -18
- data/fastlane/swift/main.swift +1 -1
- data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +10 -5
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +41 -7
- data/gym/lib/gym/generators/build_command_generator.rb +2 -2
- data/gym/lib/gym/options.rb +6 -0
- data/match/lib/match/nuke.rb +79 -1
- data/match/lib/match/spaceship_ensure.rb +1 -0
- data/pem/lib/pem/manager.rb +29 -6
- data/pem/lib/pem/options.rb +9 -0
- data/pilot/lib/pilot/build_manager.rb +1 -1
- data/scan/lib/scan/options.rb +2 -2
- data/scan/lib/scan/runner.rb +2 -2
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +1 -1
- data/spaceship/lib/spaceship/client.rb +35 -15
- data/spaceship/lib/spaceship/commands_generator.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/app.rb +43 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +2 -0
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +3 -0
- data/spaceship/lib/spaceship/connect_api/models/review_submission.rb +73 -0
- data/spaceship/lib/spaceship/connect_api/models/review_submission_item.rb +40 -0
- data/spaceship/lib/spaceship/connect_api/response.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +83 -0
- data/spaceship/lib/spaceship/connect_api.rb +2 -0
- data/spaceship/lib/spaceship/globals.rb +9 -0
- data/spaceship/lib/spaceship/spaceauth_runner.rb +1 -1
- data/supply/lib/supply/options.rb +8 -0
- data/supply/lib/supply/uploader.rb +6 -2
- data/trainer/lib/.DS_Store +0 -0
- metadata +25 -19
- data/spaceship/lib/spaceship/connect_api/models/.build.rb.swp +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f80e15767a649f85c39e5b6d1cd2f0f8e4dee37c81a2c1e38c7b90673c04d68
|
4
|
+
data.tar.gz: 41955caa65ee85fe319708bae375070d44562db6717307eebe28b57be5e6f280
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed42b7966058076011ee4a18eee35e70457f75f80b014623b9097289798304f62fb030ec16befa57c8bc39b0e9e2eb40745bff8341193cdcd32dcc4eaef8d8e0
|
7
|
+
data.tar.gz: 3ae156afb0514a3a9d6e310b4610655f421b76e297aece23615c72598af7f4b2dfe7e6bc3ca5658a08aedd5060cba71718dfd049654662f9172ed0d7dc030638
|
data/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2015-
|
3
|
+
Copyright (c) 2015-2022 The Fastlane Authors
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -35,36 +35,36 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
35
35
|
<!-- This table is regenerated and resorted on each release -->
|
36
36
|
<table id='team'>
|
37
37
|
<tr>
|
38
|
-
<td id='josh-holtz'>
|
39
|
-
<a href='https://github.com/joshdholtz'>
|
40
|
-
<img src='https://github.com/joshdholtz.png' width='140px;'>
|
41
|
-
</a>
|
42
|
-
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
43
|
-
</td>
|
44
|
-
<td id='fumiya-nakamura'>
|
45
|
-
<a href='https://github.com/nafu'>
|
46
|
-
<img src='https://github.com/nafu.png' width='140px;'>
|
47
|
-
</a>
|
48
|
-
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
49
|
-
</td>
|
50
38
|
<td id='danielle-tomlinson'>
|
51
39
|
<a href='https://github.com/endocrimes'>
|
52
40
|
<img src='https://github.com/endocrimes.png' width='140px;'>
|
53
41
|
</a>
|
54
42
|
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
55
43
|
</td>
|
56
|
-
<td id='maksym-grebenets'>
|
57
|
-
<a href='https://github.com/mgrebenets'>
|
58
|
-
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
59
|
-
</a>
|
60
|
-
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
61
|
-
</td>
|
62
44
|
<td id='satoshi-namai'>
|
63
45
|
<a href='https://github.com/ainame'>
|
64
46
|
<img src='https://github.com/ainame.png' width='140px;'>
|
65
47
|
</a>
|
66
48
|
<h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
|
67
49
|
</td>
|
50
|
+
<td id='jorge-revuelta-h'>
|
51
|
+
<a href='https://github.com/minuscorp'>
|
52
|
+
<img src='https://github.com/minuscorp.png' width='140px;'>
|
53
|
+
</a>
|
54
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
55
|
+
</td>
|
56
|
+
<td id='jérôme-lacoste'>
|
57
|
+
<a href='https://github.com/lacostej'>
|
58
|
+
<img src='https://github.com/lacostej.png' width='140px;'>
|
59
|
+
</a>
|
60
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
61
|
+
</td>
|
62
|
+
<td id='jan-piotrowski'>
|
63
|
+
<a href='https://github.com/janpio'>
|
64
|
+
<img src='https://github.com/janpio.png' width='140px;'>
|
65
|
+
</a>
|
66
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
67
|
+
</td>
|
68
68
|
</tr>
|
69
69
|
<tr>
|
70
70
|
<td id='roger-oba'>
|
@@ -73,11 +73,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
73
73
|
</a>
|
74
74
|
<h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
|
75
75
|
</td>
|
76
|
-
<td id='
|
77
|
-
<a href='https://github.com/
|
78
|
-
<img src='https://github.com/
|
76
|
+
<td id='kohki-miki'>
|
77
|
+
<a href='https://github.com/giginet'>
|
78
|
+
<img src='https://github.com/giginet.png' width='140px;'>
|
79
79
|
</a>
|
80
|
-
<h4 align='center'><a href='https://twitter.com/
|
80
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
81
81
|
</td>
|
82
82
|
<td id='olivier-halligon'>
|
83
83
|
<a href='https://github.com/AliSoftware'>
|
@@ -91,31 +91,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
91
91
|
</a>
|
92
92
|
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
93
93
|
</td>
|
94
|
-
<td id='
|
95
|
-
<a href='https://github.com/
|
96
|
-
<img src='https://github.com/
|
94
|
+
<td id='manish-rathi'>
|
95
|
+
<a href='https://github.com/crazymanish'>
|
96
|
+
<img src='https://github.com/crazymanish.png' width='140px;'>
|
97
97
|
</a>
|
98
|
-
<h4 align='center'><a href='https://twitter.com/
|
98
|
+
<h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
|
99
99
|
</td>
|
100
100
|
</tr>
|
101
101
|
<tr>
|
102
|
-
<td id='
|
103
|
-
<a href='https://github.com/
|
104
|
-
<img src='https://github.com/
|
102
|
+
<td id='matthew-ellis'>
|
103
|
+
<a href='https://github.com/matthewellis'>
|
104
|
+
<img src='https://github.com/matthewellis.png' width='140px;'>
|
105
105
|
</a>
|
106
|
-
<h4 align='center'><a href='https://twitter.com/
|
106
|
+
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
107
107
|
</td>
|
108
|
-
<td id='
|
109
|
-
<a href='https://github.com/
|
110
|
-
<img src='https://github.com/
|
108
|
+
<td id='joshua-liebowitz'>
|
109
|
+
<a href='https://github.com/taquitos'>
|
110
|
+
<img src='https://github.com/taquitos.png' width='140px;'>
|
111
111
|
</a>
|
112
|
-
<h4 align='center'><a href='https://twitter.com/
|
112
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
113
113
|
</td>
|
114
|
-
<td id='
|
115
|
-
<a href='https://github.com/
|
116
|
-
<img src='https://github.com/
|
114
|
+
<td id='josh-holtz'>
|
115
|
+
<a href='https://github.com/joshdholtz'>
|
116
|
+
<img src='https://github.com/joshdholtz.png' width='140px;'>
|
117
117
|
</a>
|
118
|
-
<h4 align='center'><a href='https://twitter.com/
|
118
|
+
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
119
119
|
</td>
|
120
120
|
<td id='aaron-brager'>
|
121
121
|
<a href='https://github.com/getaaron'>
|
@@ -123,43 +123,43 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
123
123
|
</a>
|
124
124
|
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
125
125
|
</td>
|
126
|
+
<td id='manu-wallner'>
|
127
|
+
<a href='https://github.com/milch'>
|
128
|
+
<img src='https://github.com/milch.png' width='140px;'>
|
129
|
+
</a>
|
130
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
131
|
+
</td>
|
132
|
+
</tr>
|
133
|
+
<tr>
|
126
134
|
<td id='luka-mirosevic'>
|
127
135
|
<a href='https://github.com/lmirosevic'>
|
128
136
|
<img src='https://github.com/lmirosevic.png' width='140px;'>
|
129
137
|
</a>
|
130
138
|
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
131
139
|
</td>
|
132
|
-
|
133
|
-
<
|
140
|
+
<td id='daniel-jankowski'>
|
141
|
+
<a href='https://github.com/mollyIV'>
|
142
|
+
<img src='https://github.com/mollyIV.png' width='140px;'>
|
143
|
+
</a>
|
144
|
+
<h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
|
145
|
+
</td>
|
134
146
|
<td id='felix-krause'>
|
135
147
|
<a href='https://github.com/KrauseFx'>
|
136
148
|
<img src='https://github.com/KrauseFx.png' width='140px;'>
|
137
149
|
</a>
|
138
150
|
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
139
151
|
</td>
|
140
|
-
<td id='
|
141
|
-
<a href='https://github.com/
|
142
|
-
<img src='https://github.com/
|
143
|
-
</a>
|
144
|
-
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
145
|
-
</td>
|
146
|
-
<td id='jimmy-dee'>
|
147
|
-
<a href='https://github.com/jdee'>
|
148
|
-
<img src='https://github.com/jdee.png' width='140px;'>
|
149
|
-
</a>
|
150
|
-
<h4 align='center'>Jimmy Dee</h4>
|
151
|
-
</td>
|
152
|
-
<td id='manish-rathi'>
|
153
|
-
<a href='https://github.com/crazymanish'>
|
154
|
-
<img src='https://github.com/crazymanish.png' width='140px;'>
|
152
|
+
<td id='stefan-natchev'>
|
153
|
+
<a href='https://github.com/snatchev'>
|
154
|
+
<img src='https://github.com/snatchev.png' width='140px;'>
|
155
155
|
</a>
|
156
|
-
<h4 align='center'><a href='https://twitter.com/
|
156
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
157
157
|
</td>
|
158
|
-
<td id='
|
159
|
-
<a href='https://github.com/
|
160
|
-
<img src='https://github.com/
|
158
|
+
<td id='iulian-onofrei'>
|
159
|
+
<a href='https://github.com/revolter'>
|
160
|
+
<img src='https://github.com/revolter.png' width='140px;'>
|
161
161
|
</a>
|
162
|
-
<h4 align='center'><a href='https://twitter.com/
|
162
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
163
163
|
</td>
|
164
164
|
</tr>
|
165
165
|
<tr>
|
@@ -175,23 +175,23 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
175
175
|
</a>
|
176
176
|
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
177
177
|
</td>
|
178
|
-
<td id='
|
179
|
-
<a href='https://github.com/
|
180
|
-
<img src='https://github.com/
|
178
|
+
<td id='fumiya-nakamura'>
|
179
|
+
<a href='https://github.com/nafu'>
|
180
|
+
<img src='https://github.com/nafu.png' width='140px;'>
|
181
181
|
</a>
|
182
|
-
<h4 align='center'><a href='https://twitter.com/
|
182
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
183
183
|
</td>
|
184
|
-
<td id='
|
185
|
-
<a href='https://github.com/
|
186
|
-
<img src='https://github.com/
|
184
|
+
<td id='jimmy-dee'>
|
185
|
+
<a href='https://github.com/jdee'>
|
186
|
+
<img src='https://github.com/jdee.png' width='140px;'>
|
187
187
|
</a>
|
188
|
-
<h4 align='center'
|
188
|
+
<h4 align='center'>Jimmy Dee</h4>
|
189
189
|
</td>
|
190
|
-
<td id='
|
191
|
-
<a href='https://github.com/
|
192
|
-
<img src='https://github.com/
|
190
|
+
<td id='maksym-grebenets'>
|
191
|
+
<a href='https://github.com/mgrebenets'>
|
192
|
+
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
193
193
|
</a>
|
194
|
-
<h4 align='center'><a href='https://twitter.com/
|
194
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
195
195
|
</td>
|
196
196
|
</tr>
|
197
197
|
</table>
|
data/cert/lib/cert/runner.rb
CHANGED
@@ -154,8 +154,11 @@ module Cert
|
|
154
154
|
when :developer_id_kext
|
155
155
|
return Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_KEXT
|
156
156
|
when :developer_id_installer
|
157
|
-
|
158
|
-
|
157
|
+
if !Spaceship::ConnectAPI.token.nil?
|
158
|
+
raise "As of 2021-11-09, the App Store Connect API does not allow accessing DEVELOPER_ID_INSTALLER with the API Key. Please file an issue on GitHub if this has changed and needs to be updated"
|
159
|
+
else
|
160
|
+
return Spaceship::ConnectAPI::Certificate::CertificateType::DEVELOPER_ID_INSTALLER
|
161
|
+
end
|
159
162
|
else
|
160
163
|
UI.user_error("Unaccepted value for :type - #{Cert.config[:type]}")
|
161
164
|
end
|
@@ -63,6 +63,8 @@ module Deliver
|
|
63
63
|
IOS_APPLE_WATCH = "iOS-Apple-Watch"
|
64
64
|
# Apple Watch Series 4
|
65
65
|
IOS_APPLE_WATCH_SERIES4 = "iOS-Apple-Watch-Series4"
|
66
|
+
# Apple Watch Series 7
|
67
|
+
IOS_APPLE_WATCH_SERIES7 = "iOS-Apple-Watch-Series7"
|
66
68
|
|
67
69
|
# Apple TV
|
68
70
|
APPLE_TV = "Apple-TV"
|
@@ -117,6 +119,7 @@ module Deliver
|
|
117
119
|
ScreenSize::MAC => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_DESKTOP,
|
118
120
|
ScreenSize::IOS_APPLE_WATCH => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_3,
|
119
121
|
ScreenSize::IOS_APPLE_WATCH_SERIES4 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_4,
|
122
|
+
ScreenSize::IOS_APPLE_WATCH_SERIES7 => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_WATCH_SERIES_7,
|
120
123
|
ScreenSize::APPLE_TV => Spaceship::ConnectAPI::AppScreenshotSet::DisplayType::APP_APPLE_TV
|
121
124
|
}
|
122
125
|
return matching[self.screen_size]
|
@@ -151,6 +154,7 @@ module Deliver
|
|
151
154
|
ScreenSize::MAC => "Mac",
|
152
155
|
ScreenSize::IOS_APPLE_WATCH => "Watch",
|
153
156
|
ScreenSize::IOS_APPLE_WATCH_SERIES4 => "Watch Series4",
|
157
|
+
ScreenSize::IOS_APPLE_WATCH_SERIES7 => "Watch Series7",
|
154
158
|
ScreenSize::APPLE_TV => "Apple TV"
|
155
159
|
}
|
156
160
|
return matching[self.screen_size]
|
@@ -313,6 +317,9 @@ module Deliver
|
|
313
317
|
ScreenSize::IOS_APPLE_WATCH_SERIES4 => [
|
314
318
|
[368, 448]
|
315
319
|
],
|
320
|
+
ScreenSize::IOS_APPLE_WATCH_SERIES7 => [
|
321
|
+
[396, 484]
|
322
|
+
],
|
316
323
|
ScreenSize::APPLE_TV => [
|
317
324
|
[1920, 1080],
|
318
325
|
[3840, 2160]
|
@@ -324,6 +331,7 @@ module Deliver
|
|
324
331
|
is_3rd_gen = [
|
325
332
|
"iPad Pro (12.9-inch) (3rd generation)", # Default simulator has this name
|
326
333
|
"iPad Pro (12.9-inch) (4th generation)", # Default simulator has this name
|
334
|
+
"iPad Pro (12.9-inch) (5th generation)", # Default simulator has this name
|
327
335
|
"IPAD_PRO_3GEN_129", # Screenshots downloaded from App Store Connect has this name
|
328
336
|
"ipadPro129" # Legacy: screenshots downloaded from iTunes Connect used to have this name
|
329
337
|
].any? { |key| filename.include?(key) }
|
@@ -80,7 +80,7 @@ module Deliver
|
|
80
80
|
screenshots_per_display_type = screenshots_for_language.reject { |screenshot| screenshot.device_type.nil? }.group_by(&:device_type)
|
81
81
|
|
82
82
|
screenshots_per_display_type.each do |display_type, screenshots|
|
83
|
-
# create AppScreenshotSet for given display_type if it doesn't
|
83
|
+
# create AppScreenshotSet for given display_type if it doesn't exist
|
84
84
|
app_screenshot_set = (app_screenshot_set_per_locale_and_display_type[language] || {})[display_type]
|
85
85
|
app_screenshot_set ||= localization.create_app_screenshot_set(attributes: { screenshotDisplayType: display_type })
|
86
86
|
|
@@ -186,7 +186,7 @@ module Deliver
|
|
186
186
|
end
|
187
187
|
|
188
188
|
transporter = transporter_for_selected_team
|
189
|
-
result = transporter.upload(package_path: package_path)
|
189
|
+
result = transporter.upload(package_path: package_path, asset_path: upload_ipa || upload_pkg)
|
190
190
|
|
191
191
|
unless result
|
192
192
|
transporter_errors = transporter.displayable_errors
|
Binary file
|
Binary file
|
Binary file
|
@@ -75,10 +75,11 @@ module Fastlane
|
|
75
75
|
|
76
76
|
filter = { app: app.id }
|
77
77
|
filter["preReleaseVersion.platform"] = platform
|
78
|
-
|
79
|
-
|
78
|
+
filter["preReleaseVersion.version"] = version if version
|
79
|
+
filter["version"] = build_number if build_number
|
80
|
+
build_resp = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-uploadedDate", includes: "preReleaseVersion,buildBundles")
|
80
81
|
|
81
|
-
|
82
|
+
build_resp.all_pages_each do |build|
|
82
83
|
asc_app_version = build.app_version
|
83
84
|
asc_build_number = build.version
|
84
85
|
uploaded_date = DateTime.parse(build.uploaded_date)
|
@@ -100,7 +101,7 @@ module Fastlane
|
|
100
101
|
|
101
102
|
if after_uploaded_date && after_uploaded_date >= uploaded_date
|
102
103
|
UI.verbose("Upload date #{after_uploaded_date} not reached: #{uploaded_date}")
|
103
|
-
|
104
|
+
break
|
104
105
|
end
|
105
106
|
|
106
107
|
message = []
|
@@ -114,39 +115,37 @@ module Fastlane
|
|
114
115
|
end
|
115
116
|
|
116
117
|
UI.verbose("Build_version: #{asc_build_number} matches #{build_number}, grabbing dsym_url") if build_number
|
117
|
-
|
118
|
-
build.build_bundles&.each do |build_bundle|
|
119
|
-
download_dsym(build_bundle: build_bundle, build: build, app: app, wait_for_dsym_processing: wait_for_dsym_processing, wait_timeout: wait_timeout, output_directory: output_directory)
|
120
|
-
end
|
118
|
+
download_dsym(build: build, app: app, wait_for_dsym_processing: wait_for_dsym_processing, wait_timeout: wait_timeout, output_directory: output_directory)
|
121
119
|
end
|
122
120
|
end
|
123
121
|
|
124
|
-
def self.download_dsym(
|
122
|
+
def self.download_dsym(build: nil, app: nil, wait_for_dsym_processing: nil, wait_timeout: nil, output_directory: nil)
|
125
123
|
start = Time.now
|
126
|
-
|
124
|
+
dsym_urls = []
|
127
125
|
|
128
126
|
loop do
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
127
|
+
build_bundles = build.build_bundles.select { |b| b.includes_symbols == true }
|
128
|
+
dsym_urls = build_bundles.map(&:dsym_url).compact
|
129
|
+
|
130
|
+
break if build_bundles.count == dsym_urls.count
|
131
|
+
|
132
|
+
if !wait_for_dsym_processing || (Time.now - start) > wait_timeout
|
133
|
+
# In some cases, AppStoreConnect does not process the dSYMs, thus no error should be thrown.
|
134
|
+
UI.message("Could not find any dSYM for #{build.version} (#{build.app_version})")
|
135
|
+
break
|
136
|
+
else
|
137
|
+
UI.message("Waiting for dSYM file to appear...")
|
138
|
+
sleep(30) unless FastlaneCore::Helper.is_test?
|
139
|
+
build = Spaceship::ConnectAPI::Build.get(build_id: build.id)
|
140
140
|
end
|
141
|
-
|
142
|
-
break
|
143
141
|
end
|
144
142
|
|
145
|
-
if
|
146
|
-
self.download(download_url, build, app, output_directory)
|
147
|
-
return if build.version
|
148
|
-
else
|
143
|
+
if dsym_urls.count == 0
|
149
144
|
UI.message("No dSYM URL for #{build.version} (#{build.app_version})")
|
145
|
+
else
|
146
|
+
dsym_urls.each do |url|
|
147
|
+
self.download(url, build, app, output_directory)
|
148
|
+
end
|
150
149
|
end
|
151
150
|
end
|
152
151
|
# rubocop:enable Metrics/PerceivedComplexity
|
@@ -75,7 +75,7 @@ module Fastlane
|
|
75
75
|
[
|
76
76
|
"If building your app requires a specific version of Xcode, you can invoke this command before using gym.",
|
77
77
|
"For example, to ensure that a beta version of Xcode is not accidentally selected to build, which would make uploading to TestFlight fail.",
|
78
|
-
"You can either manually provide a specific version using `version
|
78
|
+
"You can either manually provide a specific version using `version:` or you make use of the `.xcode-version` file.",
|
79
79
|
"Using the `strict` parameter, you can either verify the full set of version numbers strictly (i.e. `11.3.1`) or only a subset of them (i.e. `11.3` or `11`)."
|
80
80
|
].join("\n")
|
81
81
|
end
|
@@ -109,8 +109,10 @@ module Fastlane
|
|
109
109
|
options = plist_files.keys
|
110
110
|
selected = UI.select("What build configuration would you like to use?", options)
|
111
111
|
plist_file = plist_files[selected]
|
112
|
-
|
112
|
+
elsif plist_files_count > 0
|
113
113
|
plist_file = plist_files.values.first
|
114
|
+
else
|
115
|
+
return nil
|
114
116
|
end
|
115
117
|
|
116
118
|
# $(SRCROOT) is the path of where the XcodeProject is
|
@@ -131,9 +133,12 @@ module Fastlane
|
|
131
133
|
end
|
132
134
|
|
133
135
|
def self.get_version_number_from_plist!(plist_file)
|
136
|
+
return '$(MARKETING_VERSION)' if plist_file.nil?
|
137
|
+
|
134
138
|
plist = Xcodeproj::Plist.read_from_path(plist_file)
|
135
139
|
UI.user_error!("Unable to read plist: #{plist_file}") unless plist
|
136
140
|
|
141
|
+
return '${MARKETING_VERSION}' if plist["CFBundleShortVersionString"].nil?
|
137
142
|
plist["CFBundleShortVersionString"]
|
138
143
|
end
|
139
144
|
|
@@ -146,7 +151,7 @@ module Fastlane
|
|
146
151
|
end
|
147
152
|
|
148
153
|
def self.details
|
149
|
-
"This action will return the current version number set on your project."
|
154
|
+
"This action will return the current version number set on your project. It first looks in the plist and then for '$(MARKETING_VERSION)' in the build settings."
|
150
155
|
end
|
151
156
|
|
152
157
|
def self.available_options
|
@@ -5,6 +5,7 @@ module Fastlane
|
|
5
5
|
def self.run(params)
|
6
6
|
package_path = params[:package]
|
7
7
|
bundle_id = params[:bundle_id]
|
8
|
+
skip_stapling = params[:skip_stapling]
|
8
9
|
try_early_stapling = params[:try_early_stapling]
|
9
10
|
print_log = params[:print_log]
|
10
11
|
verbose = params[:verbose]
|
@@ -38,13 +39,13 @@ module Fastlane
|
|
38
39
|
UI.user_error!('Could not read bundle identifier, provide as a parameter') unless bundle_id
|
39
40
|
|
40
41
|
if use_notarytool
|
41
|
-
notarytool(params, package_path, bundle_id,
|
42
|
+
notarytool(params, package_path, bundle_id, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
42
43
|
else
|
43
|
-
altool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key, compressed_package_path)
|
44
|
+
altool(params, package_path, bundle_id, try_early_stapling, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
47
|
-
def self.notarytool(params, package_path, bundle_id,
|
48
|
+
def self.notarytool(params, package_path, bundle_id, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
48
49
|
temp_file = nil
|
49
50
|
|
50
51
|
# Create authorization part of command with either API Key or Apple ID
|
@@ -89,10 +90,15 @@ module Fastlane
|
|
89
90
|
submission_id = notarization_info["id"]
|
90
91
|
UI.success("Successfully uploaded package to notarization service with request identifier #{submission_id}")
|
91
92
|
|
92
|
-
|
93
|
-
|
93
|
+
if skip_stapling
|
94
|
+
UI.success("Successfully notarized artifact")
|
95
|
+
else
|
96
|
+
UI.message('Stapling package')
|
94
97
|
|
95
|
-
|
98
|
+
self.staple(package_path, verbose)
|
99
|
+
|
100
|
+
UI.success("Successfully notarized and stapled package")
|
101
|
+
end
|
96
102
|
when 'Invalid'
|
97
103
|
UI.user_error!("Could not notarize package with message '#{notarization_info['statusSummary']}'")
|
98
104
|
else
|
@@ -102,7 +108,7 @@ module Fastlane
|
|
102
108
|
temp_file.delete if temp_file
|
103
109
|
end
|
104
110
|
|
105
|
-
def self.altool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key, compressed_package_path)
|
111
|
+
def self.altool(params, package_path, bundle_id, try_early_stapling, skip_stapling, print_log, verbose, api_key, compressed_package_path)
|
106
112
|
UI.message('Uploading package to notarization service, might take a while')
|
107
113
|
|
108
114
|
notarization_upload_command = "xcrun altool --notarize-app -t osx -f \"#{compressed_package_path || package_path}\" --primary-bundle-id #{bundle_id} --output-format xml"
|
@@ -133,7 +139,7 @@ module Fastlane
|
|
133
139
|
while notarization_info.empty? || (notarization_info['Status'] == 'in progress')
|
134
140
|
if notarization_info.empty?
|
135
141
|
UI.message('Waiting to query request status')
|
136
|
-
elsif try_early_stapling
|
142
|
+
elsif try_early_stapling && !skip_stapling
|
137
143
|
UI.message('Request in progress, trying early staple')
|
138
144
|
|
139
145
|
begin
|
@@ -182,11 +188,15 @@ module Fastlane
|
|
182
188
|
|
183
189
|
case notarization_info['Status']
|
184
190
|
when 'success'
|
185
|
-
|
191
|
+
if skip_stapling
|
192
|
+
UI.success("Successfully notarized artifact#{log_suffix}")
|
193
|
+
else
|
194
|
+
UI.message('Stapling package')
|
186
195
|
|
187
|
-
|
196
|
+
self.staple(package_path, verbose)
|
188
197
|
|
189
|
-
|
198
|
+
UI.success("Successfully notarized and stapled package#{log_suffix}")
|
199
|
+
end
|
190
200
|
when 'invalid'
|
191
201
|
UI.user_error!("Could not notarize package with message '#{notarization_info['Status Message']}'#{log_suffix}")
|
192
202
|
else
|
@@ -262,6 +272,14 @@ module Fastlane
|
|
262
272
|
env_name: 'FL_NOTARIZE_TRY_EARLY_STAPLING',
|
263
273
|
description: 'Whether to try early stapling while the notarization request is in progress',
|
264
274
|
optional: true,
|
275
|
+
conflicting_options: [:skip_stapling],
|
276
|
+
default_value: false,
|
277
|
+
type: Boolean),
|
278
|
+
FastlaneCore::ConfigItem.new(key: :skip_stapling,
|
279
|
+
env_name: 'FL_NOTARIZE_SKIP_STAPLING',
|
280
|
+
description: 'Do not staple the notarization ticket to the artifact; useful for single file executables and ZIP archives',
|
281
|
+
optional: true,
|
282
|
+
conflicting_options: [:try_early_stapling],
|
265
283
|
default_value: false,
|
266
284
|
type: Boolean),
|
267
285
|
FastlaneCore::ConfigItem.new(key: :bundle_id,
|
@@ -19,11 +19,12 @@ module Fastlane
|
|
19
19
|
|
20
20
|
payload = {
|
21
21
|
'tag_name' => params[:tag_name],
|
22
|
-
'name' => params[:name],
|
23
|
-
'body' => params[:description],
|
24
22
|
'draft' => !!params[:is_draft],
|
25
|
-
'prerelease' => !!params[:is_prerelease]
|
23
|
+
'prerelease' => !!params[:is_prerelease],
|
24
|
+
'generate_release_notes' => !!params[:is_generate_release_notes]
|
26
25
|
}
|
26
|
+
payload['name'] = params[:name] if params[:name]
|
27
|
+
payload['body'] = params[:description] if params[:description]
|
27
28
|
payload['target_commitish'] = params[:commitish] if params[:commitish]
|
28
29
|
|
29
30
|
GithubApiAction.run(
|
@@ -48,8 +49,7 @@ module Fastlane
|
|
48
49
|
UI.user_error!("You are not authorized to access #{repo_name}, please make sure you provided a valid API token (GITHUB_API_TOKEN)")
|
49
50
|
end,
|
50
51
|
'*' => proc do |result|
|
51
|
-
UI.
|
52
|
-
return nil
|
52
|
+
UI.user_error!("GitHub responded with #{result[:status]}:#{result[:body]}")
|
53
53
|
end
|
54
54
|
}
|
55
55
|
) do |result|
|
@@ -221,6 +221,12 @@ module Fastlane
|
|
221
221
|
optional: true,
|
222
222
|
default_value: false,
|
223
223
|
type: Boolean),
|
224
|
+
FastlaneCore::ConfigItem.new(key: :is_generate_release_notes,
|
225
|
+
env_name: "FL_SET_GITHUB_RELEASE_IS_GENERATE_RELEASE_NOTES",
|
226
|
+
description: "Whether the name and body of this release should be generated automatically",
|
227
|
+
optional: true,
|
228
|
+
default_value: false,
|
229
|
+
type: Boolean),
|
224
230
|
FastlaneCore::ConfigItem.new(key: :upload_assets,
|
225
231
|
env_name: "FL_SET_GITHUB_RELEASE_UPLOAD_ASSETS",
|
226
232
|
description: "Path to assets to be uploaded with the release",
|