fastlane 2.206.0 → 2.207.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +100 -100
- data/deliver/lib/deliver/runner.rb +31 -35
- data/deliver/lib/deliver/upload_price_tier.rb +3 -1
- data/deliver/lib/deliver/upload_screenshots.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_info_plist.rb +1 -1
- data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +1 -1
- data/fastlane/lib/fastlane/actions/xcodebuild.rb +8 -2
- data/fastlane/lib/fastlane/cli_tools_distributor.rb +1 -16
- data/fastlane/lib/fastlane/lane_manager.rb +1 -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/tools.rb +16 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastlane.swift +14 -2
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/joshholtz.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/MainProcess.swift +2 -2
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +5 -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/swift/SocketClient.swift +1 -1
- data/fastlane/swift/formatting/Brewfile.lock.json +21 -16
- data/fastlane_core/lib/fastlane_core/project.rb +19 -2
- data/frameit/lib/frameit/device_types.rb +2 -0
- data/match/lib/match/.module.rb.swp +0 -0
- data/match/lib/match/.nuke.rb.swp +0 -0
- data/match/lib/match/encryption.rb +3 -0
- data/match/lib/match/importer.rb +1 -0
- data/match/lib/match/module.rb +53 -1
- data/match/lib/match/nuke.rb +3 -40
- data/match/lib/match/options.rb +6 -0
- data/match/lib/match/runner.rb +5 -1
- data/match/lib/match/spaceship_ensure.rb +4 -2
- data/match/lib/match/storage/gitlab/client.rb +86 -0
- data/match/lib/match/storage/gitlab/secure_file.rb +66 -0
- data/match/lib/match/storage/gitlab_secure_files.rb +179 -0
- data/match/lib/match/storage.rb +4 -0
- data/pem/lib/pem/manager.rb +1 -1
- data/scan/lib/scan/detect_values.rb +6 -0
- data/sigh/lib/sigh/download_all.rb +14 -2
- data/sigh/lib/sigh/module.rb +3 -1
- data/sigh/lib/sigh/runner.rb +7 -0
- data/snapshot/lib/snapshot/reports_generator.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +4 -2
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +18 -8
- metadata +29 -23
@@ -6655,6 +6655,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
6655
6655
|
- s3SecretAccessKey: S3 secret access key
|
6656
6656
|
- s3Bucket: Name of the S3 bucket
|
6657
6657
|
- s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
|
6658
|
+
- gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
|
6658
6659
|
- keychainName: Keychain the items should be imported to
|
6659
6660
|
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
|
6660
6661
|
- force: Renew the provisioning profiles every time you run match
|
@@ -6706,6 +6707,7 @@ public func match(type: String = matchfile.type,
|
|
6706
6707
|
s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3SecretAccessKey),
|
6707
6708
|
s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3Bucket),
|
6708
6709
|
s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3ObjectPrefix),
|
6710
|
+
gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.gitlabProject),
|
6709
6711
|
keychainName: String = matchfile.keychainName,
|
6710
6712
|
keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.keychainPassword),
|
6711
6713
|
force: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.force),
|
@@ -6755,6 +6757,7 @@ public func match(type: String = matchfile.type,
|
|
6755
6757
|
let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
|
6756
6758
|
let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
|
6757
6759
|
let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
|
6760
|
+
let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
|
6758
6761
|
let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
|
6759
6762
|
let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
|
6760
6763
|
let forceArg = force.asRubyArgument(name: "force", type: nil)
|
@@ -6803,6 +6806,7 @@ public func match(type: String = matchfile.type,
|
|
6803
6806
|
s3SecretAccessKeyArg,
|
6804
6807
|
s3BucketArg,
|
6805
6808
|
s3ObjectPrefixArg,
|
6809
|
+
gitlabProjectArg,
|
6806
6810
|
keychainNameArg,
|
6807
6811
|
keychainPasswordArg,
|
6808
6812
|
forceArg,
|
@@ -6862,6 +6866,7 @@ public func match(type: String = matchfile.type,
|
|
6862
6866
|
- s3SecretAccessKey: S3 secret access key
|
6863
6867
|
- s3Bucket: Name of the S3 bucket
|
6864
6868
|
- s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
|
6869
|
+
- gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
|
6865
6870
|
- keychainName: Keychain the items should be imported to
|
6866
6871
|
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
|
6867
6872
|
- force: Renew the provisioning profiles every time you run match
|
@@ -6917,6 +6922,7 @@ public func matchNuke(type: String = "development",
|
|
6917
6922
|
s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
6918
6923
|
s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
6919
6924
|
s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
6925
|
+
gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
6920
6926
|
keychainName: String = "login.keychain",
|
6921
6927
|
keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
6922
6928
|
force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
@@ -6966,6 +6972,7 @@ public func matchNuke(type: String = "development",
|
|
6966
6972
|
let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
|
6967
6973
|
let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
|
6968
6974
|
let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
|
6975
|
+
let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
|
6969
6976
|
let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
|
6970
6977
|
let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
|
6971
6978
|
let forceArg = force.asRubyArgument(name: "force", type: nil)
|
@@ -7014,6 +7021,7 @@ public func matchNuke(type: String = "development",
|
|
7014
7021
|
s3SecretAccessKeyArg,
|
7015
7022
|
s3BucketArg,
|
7016
7023
|
s3ObjectPrefixArg,
|
7024
|
+
gitlabProjectArg,
|
7017
7025
|
keychainNameArg,
|
7018
7026
|
keychainPasswordArg,
|
7019
7027
|
forceArg,
|
@@ -11060,6 +11068,7 @@ public func swiftlint(mode: String = "lint",
|
|
11060
11068
|
- s3SecretAccessKey: S3 secret access key
|
11061
11069
|
- s3Bucket: Name of the S3 bucket
|
11062
11070
|
- s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
|
11071
|
+
- gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
|
11063
11072
|
- keychainName: Keychain the items should be imported to
|
11064
11073
|
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
|
11065
11074
|
- force: Renew the provisioning profiles every time you run match
|
@@ -11111,6 +11120,7 @@ public func syncCodeSigning(type: String = "development",
|
|
11111
11120
|
s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
11112
11121
|
s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
11113
11122
|
s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
11123
|
+
gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
11114
11124
|
keychainName: String = "login.keychain",
|
11115
11125
|
keychainPassword: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
11116
11126
|
force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
@@ -11160,6 +11170,7 @@ public func syncCodeSigning(type: String = "development",
|
|
11160
11170
|
let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
|
11161
11171
|
let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
|
11162
11172
|
let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
|
11173
|
+
let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
|
11163
11174
|
let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
|
11164
11175
|
let keychainPasswordArg = keychainPassword.asRubyArgument(name: "keychain_password", type: nil)
|
11165
11176
|
let forceArg = force.asRubyArgument(name: "force", type: nil)
|
@@ -11208,6 +11219,7 @@ public func syncCodeSigning(type: String = "development",
|
|
11208
11219
|
s3SecretAccessKeyArg,
|
11209
11220
|
s3BucketArg,
|
11210
11221
|
s3ObjectPrefixArg,
|
11222
|
+
gitlabProjectArg,
|
11211
11223
|
keychainNameArg,
|
11212
11224
|
keychainPasswordArg,
|
11213
11225
|
forceArg,
|
@@ -13263,7 +13275,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
|
|
13263
13275
|
coverallsServiceJobId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
13264
13276
|
coverallsRepoToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
13265
13277
|
xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
13266
|
-
ideFoundationPath: String = "/Applications/Xcode-13.
|
13278
|
+
ideFoundationPath: String = "/Applications/Xcode-13.4.1.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
13267
13279
|
legacySupport: OptionalConfigValue<Bool> = .fastlaneDefault(false))
|
13268
13280
|
{
|
13269
13281
|
let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
|
@@ -13466,4 +13478,4 @@ public let snapshotfile: Snapshotfile = .init()
|
|
13466
13478
|
|
13467
13479
|
// Please don't remove the lines below
|
13468
13480
|
// They are used to detect outdated files
|
13469
|
-
// FastlaneRunnerAPIVersion [0.9.
|
13481
|
+
// FastlaneRunnerAPIVersion [0.9.159]
|
Binary file
|
@@ -47,9 +47,9 @@ class MainProcess {
|
|
47
47
|
let PATH = run("/bin/bash", "-c", "-l", "eval $(/usr/libexec/path_helper -s) ; echo $PATH").stdout
|
48
48
|
main.env["PATH"] = PATH
|
49
49
|
let path = main.run(bash: "which fastlane").stdout
|
50
|
-
let pids = main.run("lsof", "-t", "-i", "
|
50
|
+
let pids = main.run("lsof", "-t", "-i", ":\(argumentProcessor.port)").stdout.split(separator: "\n")
|
51
51
|
pids.forEach { main.run("kill", "-9", $0) }
|
52
|
-
rubySocketCommand = main.runAsync(path, "socket_server", "-c", "
|
52
|
+
rubySocketCommand = main.runAsync(path, "socket_server", "-c", argumentProcessor.commandTimeout, "-p", argumentProcessor.port)
|
53
53
|
lastPrintDate = Date()
|
54
54
|
rubySocketCommand.stderror.onStringOutput { print($0) }
|
55
55
|
rubySocketCommand.stdout.onStringOutput { stdout in
|
@@ -92,6 +92,9 @@ public protocol MatchfileProtocol: AnyObject {
|
|
92
92
|
/// Prefix to be used on all objects uploaded to S3
|
93
93
|
var s3ObjectPrefix: String? { get }
|
94
94
|
|
95
|
+
/// GitLab Project Path (i.e. 'gitlab-org/gitlab')
|
96
|
+
var gitlabProject: String? { get }
|
97
|
+
|
95
98
|
/// Keychain the items should be imported to
|
96
99
|
var keychainName: String { get }
|
97
100
|
|
@@ -178,6 +181,7 @@ public extension MatchfileProtocol {
|
|
178
181
|
var s3SecretAccessKey: String? { return nil }
|
179
182
|
var s3Bucket: String? { return nil }
|
180
183
|
var s3ObjectPrefix: String? { return nil }
|
184
|
+
var gitlabProject: String? { return nil }
|
181
185
|
var keychainName: String { return "login.keychain" }
|
182
186
|
var keychainPassword: String? { return nil }
|
183
187
|
var force: Bool { return false }
|
@@ -200,4 +204,4 @@ public extension MatchfileProtocol {
|
|
200
204
|
|
201
205
|
// Please don't remove the lines below
|
202
206
|
// They are used to detect outdated files
|
203
|
-
// FastlaneRunnerAPIVersion [0.9.
|
207
|
+
// FastlaneRunnerAPIVersion [0.9.103]
|
@@ -310,7 +310,7 @@ extension SocketClient: StreamDelegate {
|
|
310
310
|
LaneFile.fastfileInstance?.onError(currentLane: ArgumentProcessor(args: CommandLine.arguments).currentLane, errorInfo: failureInformation.joined(), errorClass: failureClass, errorMessage: failureMessage)
|
311
311
|
socketDelegate?.commandExecuted(serverResponse: .serverError) {
|
312
312
|
$0.writeSemaphore.signal()
|
313
|
-
self.handleFailure(message: failureInformation)
|
313
|
+
self.handleFailure(message: failureMessage.map { m in [m] + failureInformation } ?? failureInformation)
|
314
314
|
}
|
315
315
|
|
316
316
|
case let .parseFailure(failureInformation):
|
@@ -2,35 +2,40 @@
|
|
2
2
|
"entries": {
|
3
3
|
"brew": {
|
4
4
|
"swiftformat": {
|
5
|
-
"version": "0.49.
|
5
|
+
"version": "0.49.11",
|
6
6
|
"bottle": {
|
7
7
|
"rebuild": 0,
|
8
8
|
"root_url": "https://ghcr.io/v2/homebrew/core",
|
9
9
|
"files": {
|
10
10
|
"arm64_monterey": {
|
11
11
|
"cellar": ":any_skip_relocation",
|
12
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
13
|
-
"sha256": "
|
12
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:1c355872557efa651e7baa0a73414b4d944c8045caf5595b49be5aa487c790b5",
|
13
|
+
"sha256": "1c355872557efa651e7baa0a73414b4d944c8045caf5595b49be5aa487c790b5"
|
14
14
|
},
|
15
15
|
"arm64_big_sur": {
|
16
16
|
"cellar": ":any_skip_relocation",
|
17
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
18
|
-
"sha256": "
|
17
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:a6c6bcd203119f7a0f687ae57502bf93bbd9d4b05e838b8a8e3dbc76679b54c0",
|
18
|
+
"sha256": "a6c6bcd203119f7a0f687ae57502bf93bbd9d4b05e838b8a8e3dbc76679b54c0"
|
19
19
|
},
|
20
20
|
"monterey": {
|
21
21
|
"cellar": ":any_skip_relocation",
|
22
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
23
|
-
"sha256": "
|
22
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:d8d59a615cf956c6ccbdade566bcb18e1f4aeeaae8399f52e55a4bca7b014ed9",
|
23
|
+
"sha256": "d8d59a615cf956c6ccbdade566bcb18e1f4aeeaae8399f52e55a4bca7b014ed9"
|
24
24
|
},
|
25
25
|
"big_sur": {
|
26
26
|
"cellar": ":any_skip_relocation",
|
27
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
28
|
-
"sha256": "
|
27
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:0dddb88b994904ae813b35a9a3d08f33bbd8b7f1bc15addce9e3d366b48257f5",
|
28
|
+
"sha256": "0dddb88b994904ae813b35a9a3d08f33bbd8b7f1bc15addce9e3d366b48257f5"
|
29
29
|
},
|
30
30
|
"catalina": {
|
31
31
|
"cellar": ":any_skip_relocation",
|
32
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
33
|
-
"sha256": "
|
32
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:a0e7393b2667a4fb21723f0f50de3b97c256237aa572927b103dd7467fe44624",
|
33
|
+
"sha256": "a0e7393b2667a4fb21723f0f50de3b97c256237aa572927b103dd7467fe44624"
|
34
|
+
},
|
35
|
+
"x86_64_linux": {
|
36
|
+
"cellar": "/home/linuxbrew/.linuxbrew/Cellar",
|
37
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:1d855fe86b853bf153171aa4b9b22c638ba63d42e052795a5e7713afe71f39d6",
|
38
|
+
"sha256": "1d855fe86b853bf153171aa4b9b22c638ba63d42e052795a5e7713afe71f39d6"
|
34
39
|
}
|
35
40
|
}
|
36
41
|
}
|
@@ -56,12 +61,12 @@
|
|
56
61
|
"macOS": "11.0.1"
|
57
62
|
},
|
58
63
|
"monterey": {
|
59
|
-
"HOMEBREW_VERSION": "3.
|
64
|
+
"HOMEBREW_VERSION": "3.5.3-17-g74e933c",
|
60
65
|
"HOMEBREW_PREFIX": "/opt/homebrew",
|
61
|
-
"Homebrew/homebrew-core": "
|
62
|
-
"CLT": "13.
|
63
|
-
"Xcode": "13.
|
64
|
-
"macOS": "12.
|
66
|
+
"Homebrew/homebrew-core": "94237d1700b55d421ce5580080a9d6dff2deba2a",
|
67
|
+
"CLT": "13.4.0.0.1.1651278267",
|
68
|
+
"Xcode": "13.4.1",
|
69
|
+
"macOS": "12.4"
|
65
70
|
}
|
66
71
|
}
|
67
72
|
}
|
@@ -356,7 +356,7 @@ module FastlaneCore
|
|
356
356
|
# This xcodebuild bug is fixed in Xcode 8.3 so 'clean' it's not necessary anymore
|
357
357
|
# See: https://github.com/fastlane/fastlane/pull/5626
|
358
358
|
if FastlaneCore::Helper.xcode_at_least?('8.3')
|
359
|
-
command = "xcodebuild -showBuildSettings #{xcodebuild_parameters.join(' ')}"
|
359
|
+
command = "xcodebuild -showBuildSettings #{xcodebuild_parameters.join(' ')}#{xcodebuild_destination_parameter}"
|
360
360
|
else
|
361
361
|
command = "xcodebuild clean -showBuildSettings #{xcodebuild_parameters.join(' ')}"
|
362
362
|
end
|
@@ -365,10 +365,27 @@ module FastlaneCore
|
|
365
365
|
|
366
366
|
def build_xcodebuild_resolvepackagedependencies_command
|
367
367
|
return nil if options[:skip_package_dependencies_resolution]
|
368
|
-
command = "xcodebuild -resolvePackageDependencies #{xcodebuild_parameters.join(' ')}"
|
368
|
+
command = "xcodebuild -resolvePackageDependencies #{xcodebuild_parameters.join(' ')}#{xcodebuild_destination_parameter}"
|
369
369
|
command
|
370
370
|
end
|
371
371
|
|
372
|
+
def xcodebuild_destination_parameter
|
373
|
+
# Xcode13+ xcodebuild command 'without destination parameter' generates annoying warnings
|
374
|
+
# See: https://github.com/fastlane/fastlane/issues/19579
|
375
|
+
destination_parameter = ""
|
376
|
+
xcode_at_least_13 = FastlaneCore::Helper.xcode_at_least?("13")
|
377
|
+
if xcode_at_least_13 && options[:destination]
|
378
|
+
begin
|
379
|
+
destination_parameter = " " + "-destination #{options[:destination].shellescape}"
|
380
|
+
rescue => ex
|
381
|
+
# xcodebuild command can continue without destination parameter, so
|
382
|
+
# we really don't care about this exception if something goes wrong with shellescape
|
383
|
+
UI.important("Failed to set destination parameter for xcodebuild command: #{ex}")
|
384
|
+
end
|
385
|
+
end
|
386
|
+
destination_parameter
|
387
|
+
end
|
388
|
+
|
372
389
|
# Get the build settings for our project
|
373
390
|
# e.g. to properly get the DerivedData folder
|
374
391
|
# @param [String] The key of which we want the value for (e.g. "PRODUCT_NAME")
|
@@ -50,6 +50,7 @@ module Frameit
|
|
50
50
|
MIDNIGHT ||= "Midnight"
|
51
51
|
STARLIGHT ||= "Starlight"
|
52
52
|
SIERRA ||= "Sierra"
|
53
|
+
SORTA_SAGE ||= "Sorta Sage"
|
53
54
|
|
54
55
|
def self.all_colors
|
55
56
|
Color.constants.map { |c| Color.const_get(c).upcase.gsub(' ', '_') }
|
@@ -85,6 +86,7 @@ module Frameit
|
|
85
86
|
# Google Pixel 4's priority should be higher than Samsung Galaxy S10+ (priority 8):
|
86
87
|
GOOGLE_PIXEL_4 ||= Frameit::Device.new("google-pixel-4", "Google Pixel 4", 9, [[1080, 2280], [2280, 1080]], 444, Color::JUST_BLACK, Platform::ANDROID)
|
87
88
|
GOOGLE_PIXEL_4_XL ||= Frameit::Device.new("google-pixel-4-xl", "Google Pixel 4 XL", 9, [[1440, 3040], [3040, 1440]], 537, Color::JUST_BLACK, Platform::ANDROID)
|
89
|
+
GOOGLE_PIXEL_5 ||= Frameit::Device.new("google-pixel-5", "Google Pixel 5", 10, [[1080, 2340], [2340, 1080]], 432, Color::JUST_BLACK, Platform::ANDROID)
|
88
90
|
HTC_ONE_A9 ||= Frameit::Device.new("htc-one-a9", "HTC One A9", 6, [[1080, 1920], [1920, 1080]], 441, Color::BLACK, Platform::ANDROID)
|
89
91
|
HTC_ONE_M8 ||= Frameit::Device.new("htc-one-m8", "HTC One M8", 3, [[1080, 1920], [1920, 1080]], 441, Color::BLACK, Platform::ANDROID)
|
90
92
|
HUAWEI_P8 ||= Frameit::Device.new("huawei-p8", "Huawei P8", 5, [[1080, 1920], [1920, 1080]], 424, Color::BLACK, Platform::ANDROID)
|
Binary file
|
Binary file
|
data/match/lib/match/importer.rb
CHANGED
@@ -37,6 +37,7 @@ module Match
|
|
37
37
|
s3_access_key: params[:s3_access_key],
|
38
38
|
s3_secret_access_key: params[:s3_secret_access_key],
|
39
39
|
s3_object_prefix: params[:s3_object_prefix],
|
40
|
+
gitlab_project: params[:gitlab_project],
|
40
41
|
readonly: params[:readonly],
|
41
42
|
username: params[:username],
|
42
43
|
team_id: params[:team_id],
|
data/match/lib/match/module.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'spaceship'
|
2
|
+
|
1
3
|
require 'fastlane_core/helper'
|
2
4
|
require 'fastlane/boolean'
|
3
5
|
|
@@ -13,7 +15,7 @@ module Match
|
|
13
15
|
end
|
14
16
|
|
15
17
|
def self.storage_modes
|
16
|
-
return %w(git google_cloud s3)
|
18
|
+
return %w(git google_cloud s3 gitlab_secure_files)
|
17
19
|
end
|
18
20
|
|
19
21
|
def self.profile_type_sym(type)
|
@@ -30,4 +32,54 @@ module Match
|
|
30
32
|
return :distribution if ["adhoc", "appstore", "distribution"].include?(type)
|
31
33
|
raise "Unknown cert type: '#{type}'"
|
32
34
|
end
|
35
|
+
|
36
|
+
# Converts provisioning profile type (i.e. development, enterprise) to an array of profile types
|
37
|
+
# That can be used for filtering when using Spaceship::ConnectAPI::Profile API
|
38
|
+
def self.profile_types(prov_type)
|
39
|
+
case prov_type.to_sym
|
40
|
+
when :appstore
|
41
|
+
return [
|
42
|
+
Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_STORE,
|
43
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_APP_STORE,
|
44
|
+
Spaceship::ConnectAPI::Profile::ProfileType::TVOS_APP_STORE,
|
45
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_CATALYST_APP_STORE
|
46
|
+
]
|
47
|
+
when :development
|
48
|
+
return [
|
49
|
+
Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_DEVELOPMENT,
|
50
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_APP_DEVELOPMENT,
|
51
|
+
Spaceship::ConnectAPI::Profile::ProfileType::TVOS_APP_DEVELOPMENT,
|
52
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_CATALYST_APP_DEVELOPMENT
|
53
|
+
]
|
54
|
+
when :enterprise
|
55
|
+
profiles = [
|
56
|
+
Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_INHOUSE,
|
57
|
+
Spaceship::ConnectAPI::Profile::ProfileType::TVOS_APP_INHOUSE
|
58
|
+
]
|
59
|
+
|
60
|
+
# As of 2022-06-25, only available with Apple ID auth
|
61
|
+
if Spaceship::ConnectAPI.token
|
62
|
+
UI.important("Skipping #{Spaceship::ConnectAPI::Profile::ProfileType::MAC_APP_INHOUSE} and #{Spaceship::ConnectAPI::Profile::ProfileType::MAC_CATALYST_APP_INHOUSE}... only available with Apple ID auth")
|
63
|
+
else
|
64
|
+
profiles += [
|
65
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_APP_INHOUSE,
|
66
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_CATALYST_APP_INHOUSE
|
67
|
+
]
|
68
|
+
end
|
69
|
+
|
70
|
+
return profiles
|
71
|
+
when :adhoc
|
72
|
+
return [
|
73
|
+
Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_ADHOC,
|
74
|
+
Spaceship::ConnectAPI::Profile::ProfileType::TVOS_APP_ADHOC
|
75
|
+
]
|
76
|
+
when :developer_id
|
77
|
+
return [
|
78
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_APP_DIRECT,
|
79
|
+
Spaceship::ConnectAPI::Profile::ProfileType::MAC_CATALYST_APP_DIRECT
|
80
|
+
]
|
81
|
+
else
|
82
|
+
raise "Unknown provisioning type '#{prov_type}'"
|
83
|
+
end
|
84
|
+
end
|
33
85
|
end
|
data/match/lib/match/nuke.rb
CHANGED
@@ -54,6 +54,8 @@ module Match
|
|
54
54
|
s3_access_key: params[:s3_access_key].to_s,
|
55
55
|
s3_secret_access_key: params[:s3_secret_access_key].to_s,
|
56
56
|
s3_bucket: params[:s3_bucket].to_s,
|
57
|
+
s3_object_prefix: params[:s3_object_prefix].to_s,
|
58
|
+
gitlab_project: params[:gitlab_project],
|
57
59
|
team_id: params[:team_id] || Spaceship::ConnectAPI.client.portal_team_id
|
58
60
|
})
|
59
61
|
self.storage.download
|
@@ -148,9 +150,7 @@ module Match
|
|
148
150
|
# Get all iOS and macOS profile
|
149
151
|
self.profiles = []
|
150
152
|
prov_types.each do |prov_type|
|
151
|
-
types = profile_types(prov_type)
|
152
|
-
# Filtering on 'profileType' seems to be undocumented as of 2020-07-30
|
153
|
-
# but works on both web session and official API
|
153
|
+
types = Match.profile_types(prov_type)
|
154
154
|
self.profiles += Spaceship::ConnectAPI::Profile.all(filter: { profileType: types.join(",") }, includes: "certificates")
|
155
155
|
end
|
156
156
|
|
@@ -404,43 +404,6 @@ module Match
|
|
404
404
|
end
|
405
405
|
end
|
406
406
|
|
407
|
-
# The kind of provisioning profile we're interested in
|
408
|
-
def profile_types(prov_type)
|
409
|
-
case prov_type.to_sym
|
410
|
-
when :appstore
|
411
|
-
return [
|
412
|
-
Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_STORE,
|
413
|
-
Spaceship::ConnectAPI::Profile::ProfileType::MAC_APP_STORE,
|
414
|
-
Spaceship::ConnectAPI::Profile::ProfileType::TVOS_APP_STORE,
|
415
|
-
Spaceship::ConnectAPI::Profile::ProfileType::MAC_CATALYST_APP_STORE
|
416
|
-
]
|
417
|
-
when :development
|
418
|
-
return [
|
419
|
-
Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_DEVELOPMENT,
|
420
|
-
Spaceship::ConnectAPI::Profile::ProfileType::MAC_APP_DEVELOPMENT,
|
421
|
-
Spaceship::ConnectAPI::Profile::ProfileType::TVOS_APP_DEVELOPMENT,
|
422
|
-
Spaceship::ConnectAPI::Profile::ProfileType::MAC_CATALYST_APP_DEVELOPMENT
|
423
|
-
]
|
424
|
-
when :enterprise
|
425
|
-
return [
|
426
|
-
Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_INHOUSE,
|
427
|
-
Spaceship::ConnectAPI::Profile::ProfileType::TVOS_APP_INHOUSE
|
428
|
-
]
|
429
|
-
when :adhoc
|
430
|
-
return [
|
431
|
-
Spaceship::ConnectAPI::Profile::ProfileType::IOS_APP_ADHOC,
|
432
|
-
Spaceship::ConnectAPI::Profile::ProfileType::TVOS_APP_ADHOC
|
433
|
-
]
|
434
|
-
when :developer_id
|
435
|
-
return [
|
436
|
-
Spaceship::ConnectAPI::Profile::ProfileType::MAC_APP_DIRECT,
|
437
|
-
Spaceship::ConnectAPI::Profile::ProfileType::MAC_CATALYST_APP_DIRECT
|
438
|
-
]
|
439
|
-
else
|
440
|
-
raise "Unknown provisioning type '#{prov_type}'"
|
441
|
-
end
|
442
|
-
end
|
443
|
-
|
444
407
|
# Helpers for `safe_remove_certs`
|
445
408
|
def print_safe_remove_certs_hint
|
446
409
|
return if self.safe_remove_certs
|
data/match/lib/match/options.rb
CHANGED
@@ -223,6 +223,12 @@ module Match
|
|
223
223
|
description: "Prefix to be used on all objects uploaded to S3",
|
224
224
|
optional: true),
|
225
225
|
|
226
|
+
# Storage: GitLab Secure Files
|
227
|
+
FastlaneCore::ConfigItem.new(key: :gitlab_project,
|
228
|
+
env_name: "MATCH_GITLAB_PROJECT",
|
229
|
+
description: "GitLab Project Path (i.e. 'gitlab-org/gitlab')",
|
230
|
+
optional: true),
|
231
|
+
|
226
232
|
# Keychain
|
227
233
|
FastlaneCore::ConfigItem.new(key: :keychain_name,
|
228
234
|
short_option: "-s",
|
data/match/lib/match/runner.rb
CHANGED
@@ -54,6 +54,7 @@ module Match
|
|
54
54
|
s3_secret_access_key: params[:s3_secret_access_key],
|
55
55
|
s3_bucket: params[:s3_bucket],
|
56
56
|
s3_object_prefix: params[:s3_object_prefix],
|
57
|
+
gitlab_project: params[:gitlab_project],
|
57
58
|
readonly: params[:readonly],
|
58
59
|
username: params[:readonly] ? nil : params[:username], # only pass username if not readonly
|
59
60
|
team_id: params[:team_id],
|
@@ -286,7 +287,10 @@ module Match
|
|
286
287
|
FileUtils.cp(profile, params[:output_path])
|
287
288
|
end
|
288
289
|
|
289
|
-
if spaceship && !spaceship.profile_exists(
|
290
|
+
if spaceship && !spaceship.profile_exists(type: prov_type,
|
291
|
+
username: params[:username],
|
292
|
+
uuid: uuid,
|
293
|
+
platform: params[:platform])
|
290
294
|
# This profile is invalid, let's remove the local file and generate a new one
|
291
295
|
File.delete(profile)
|
292
296
|
# This method will be called again, no need to modify `files_to_commit`
|
@@ -74,10 +74,12 @@ module Match
|
|
74
74
|
UI.user_error!("To reset the certificates of your Apple account, you can use the `fastlane match nuke` feature, more information on https://docs.fastlane.tools/actions/match/")
|
75
75
|
end
|
76
76
|
|
77
|
-
def profile_exists(username: nil, uuid: nil, platform: nil)
|
77
|
+
def profile_exists(type: nil, username: nil, uuid: nil, platform: nil)
|
78
78
|
# App Store Connect API does not allow filter of profile by platform or uuid (as of 2020-07-30)
|
79
79
|
# Need to fetch all profiles and search for uuid on client side
|
80
|
-
|
80
|
+
# But we can filter provisioning profiles based on their type (this, in general way faster than getting all profiles)
|
81
|
+
filter = { profileType: Match.profile_types(type).join(",") } if type
|
82
|
+
found = Spaceship::ConnectAPI::Profile.all(filter: filter).find do |profile|
|
81
83
|
profile.uuid == uuid
|
82
84
|
end
|
83
85
|
|