fastlane_iac_publish 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +74 -74
- data/fastlane/lib/fastlane/actions/build_ios_app.rb +2 -2
- data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +1 -1
- data/fastlane/lib/fastlane/actions/increment_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/increment_version_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/swiftlint.rb +10 -2
- data/fastlane/lib/fastlane/actions/version_bump_podspec.rb +1 -1
- data/fastlane/lib/fastlane/actions/xcodebuild.rb +1 -1
- data/fastlane/lib/fastlane/fast_file.rb +23 -2
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +5 -3
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane_core/lib/fastlane_core/build_watcher.rb +35 -23
- data/pilot/lib/pilot/build_manager.rb +11 -5
- data/snapshot/lib/assets/SnapshotHelper.swift +2 -2
- data/spaceship/lib/.DS_Store +0 -0
- data/spaceship/lib/spaceship/connect_api.rb +29 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +18 -3
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +2 -2
- data/spaceship/lib/spaceship/test_flight/build.rb +7 -4
- data/spaceship/lib/spaceship/test_flight/build_trains.rb +6 -2
- data/spaceship/lib/spaceship/tunes/application.rb +10 -0
- metadata +27 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9516d5b72274f8cdf6e0f269004869d6e6f5e6a733e6a720f6ef410308254955
|
4
|
+
data.tar.gz: dfc382dd6907fc920ea000e10a5f57b8690af54beb36ee31b2032f3f091e3b81
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b7938c75e8e315188d7c3a03b3950087e1751c5a19db2c5d5eac8e39619573647d9894682f465060d1ace472c36ad38fc29d167701fe63d6e1690deb99d261a
|
7
|
+
data.tar.gz: e8de6fa8436770f8c3332cbe8e5a5de5bbaf73f52c5d6b897f0f56c60dec23130811d9675b45508b5a82352d01b1382710892a1f680e79d9a722a60e9ce66fdf
|
data/README.md
CHANGED
@@ -34,35 +34,35 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
34
34
|
<!-- This table is regenerated and resorted on each release -->
|
35
35
|
<table id='team'>
|
36
36
|
<tr>
|
37
|
+
<td id='helmut-januschka'>
|
38
|
+
<a href='https://github.com/hjanuschka'>
|
39
|
+
<img src='https://github.com/hjanuschka.png?size=140'>
|
40
|
+
</a>
|
41
|
+
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
42
|
+
</td>
|
37
43
|
<td id='danielle-tomlinson'>
|
38
44
|
<a href='https://github.com/endocrimes'>
|
39
45
|
<img src='https://github.com/endocrimes.png?size=140'>
|
40
46
|
</a>
|
41
47
|
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
42
48
|
</td>
|
43
|
-
<td id='
|
44
|
-
<a href='https://github.com/
|
45
|
-
<img src='https://github.com/
|
46
|
-
</a>
|
47
|
-
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
48
|
-
</td>
|
49
|
-
<td id='olivier-halligon'>
|
50
|
-
<a href='https://github.com/AliSoftware'>
|
51
|
-
<img src='https://github.com/AliSoftware.png?size=140'>
|
49
|
+
<td id='andrew-mcburney'>
|
50
|
+
<a href='https://github.com/armcburney'>
|
51
|
+
<img src='https://github.com/armcburney.png?size=140'>
|
52
52
|
</a>
|
53
|
-
<h4 align='center'><a href='https://twitter.com/
|
53
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
54
54
|
</td>
|
55
|
-
<td id='
|
56
|
-
<a href='https://github.com/
|
57
|
-
<img src='https://github.com/
|
55
|
+
<td id='jérôme-lacoste'>
|
56
|
+
<a href='https://github.com/lacostej'>
|
57
|
+
<img src='https://github.com/lacostej.png?size=140'>
|
58
58
|
</a>
|
59
|
-
<h4 align='center'><a href='https://twitter.com/
|
59
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
60
60
|
</td>
|
61
|
-
<td id='
|
62
|
-
<a href='https://github.com/
|
63
|
-
<img src='https://github.com/
|
61
|
+
<td id='felix-krause'>
|
62
|
+
<a href='https://github.com/KrauseFx'>
|
63
|
+
<img src='https://github.com/KrauseFx.png?size=140'>
|
64
64
|
</a>
|
65
|
-
<h4 align='center'><a href='https://twitter.com/
|
65
|
+
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
66
66
|
</td>
|
67
67
|
</tr>
|
68
68
|
<tr>
|
@@ -72,93 +72,93 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
72
72
|
</a>
|
73
73
|
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
74
74
|
</td>
|
75
|
-
<td id='
|
76
|
-
<a href='https://github.com/
|
77
|
-
<img src='https://github.com/
|
75
|
+
<td id='stefan-natchev'>
|
76
|
+
<a href='https://github.com/snatchev'>
|
77
|
+
<img src='https://github.com/snatchev.png?size=140'>
|
78
78
|
</a>
|
79
|
-
<h4 align='center'><a href='https://twitter.com/
|
79
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
80
80
|
</td>
|
81
|
-
<td id='
|
82
|
-
<a href='https://github.com/
|
83
|
-
<img src='https://github.com/
|
81
|
+
<td id='jan-piotrowski'>
|
82
|
+
<a href='https://github.com/janpio'>
|
83
|
+
<img src='https://github.com/janpio.png?size=140'>
|
84
84
|
</a>
|
85
|
-
<h4 align='center'><a href='https://twitter.com/
|
85
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
86
86
|
</td>
|
87
|
-
<td id='
|
88
|
-
<a href='https://github.com/
|
89
|
-
<img src='https://github.com/
|
87
|
+
<td id='aaron-brager'>
|
88
|
+
<a href='https://github.com/getaaron'>
|
89
|
+
<img src='https://github.com/getaaron.png?size=140'>
|
90
90
|
</a>
|
91
|
-
<h4 align='center'><a href='https://twitter.com/
|
91
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
92
92
|
</td>
|
93
|
-
<td id='
|
94
|
-
<a href='https://github.com/
|
95
|
-
<img src='https://github.com/
|
93
|
+
<td id='fumiya-nakamura'>
|
94
|
+
<a href='https://github.com/nafu'>
|
95
|
+
<img src='https://github.com/nafu.png?size=140'>
|
96
96
|
</a>
|
97
|
-
<h4 align='center'><a href='https://twitter.com/
|
97
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
98
98
|
</td>
|
99
99
|
</tr>
|
100
100
|
<tr>
|
101
|
-
<td id='
|
102
|
-
<a href='https://github.com/
|
103
|
-
<img src='https://github.com/
|
101
|
+
<td id='jimmy-dee'>
|
102
|
+
<a href='https://github.com/jdee'>
|
103
|
+
<img src='https://github.com/jdee.png?size=140'>
|
104
104
|
</a>
|
105
|
-
<h4 align='center'
|
105
|
+
<h4 align='center'>Jimmy Dee</h4>
|
106
106
|
</td>
|
107
|
-
<td id='
|
108
|
-
<a href='https://github.com/
|
109
|
-
<img src='https://github.com/
|
107
|
+
<td id='iulian-onofrei'>
|
108
|
+
<a href='https://github.com/revolter'>
|
109
|
+
<img src='https://github.com/revolter.png?size=140'>
|
110
110
|
</a>
|
111
|
-
<h4 align='center'><a href='https://twitter.com/
|
111
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
112
112
|
</td>
|
113
|
-
<td id='
|
114
|
-
<a href='https://github.com/
|
115
|
-
<img src='https://github.com/
|
113
|
+
<td id='jorge-revuelta-h'>
|
114
|
+
<a href='https://github.com/minuscorp'>
|
115
|
+
<img src='https://github.com/minuscorp.png?size=140'>
|
116
116
|
</a>
|
117
|
-
<h4 align='center'><a href='https://twitter.com/
|
117
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
118
118
|
</td>
|
119
|
-
<td id='
|
120
|
-
<a href='https://github.com/
|
121
|
-
<img src='https://github.com/
|
119
|
+
<td id='joshua-liebowitz'>
|
120
|
+
<a href='https://github.com/taquitos'>
|
121
|
+
<img src='https://github.com/taquitos.png?size=140'>
|
122
122
|
</a>
|
123
|
-
<h4 align='center'><a href='https://twitter.com/
|
123
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
124
124
|
</td>
|
125
|
-
<td id='
|
126
|
-
<a href='https://github.com/
|
127
|
-
<img src='https://github.com/
|
125
|
+
<td id='kohki-miki'>
|
126
|
+
<a href='https://github.com/giginet'>
|
127
|
+
<img src='https://github.com/giginet.png?size=140'>
|
128
128
|
</a>
|
129
|
-
<h4 align='center'><a href='https://twitter.com/
|
129
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
130
130
|
</td>
|
131
131
|
</tr>
|
132
132
|
<tr>
|
133
|
-
<td id='felix-krause'>
|
134
|
-
<a href='https://github.com/KrauseFx'>
|
135
|
-
<img src='https://github.com/KrauseFx.png?size=140'>
|
136
|
-
</a>
|
137
|
-
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
138
|
-
</td>
|
139
|
-
<td id='helmut-januschka'>
|
140
|
-
<a href='https://github.com/hjanuschka'>
|
141
|
-
<img src='https://github.com/hjanuschka.png?size=140'>
|
142
|
-
</a>
|
143
|
-
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
144
|
-
</td>
|
145
133
|
<td id='luka-mirosevic'>
|
146
134
|
<a href='https://github.com/lmirosevic'>
|
147
135
|
<img src='https://github.com/lmirosevic.png?size=140'>
|
148
136
|
</a>
|
149
137
|
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
150
138
|
</td>
|
151
|
-
<td id='
|
152
|
-
<a href='https://github.com/
|
153
|
-
<img src='https://github.com/
|
139
|
+
<td id='maksym-grebenets'>
|
140
|
+
<a href='https://github.com/mgrebenets'>
|
141
|
+
<img src='https://github.com/mgrebenets.png?size=140'>
|
154
142
|
</a>
|
155
|
-
<h4 align='center'>
|
143
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
156
144
|
</td>
|
157
|
-
<td id='
|
158
|
-
<a href='https://github.com/
|
159
|
-
<img src='https://github.com/
|
145
|
+
<td id='matthew-ellis'>
|
146
|
+
<a href='https://github.com/matthewellis'>
|
147
|
+
<img src='https://github.com/matthewellis.png?size=140'>
|
160
148
|
</a>
|
161
|
-
<h4 align='center'><a href='https://twitter.com/
|
149
|
+
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
150
|
+
</td>
|
151
|
+
<td id='josh-holtz'>
|
152
|
+
<a href='https://github.com/joshdholtz'>
|
153
|
+
<img src='https://github.com/joshdholtz.png?size=140'>
|
154
|
+
</a>
|
155
|
+
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
156
|
+
</td>
|
157
|
+
<td id='olivier-halligon'>
|
158
|
+
<a href='https://github.com/AliSoftware'>
|
159
|
+
<img src='https://github.com/AliSoftware.png?size=140'>
|
160
|
+
</a>
|
161
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
162
162
|
</td>
|
163
163
|
</tr>
|
164
164
|
</table>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Actions
|
3
3
|
module SharedValues
|
4
|
-
IPA_OUTPUT_PATH
|
5
|
-
DSYM_OUTPUT_PATH
|
4
|
+
IPA_OUTPUT_PATH ||= :IPA_OUTPUT_PATH
|
5
|
+
DSYM_OUTPUT_PATH ||= :DSYM_OUTPUT_PATH
|
6
6
|
XCODEBUILD_ARCHIVE ||= :XCODEBUILD_ARCHIVE # originally defined in XcodebuildAction
|
7
7
|
end
|
8
8
|
|
@@ -19,6 +19,7 @@ module Fastlane
|
|
19
19
|
command << " --reporter #{params[:reporter]}" if params[:reporter]
|
20
20
|
command << supported_option_switch(params, :quiet, "0.9.0", true)
|
21
21
|
command << supported_option_switch(params, :format, "0.11.0", true) if params[:mode] == :autocorrect
|
22
|
+
command << " --compiler-log-path #{params[:compiler_log_path].shellescape}" if params[:compiler_log_path]
|
22
23
|
|
23
24
|
if params[:files]
|
24
25
|
if version < Gem::Version.new('0.5.1')
|
@@ -71,7 +72,7 @@ module Fastlane
|
|
71
72
|
def self.available_options
|
72
73
|
[
|
73
74
|
FastlaneCore::ConfigItem.new(key: :mode,
|
74
|
-
description: "SwiftLint mode: :lint or :
|
75
|
+
description: "SwiftLint mode: :lint, :autocorrect or :analyze",
|
75
76
|
is_string: false,
|
76
77
|
default_value: :lint,
|
77
78
|
optional: true),
|
@@ -124,7 +125,14 @@ module Fastlane
|
|
124
125
|
default_value: false,
|
125
126
|
is_string: false,
|
126
127
|
type: Boolean,
|
127
|
-
optional: true)
|
128
|
+
optional: true),
|
129
|
+
FastlaneCore::ConfigItem.new(key: :compiler_log_path,
|
130
|
+
description: "Compiler log path when mode is :analyze",
|
131
|
+
is_string: true,
|
132
|
+
optional: true,
|
133
|
+
verify_block: proc do |value|
|
134
|
+
UI.user_error!("Couldn't find compiler_log_path '#{File.expand_path(value)}'") unless File.exist?(value)
|
135
|
+
end)
|
128
136
|
]
|
129
137
|
end
|
130
138
|
|
@@ -182,8 +182,29 @@ module Fastlane
|
|
182
182
|
end
|
183
183
|
|
184
184
|
# Execute shell command
|
185
|
-
|
186
|
-
|
185
|
+
# Accepts arguments with with and without the command named keyword so that sh
|
186
|
+
# behaves like other actions with named keywords
|
187
|
+
# https://github.com/fastlane/fastlane/issues/14930
|
188
|
+
#
|
189
|
+
# Example:
|
190
|
+
# sh("ls")
|
191
|
+
# sh("ls", log: false)
|
192
|
+
# sh(command: "ls")
|
193
|
+
# sh(command: "ls", log: false)
|
194
|
+
def sh(*args, &b)
|
195
|
+
# First accepts hash (or named keywords) like other actions
|
196
|
+
# Otherwise uses sh method that doesn't have an interface like an action
|
197
|
+
if args.count == 1 && args.first.kind_of?(Hash)
|
198
|
+
hash = args.first
|
199
|
+
command = hash.delete(:command)
|
200
|
+
|
201
|
+
raise ArgumentError, "sh requires :command keyword in argument" if command.nil?
|
202
|
+
|
203
|
+
new_args = [*command, hash]
|
204
|
+
FastFile.sh(*new_args, &b)
|
205
|
+
else
|
206
|
+
FastFile.sh(*args, &b)
|
207
|
+
end
|
187
208
|
end
|
188
209
|
|
189
210
|
def self.sh(*command, log: true, error_callback: nil, &b)
|
@@ -3567,7 +3567,8 @@ func swiftlint(mode: String = "lint",
|
|
3567
3567
|
reporter: String? = nil,
|
3568
3568
|
quiet: Bool = false,
|
3569
3569
|
executable: String? = nil,
|
3570
|
-
format: Bool = false
|
3570
|
+
format: Bool = false,
|
3571
|
+
compilerLogPath: String? = nil) {
|
3571
3572
|
let command = RubyCommand(commandID: "", methodName: "swiftlint", className: nil, args: [RubyCommand.Argument(name: "mode", value: mode),
|
3572
3573
|
RubyCommand.Argument(name: "path", value: path),
|
3573
3574
|
RubyCommand.Argument(name: "output_file", value: outputFile),
|
@@ -3578,7 +3579,8 @@ func swiftlint(mode: String = "lint",
|
|
3578
3579
|
RubyCommand.Argument(name: "reporter", value: reporter),
|
3579
3580
|
RubyCommand.Argument(name: "quiet", value: quiet),
|
3580
3581
|
RubyCommand.Argument(name: "executable", value: executable),
|
3581
|
-
RubyCommand.Argument(name: "format", value: format)
|
3582
|
+
RubyCommand.Argument(name: "format", value: format),
|
3583
|
+
RubyCommand.Argument(name: "compiler_log_path", value: compilerLogPath)])
|
3582
3584
|
_ = runner.executeCommand(command)
|
3583
3585
|
}
|
3584
3586
|
func syncCodeSigning(type: String = "development",
|
@@ -4393,4 +4395,4 @@ let screengrabfile: Screengrabfile = Screengrabfile()
|
|
4393
4395
|
let snapshotfile: Snapshotfile = Snapshotfile()
|
4394
4396
|
// Please don't remove the lines below
|
4395
4397
|
// They are used to detect outdated files
|
4396
|
-
// FastlaneRunnerAPIVersion [0.9.
|
4398
|
+
// FastlaneRunnerAPIVersion [0.9.52]
|
@@ -10,18 +10,27 @@ module FastlaneCore
|
|
10
10
|
# Warn about train_version being removed in the future
|
11
11
|
if train_version
|
12
12
|
UI.deprecated(":train_version is no longer a used argument on FastlaneCore::BuildWatcher. Please use :app_version instead.")
|
13
|
+
app_version = train_version
|
13
14
|
end
|
14
|
-
app_version = train_version
|
15
15
|
|
16
16
|
# Warn about strict_build_watch being removed in the future
|
17
17
|
if strict_build_watch
|
18
18
|
UI.deprecated(":strict_build_watch is no longer a used argument on FastlaneCore::BuildWatcher.")
|
19
19
|
end
|
20
20
|
|
21
|
+
platform = Spaceship::ConnectAPI::Platform.map(platform) if platform
|
22
|
+
UI.message("Waiting for processing on... app_id: #{app_id}, app_version: #{app_version}, build_version: #{build_version}, platform: #{platform}")
|
23
|
+
|
24
|
+
showed_info = false
|
21
25
|
loop do
|
22
|
-
matched_build
|
26
|
+
matched_build = matching_build(watched_app_version: app_version, watched_build_version: build_version, app_id: app_id, platform: platform)
|
27
|
+
|
28
|
+
if matched_build.nil? && !showed_info
|
29
|
+
UI.important("Read more information on why this build isn't showing up yet - https://github.com/fastlane/fastlane/issues/14997")
|
30
|
+
showed_info = true
|
31
|
+
end
|
23
32
|
|
24
|
-
report_status(build: matched_build
|
33
|
+
report_status(build: matched_build)
|
25
34
|
|
26
35
|
if matched_build && matched_build.processed?
|
27
36
|
if return_spaceship_testflight_build
|
@@ -47,32 +56,35 @@ module FastlaneCore
|
|
47
56
|
watched_app_version = remove_version_leading_zeros(version: watched_app_version)
|
48
57
|
watched_build_version = remove_version_leading_zeros(version: watched_build_version)
|
49
58
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
59
|
+
matched_builds = Spaceship::ConnectAPI::Build.all(
|
60
|
+
app_id: app_id,
|
61
|
+
version: watched_app_version,
|
62
|
+
build_number: watched_build_version,
|
63
|
+
platform: platform
|
64
|
+
)
|
65
|
+
|
66
|
+
# Raise error if more than 1 build is returned
|
67
|
+
# This should never happen but need to inform the user if it does
|
68
|
+
if matched_builds.size > 1
|
69
|
+
error_builds = matched_builds.map do |build|
|
70
|
+
"#{build.app_version}(#{build.version}) for #{build.platform} - #{build.processing_state}"
|
71
|
+
end.join("\n")
|
72
|
+
error_message = "FastlaneCore::BuildWatcher found more than 1 matching build: \n#{error_builds}"
|
73
|
+
UI.crash!(error_message)
|
62
74
|
end
|
63
75
|
|
64
|
-
|
76
|
+
matched_build = matched_builds.first
|
77
|
+
|
78
|
+
return matched_build
|
65
79
|
end
|
66
80
|
|
67
|
-
def report_status(build: nil
|
68
|
-
if
|
69
|
-
UI.message("Waiting for App Store Connect to finish processing the new build (#{
|
70
|
-
elsif build && !build.processed?
|
71
|
-
UI.message("Waiting for App Store Connect to finish processing the new build (#{build.app_version} - #{build.version})")
|
81
|
+
def report_status(build: nil)
|
82
|
+
if build && !build.processed?
|
83
|
+
UI.message("Waiting for App Store Connect to finish processing the new build (#{build.app_version} - #{build.version}) for #{build.platform}")
|
72
84
|
elsif build && build.processed?
|
73
|
-
UI.success("Successfully finished processing the build #{build.app_version} - #{build.version}")
|
85
|
+
UI.success("Successfully finished processing the build #{build.app_version} - #{build.version} for #{build.platform}")
|
74
86
|
else
|
75
|
-
UI.message("
|
87
|
+
UI.message("Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)")
|
76
88
|
end
|
77
89
|
end
|
78
90
|
end
|
@@ -84,7 +84,7 @@ module Pilot
|
|
84
84
|
platform = fetch_app_platform
|
85
85
|
app_version = FastlaneCore::IpaFileAnalyser.fetch_app_version(config[:ipa])
|
86
86
|
app_build = FastlaneCore::IpaFileAnalyser.fetch_app_build(config[:ipa])
|
87
|
-
latest_build = FastlaneCore::BuildWatcher.wait_for_build_processing_to_be_complete(app_id: app.id, platform: platform,
|
87
|
+
latest_build = FastlaneCore::BuildWatcher.wait_for_build_processing_to_be_complete(app_id: app.id, platform: platform, app_version: app_version, build_version: app_build, poll_interval: config[:wait_processing_interval], return_spaceship_testflight_build: false)
|
88
88
|
|
89
89
|
unless latest_build.app_version == app_version && latest_build.version == app_build
|
90
90
|
UI.important("Uploaded app #{app_version} - #{app_build}, but received build #{latest_build.app_version} - #{latest_build.version}.")
|
@@ -100,7 +100,11 @@ module Pilot
|
|
100
100
|
end
|
101
101
|
|
102
102
|
# Get latest uploaded build if no build specified
|
103
|
-
build
|
103
|
+
if build.nil?
|
104
|
+
UI.important("No build specified - fetching latest build")
|
105
|
+
platform = Spaceship::ConnectAPI::Platform.map(fetch_app_platform)
|
106
|
+
build ||= Spaceship::ConnectAPI::Build.all(app_id: app.id, sort: "-uploadedDate", platform: platform, limit: 1).first
|
107
|
+
end
|
104
108
|
|
105
109
|
# Verify the build has all the includes that we need
|
106
110
|
# and fetch a new build if not
|
@@ -157,7 +161,7 @@ module Pilot
|
|
157
161
|
[
|
158
162
|
build.app_version,
|
159
163
|
build.version,
|
160
|
-
build.beta_build_metrics.map(&:install_count).reduce(:+)
|
164
|
+
(build.beta_build_metrics || []).map(&:install_count).reduce(:+)
|
161
165
|
]
|
162
166
|
end
|
163
167
|
|
@@ -293,7 +297,7 @@ module Pilot
|
|
293
297
|
UI.message("Distributing new build to testers: #{uploaded_build.app_version} - #{uploaded_build.version}")
|
294
298
|
|
295
299
|
# This is where we could add a check to see if encryption is required and has been updated
|
296
|
-
set_export_compliance_if_needed(uploaded_build, options)
|
300
|
+
uploaded_build = set_export_compliance_if_needed(uploaded_build, options)
|
297
301
|
|
298
302
|
if options[:groups] || options[:distribute_external]
|
299
303
|
if uploaded_build.ready_for_beta_submission?
|
@@ -332,7 +336,9 @@ module Pilot
|
|
332
336
|
|
333
337
|
UI.important("Export compliance has been set to '#{uses_non_exempt_encryption}'. Need to wait for build to finishing processing again...")
|
334
338
|
UI.important("Set 'ITSAppUsesNonExemptEncryption' in the 'Info.plist' to skip this step and speed up the submission")
|
335
|
-
wait_for_build_processing_to_be_complete
|
339
|
+
return wait_for_build_processing_to_be_complete
|
340
|
+
else
|
341
|
+
return uploaded_build
|
336
342
|
end
|
337
343
|
end
|
338
344
|
|
@@ -178,7 +178,7 @@ open class Snapshot: NSObject {
|
|
178
178
|
|
179
179
|
do {
|
180
180
|
// The simulator name contains "Clone X of " inside the screenshot file when running parallelized UI Tests on concurrent devices
|
181
|
-
let regex = try NSRegularExpression(pattern: "Clone [0-
|
181
|
+
let regex = try NSRegularExpression(pattern: "Clone [0-9]+ of ")
|
182
182
|
let range = NSMakeRange(0, simulator.count)
|
183
183
|
simulator = regex.stringByReplacingMatches(in: simulator, range: range, withTemplate: "")
|
184
184
|
|
@@ -300,4 +300,4 @@ private extension CGFloat {
|
|
300
300
|
|
301
301
|
// Please don't remove the lines below
|
302
302
|
// They are used to detect outdated configuration files
|
303
|
-
// SnapshotHelperVersion [1.
|
303
|
+
// SnapshotHelperVersion [1.19]
|
Binary file
|
@@ -43,5 +43,34 @@ module Spaceship
|
|
43
43
|
class << self
|
44
44
|
attr_reader :token
|
45
45
|
end
|
46
|
+
|
47
|
+
# Defined in the App Store Connect API docs:
|
48
|
+
# https://developer.apple.com/documentation/appstoreconnectapi/platform
|
49
|
+
#
|
50
|
+
# Used for query param filters
|
51
|
+
module Platform
|
52
|
+
IOS = "IOS"
|
53
|
+
MAC_OS = "MAC_OS"
|
54
|
+
TV_OS = "TV_OS"
|
55
|
+
WATCH_OS = "WATCH_OS"
|
56
|
+
|
57
|
+
ALL = [IOS, MAC_OS, TV_OS, WATCH_OS]
|
58
|
+
|
59
|
+
def self.map(platform)
|
60
|
+
return platform if ALL.include?(platform)
|
61
|
+
|
62
|
+
# Map from fastlane input and Spaceship::TestFlight platform values
|
63
|
+
case platform.to_sym
|
64
|
+
when :appletvos
|
65
|
+
return Spaceship::ConnectAPI::Platform::TV_OS
|
66
|
+
when :osx
|
67
|
+
return Spaceship::ConnectAPI::Platform::MAC_OS
|
68
|
+
when :ios
|
69
|
+
return Spaceship::ConnectAPI::Platform::IOS
|
70
|
+
else
|
71
|
+
raise "Cannot find a matching platform for '#{platform}' - valid values are #{ALL.join(', ')}"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
46
75
|
end
|
47
76
|
end
|
@@ -69,6 +69,11 @@ module Spaceship
|
|
69
69
|
return app.bundle_id
|
70
70
|
end
|
71
71
|
|
72
|
+
def platform
|
73
|
+
raise "No pre_release_version included" unless pre_release_version
|
74
|
+
return pre_release_version.platform
|
75
|
+
end
|
76
|
+
|
72
77
|
def processed?
|
73
78
|
return processing_state != ProcessingState::PROCESSING
|
74
79
|
end
|
@@ -81,6 +86,7 @@ module Spaceship
|
|
81
86
|
# This is here temporarily until the removal of Spaceship::TestFlight
|
82
87
|
def to_testflight_build
|
83
88
|
h = {
|
89
|
+
'id' => id,
|
84
90
|
'buildVersion' => version,
|
85
91
|
'uploadDate' => uploaded_date,
|
86
92
|
'externalState' => processed? ? Spaceship::TestFlight::Build::BUILD_STATES[:active] : Spaceship::TestFlight::Build::BUILD_STATES[:processing],
|
@@ -96,14 +102,23 @@ module Spaceship
|
|
96
102
|
# API
|
97
103
|
#
|
98
104
|
|
99
|
-
def self.all(app_id: nil, version: nil, build_number: nil, includes: ESSENTIAL_INCLUDES, sort: "-uploadedDate", limit: 30)
|
105
|
+
def self.all(app_id: nil, version: nil, build_number: nil, platform: nil, processing_states: "PROCESSING,FAILED,INVALID,VALID", includes: ESSENTIAL_INCLUDES, sort: "-uploadedDate", limit: 30)
|
100
106
|
resps = Spaceship::ConnectAPI.get_builds(
|
101
|
-
filter: { app: app_id, "preReleaseVersion.version" => version, version: build_number },
|
107
|
+
filter: { app: app_id, "preReleaseVersion.version" => version, version: build_number, processingState: processing_states },
|
102
108
|
includes: includes,
|
103
109
|
sort: sort,
|
104
110
|
limit: limit
|
105
111
|
).all_pages
|
106
|
-
|
112
|
+
models = resps.map(&:to_models).flatten
|
113
|
+
|
114
|
+
# Filtering after models are fetched since there is no way to do this in a query param filter
|
115
|
+
if platform
|
116
|
+
models = models.select do |build|
|
117
|
+
build.pre_release_version && build.pre_release_version.platform == platform
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
return models
|
107
122
|
end
|
108
123
|
|
109
124
|
def self.get(build_id: nil, includes: ESSENTIAL_INCLUDES)
|
@@ -228,7 +228,7 @@ module Spaceship
|
|
228
228
|
end
|
229
229
|
}
|
230
230
|
|
231
|
-
delete("betaTesters/#{beta_tester_id}/relationships/apps", nil, body)
|
231
|
+
Client.instance.delete("betaTesters/#{beta_tester_id}/relationships/apps", nil, body)
|
232
232
|
end
|
233
233
|
|
234
234
|
def delete_beta_tester_from_beta_groups(beta_tester_id: nil, beta_group_ids: [])
|
@@ -241,7 +241,7 @@ module Spaceship
|
|
241
241
|
end
|
242
242
|
}
|
243
243
|
|
244
|
-
delete("betaTesters/#{beta_tester_id}/relationships/betaGroups", nil, body)
|
244
|
+
Client.instance.delete("betaTesters/#{beta_tester_id}/relationships/betaGroups", nil, body)
|
245
245
|
end
|
246
246
|
|
247
247
|
#
|
@@ -217,8 +217,7 @@ module Spaceship
|
|
217
217
|
return if ready_to_test?
|
218
218
|
return if approved?
|
219
219
|
|
220
|
-
|
221
|
-
Spaceship::ConnectAPI.post_beta_app_review_submissions(build_id: build["id"])
|
220
|
+
Spaceship::ConnectAPI.post_beta_app_review_submissions(build_id: id)
|
222
221
|
end
|
223
222
|
|
224
223
|
def expire!
|
@@ -231,8 +230,12 @@ module Spaceship
|
|
231
230
|
|
232
231
|
# Bridges the TestFlight::Build to the App Store Connect API build
|
233
232
|
def find_app_store_connect_build
|
234
|
-
|
235
|
-
|
233
|
+
builds = Spaceship::ConnectAPI::Build.all(
|
234
|
+
app_id: app_id,
|
235
|
+
version: self.train_version,
|
236
|
+
build_number: self.build_version
|
237
|
+
)
|
238
|
+
return builds.find { |build| build.id == id }
|
236
239
|
end
|
237
240
|
end
|
238
241
|
end
|
@@ -13,8 +13,12 @@ module Spaceship::TestFlight
|
|
13
13
|
# See `Spaceship::TestFlight::Build#reload`
|
14
14
|
|
15
15
|
def self.all(app_id: nil, platform: nil, retry_count: 3)
|
16
|
-
|
17
|
-
connect_builds =
|
16
|
+
filter_platform = Spaceship::ConnectAPI::Platform.map(platform) if platform
|
17
|
+
connect_builds = Spaceship::ConnectAPI::Build.all(
|
18
|
+
app_id: app_id,
|
19
|
+
sort: "uploadedDate",
|
20
|
+
platform: filter_platform
|
21
|
+
)
|
18
22
|
|
19
23
|
trains = {}
|
20
24
|
connect_builds.each do |connect_build|
|
@@ -216,6 +216,16 @@ module Spaceship
|
|
216
216
|
end
|
217
217
|
end
|
218
218
|
|
219
|
+
def versions_history_custom(plat)
|
220
|
+
ensure_not_a_bundle
|
221
|
+
p "prova"
|
222
|
+
versions = client.versions_history(apple_id, plat)
|
223
|
+
versions.map do |attrs|
|
224
|
+
attrs[:application] = self
|
225
|
+
Tunes::AppVersionHistory.factory(attrs)
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
219
229
|
#####################################################
|
220
230
|
# @!group Modifying
|
221
231
|
#####################################################
|
metadata
CHANGED
@@ -1,33 +1,33 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane_iac_publish
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
- Helmut Januschka
|
9
|
-
- Jérôme Lacoste
|
10
|
-
- Felix Krause
|
11
|
-
- Jorge Revuelta H
|
12
|
-
- Kohki Miki
|
13
|
-
- Iulian Onofrei
|
14
|
-
- Olivier Halligon
|
15
|
-
- Stefan Natchev
|
7
|
+
- Danielle Tomlinson
|
16
8
|
- Joshua Liebowitz
|
17
9
|
- Andrew McBurney
|
18
|
-
- Maksym Grebenets
|
19
|
-
- Danielle Tomlinson
|
20
|
-
- Manu Wallner
|
21
|
-
- Fumiya Nakamura
|
22
|
-
- Jan Piotrowski
|
23
10
|
- Jimmy Dee
|
11
|
+
- Jorge Revuelta H
|
24
12
|
- Josh Holtz
|
13
|
+
- Helmut Januschka
|
14
|
+
- Jan Piotrowski
|
25
15
|
- Aaron Brager
|
16
|
+
- Kohki Miki
|
17
|
+
- Matthew Ellis
|
18
|
+
- Fumiya Nakamura
|
19
|
+
- Jérôme Lacoste
|
20
|
+
- Manu Wallner
|
21
|
+
- Felix Krause
|
26
22
|
- Luka Mirosevic
|
23
|
+
- Olivier Halligon
|
24
|
+
- Stefan Natchev
|
25
|
+
- Maksym Grebenets
|
26
|
+
- Iulian Onofrei
|
27
27
|
autorequire:
|
28
28
|
bindir: bin
|
29
29
|
cert_chain: []
|
30
|
-
date: 2019-07-
|
30
|
+
date: 2019-07-20 00:00:00.000000000 Z
|
31
31
|
dependencies:
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: slack-notifier
|
@@ -431,16 +431,22 @@ dependencies:
|
|
431
431
|
name: mini_magick
|
432
432
|
requirement: !ruby/object:Gem::Requirement
|
433
433
|
requirements:
|
434
|
-
- - "
|
434
|
+
- - ">="
|
435
|
+
- !ruby/object:Gem::Version
|
436
|
+
version: 4.9.4
|
437
|
+
- - "<"
|
435
438
|
- !ruby/object:Gem::Version
|
436
|
-
version:
|
439
|
+
version: 5.0.0
|
437
440
|
type: :runtime
|
438
441
|
prerelease: false
|
439
442
|
version_requirements: !ruby/object:Gem::Requirement
|
440
443
|
requirements:
|
441
|
-
- - "
|
444
|
+
- - ">="
|
445
|
+
- !ruby/object:Gem::Version
|
446
|
+
version: 4.9.4
|
447
|
+
- - "<"
|
442
448
|
- !ruby/object:Gem::Version
|
443
|
-
version:
|
449
|
+
version: 5.0.0
|
444
450
|
- !ruby/object:Gem::Dependency
|
445
451
|
name: multi_xml
|
446
452
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1578,6 +1584,7 @@ files:
|
|
1578
1584
|
- snapshot/lib/snapshot/test_command_generator_xcode_8.rb
|
1579
1585
|
- snapshot/lib/snapshot/update.rb
|
1580
1586
|
- spaceship/README.md
|
1587
|
+
- spaceship/lib/.DS_Store
|
1581
1588
|
- spaceship/lib/assets/displayFamilies.json
|
1582
1589
|
- spaceship/lib/assets/languageMapping.json
|
1583
1590
|
- spaceship/lib/assets/languageMappingReadable.json
|