fastlane 2.212.1 → 2.213.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 +96 -96
- data/deliver/lib/deliver/runner.rb +7 -7
- data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +44 -5
- 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 +28 -4
- 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 +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 +5 -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/formatting/Brewfile.lock.json +17 -17
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +0 -5
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +48 -14
- data/match/lib/match/importer.rb +1 -0
- data/match/lib/match/nuke.rb +1 -0
- data/match/lib/match/options.rb +5 -0
- data/match/lib/match/runner.rb +1 -0
- data/match/lib/match/storage/gitlab_secure_files.rb +10 -4
- data/pilot/lib/pilot/build_manager.rb +4 -4
- data/scan/lib/scan/detect_values.rb +8 -1
- data/scan/lib/scan/options.rb +5 -0
- data/snapshot/lib/snapshot/latest_os_version.rb +2 -5
- data/spaceship/lib/spaceship/connect_api/models/app.rb +2 -2
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +1 -1
- metadata +30 -24
|
@@ -95,6 +95,9 @@ public protocol MatchfileProtocol: AnyObject {
|
|
|
95
95
|
/// GitLab Project Path (i.e. 'gitlab-org/gitlab')
|
|
96
96
|
var gitlabProject: String? { get }
|
|
97
97
|
|
|
98
|
+
/// GitLab Host (i.e. 'https://gitlab.com')
|
|
99
|
+
var gitlabHost: String { get }
|
|
100
|
+
|
|
98
101
|
/// Keychain the items should be imported to
|
|
99
102
|
var keychainName: String { get }
|
|
100
103
|
|
|
@@ -185,6 +188,7 @@ public extension MatchfileProtocol {
|
|
|
185
188
|
var s3Bucket: String? { return nil }
|
|
186
189
|
var s3ObjectPrefix: String? { return nil }
|
|
187
190
|
var gitlabProject: String? { return nil }
|
|
191
|
+
var gitlabHost: String { return "https://gitlab.com" }
|
|
188
192
|
var keychainName: String { return "login.keychain" }
|
|
189
193
|
var keychainPassword: String? { return nil }
|
|
190
194
|
var force: Bool { return false }
|
|
@@ -208,4 +212,4 @@ public extension MatchfileProtocol {
|
|
|
208
212
|
|
|
209
213
|
// Please don't remove the lines below
|
|
210
214
|
// They are used to detect outdated files
|
|
211
|
-
// FastlaneRunnerAPIVersion [0.9.
|
|
215
|
+
// FastlaneRunnerAPIVersion [0.9.113]
|
|
@@ -206,6 +206,9 @@ public protocol ScanfileProtocol: AnyObject {
|
|
|
206
206
|
/// Use only if you're a pro, use the other options instead
|
|
207
207
|
var destination: String? { get }
|
|
208
208
|
|
|
209
|
+
/// Adds arch=x86_64 to the xcodebuild 'destination' argument to run simulator in a Rosetta mode
|
|
210
|
+
var runRosettaSimulator: Bool { get }
|
|
211
|
+
|
|
209
212
|
/// Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
|
|
210
213
|
var catalystPlatform: String? { get }
|
|
211
214
|
|
|
@@ -303,6 +306,7 @@ public extension ScanfileProtocol {
|
|
|
303
306
|
var slackOnlyOnFailure: Bool { return false }
|
|
304
307
|
var slackDefaultPayloads: [String]? { return nil }
|
|
305
308
|
var destination: String? { return nil }
|
|
309
|
+
var runRosettaSimulator: Bool { return false }
|
|
306
310
|
var catalystPlatform: String? { return nil }
|
|
307
311
|
var customReportFileName: String? { return nil }
|
|
308
312
|
var xcodebuildCommand: String { return "env NSUnbufferedIO=YES xcodebuild" }
|
|
@@ -316,4 +320,4 @@ public extension ScanfileProtocol {
|
|
|
316
320
|
|
|
317
321
|
// Please don't remove the lines below
|
|
318
322
|
// They are used to detect outdated files
|
|
319
|
-
// FastlaneRunnerAPIVersion [0.9.
|
|
323
|
+
// FastlaneRunnerAPIVersion [0.9.124]
|
|
@@ -2,45 +2,45 @@
|
|
|
2
2
|
"entries": {
|
|
3
3
|
"brew": {
|
|
4
4
|
"swiftformat": {
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.51.9",
|
|
6
6
|
"bottle": {
|
|
7
7
|
"rebuild": 0,
|
|
8
8
|
"root_url": "https://ghcr.io/v2/homebrew/core",
|
|
9
9
|
"files": {
|
|
10
10
|
"arm64_ventura": {
|
|
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:bbb01c5c7fcde4f8b17945c2c8386b099848c9cd4fda8bcfd032c2420d5d1b65",
|
|
13
|
+
"sha256": "bbb01c5c7fcde4f8b17945c2c8386b099848c9cd4fda8bcfd032c2420d5d1b65"
|
|
14
14
|
},
|
|
15
15
|
"arm64_monterey": {
|
|
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:f04596d4567e86f46e0740ea3e9d1e2e19fa1cdf137a70287342b6ce937ddf8d",
|
|
18
|
+
"sha256": "f04596d4567e86f46e0740ea3e9d1e2e19fa1cdf137a70287342b6ce937ddf8d"
|
|
19
19
|
},
|
|
20
20
|
"arm64_big_sur": {
|
|
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:d8b6f0f30662dd4c2e1eb64d614fe2765ad664e2ac10a346004f94ed6ed6cdf2",
|
|
23
|
+
"sha256": "d8b6f0f30662dd4c2e1eb64d614fe2765ad664e2ac10a346004f94ed6ed6cdf2"
|
|
24
24
|
},
|
|
25
25
|
"ventura": {
|
|
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:dc2be8c829dc26595577f8b5daa071324f341c4f144cc46bf0a47520d44fc76e",
|
|
28
|
+
"sha256": "dc2be8c829dc26595577f8b5daa071324f341c4f144cc46bf0a47520d44fc76e"
|
|
29
29
|
},
|
|
30
30
|
"monterey": {
|
|
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:a88b992a2316fa06dd13944c6bb16d00522de0cc21aae17ede07e65d700c6800",
|
|
33
|
+
"sha256": "a88b992a2316fa06dd13944c6bb16d00522de0cc21aae17ede07e65d700c6800"
|
|
34
34
|
},
|
|
35
35
|
"big_sur": {
|
|
36
36
|
"cellar": ":any_skip_relocation",
|
|
37
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
|
38
|
-
"sha256": "
|
|
37
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:ba2cf56b5845bb33265a3e32737c5defa6e310987f785e1dfe6e7dc114a12555",
|
|
38
|
+
"sha256": "ba2cf56b5845bb33265a3e32737c5defa6e310987f785e1dfe6e7dc114a12555"
|
|
39
39
|
},
|
|
40
40
|
"x86_64_linux": {
|
|
41
41
|
"cellar": "/home/linuxbrew/.linuxbrew/Cellar",
|
|
42
|
-
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:
|
|
43
|
-
"sha256": "
|
|
42
|
+
"url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:d1f82ed96ee9f8f239e9396bff00a0feac937fe12840d05fb6d5c01fe9161f03",
|
|
43
|
+
"sha256": "d1f82ed96ee9f8f239e9396bff00a0feac937fe12840d05fb6d5c01fe9161f03"
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -74,12 +74,12 @@
|
|
|
74
74
|
"macOS": "12.5"
|
|
75
75
|
},
|
|
76
76
|
"ventura": {
|
|
77
|
-
"HOMEBREW_VERSION": "4.0.
|
|
77
|
+
"HOMEBREW_VERSION": "4.0.18-59-gf7b3225",
|
|
78
78
|
"HOMEBREW_PREFIX": "/opt/homebrew",
|
|
79
79
|
"Homebrew/homebrew-core": "api",
|
|
80
80
|
"CLT": "",
|
|
81
81
|
"Xcode": "14.1",
|
|
82
|
-
"macOS": "13.1"
|
|
82
|
+
"macOS": "13.2.1"
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
}
|
|
@@ -6,11 +6,6 @@ require_relative 'helper'
|
|
|
6
6
|
|
|
7
7
|
# WWDR Intermediate Certificates in https://www.apple.com/certificateauthority/
|
|
8
8
|
WWDRCA_CERTIFICATES = [
|
|
9
|
-
{
|
|
10
|
-
alias: 'G1',
|
|
11
|
-
sha256: 'ce057691d730f89ca25e916f7335f4c8a15713dcd273a658c024023f8eb809c2',
|
|
12
|
-
url: 'https://developer.apple.com/certificationauthority/AppleWWDRCA.cer'
|
|
13
|
-
},
|
|
14
9
|
{
|
|
15
10
|
alias: 'G2',
|
|
16
11
|
sha256: '9ed4b3b88c6a339cf1387895bda9ca6ea31a6b5ce9edf7511845923b0c8ac94c',
|
|
@@ -47,7 +47,7 @@ module FastlaneCore
|
|
|
47
47
|
not_implemented(__method__)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
def build_verify_command(username, password, source = "/tmp", provider_short_name = "",
|
|
50
|
+
def build_verify_command(username, password, source = "/tmp", provider_short_name = "", **kwargs)
|
|
51
51
|
not_implemented(__method__)
|
|
52
52
|
end
|
|
53
53
|
|
|
@@ -307,8 +307,22 @@ module FastlaneCore
|
|
|
307
307
|
raise "This feature has not been implemented yet with altool for Xcode 14"
|
|
308
308
|
end
|
|
309
309
|
|
|
310
|
-
def build_verify_command(username, password, source = "/tmp", provider_short_name = "",
|
|
311
|
-
|
|
310
|
+
def build_verify_command(username, password, source = "/tmp", provider_short_name = "", **kwargs)
|
|
311
|
+
api_key = kwargs[:api_key]
|
|
312
|
+
platform = kwargs[:platform]
|
|
313
|
+
use_api_key = !api_key.nil?
|
|
314
|
+
[
|
|
315
|
+
("API_PRIVATE_KEYS_DIR=#{api_key[:key_dir]}" if use_api_key),
|
|
316
|
+
"xcrun altool",
|
|
317
|
+
"--validate-app",
|
|
318
|
+
("-u #{username.shellescape}" unless use_api_key),
|
|
319
|
+
("-p #{password.shellescape}" unless use_api_key),
|
|
320
|
+
("--apiKey #{api_key[:key_id]}" if use_api_key),
|
|
321
|
+
("--apiIssuer #{api_key[:issuer_id]}" if use_api_key),
|
|
322
|
+
("--asc-provider #{provider_short_name}" unless use_api_key || provider_short_name.to_s.empty?),
|
|
323
|
+
platform_option(platform),
|
|
324
|
+
file_upload_option(source)
|
|
325
|
+
].compact.join(' ')
|
|
312
326
|
end
|
|
313
327
|
|
|
314
328
|
def additional_upload_parameters
|
|
@@ -409,7 +423,8 @@ module FastlaneCore
|
|
|
409
423
|
].compact.join(' ')
|
|
410
424
|
end
|
|
411
425
|
|
|
412
|
-
def build_verify_command(username, password, source = "/tmp", provider_short_name = "",
|
|
426
|
+
def build_verify_command(username, password, source = "/tmp", provider_short_name = "", **kwargs)
|
|
427
|
+
jwt = kwargs[:jwt]
|
|
413
428
|
use_jwt = !jwt.to_s.empty?
|
|
414
429
|
[
|
|
415
430
|
'"' + Helper.transporter_path + '"',
|
|
@@ -504,7 +519,8 @@ module FastlaneCore
|
|
|
504
519
|
end
|
|
505
520
|
end
|
|
506
521
|
|
|
507
|
-
def build_verify_command(username, password, source = "/tmp", provider_short_name = "",
|
|
522
|
+
def build_verify_command(username, password, source = "/tmp", provider_short_name = "", **kwargs)
|
|
523
|
+
jwt = kwargs[:jwt]
|
|
508
524
|
use_jwt = !jwt.to_s.empty?
|
|
509
525
|
if !Helper.user_defined_itms_path? && Helper.mac? && Helper.xcode_at_least?(11)
|
|
510
526
|
[
|
|
@@ -660,7 +676,7 @@ module FastlaneCore
|
|
|
660
676
|
# see: https://github.com/fastlane/fastlane/issues/1524#issuecomment-196370628
|
|
661
677
|
# for more information about how to use the iTMSTransporter to list your provider
|
|
662
678
|
# short names
|
|
663
|
-
def initialize(user = nil, password = nil, use_shell_script = false, provider_short_name = nil, jwt = nil,
|
|
679
|
+
def initialize(user = nil, password = nil, use_shell_script = false, provider_short_name = nil, jwt = nil, altool_compatible_command: false, api_key: nil)
|
|
664
680
|
# Xcode 6.x doesn't have the same iTMSTransporter Java setup as later Xcode versions, so
|
|
665
681
|
# we can't default to using the newer direct Java invocation strategy for those versions.
|
|
666
682
|
use_shell_script ||= Helper.is_mac? && Helper.xcode_version.start_with?('6.')
|
|
@@ -675,7 +691,7 @@ module FastlaneCore
|
|
|
675
691
|
@jwt = jwt
|
|
676
692
|
@api_key = api_key
|
|
677
693
|
|
|
678
|
-
if should_use_altool?(
|
|
694
|
+
if should_use_altool?(altool_compatible_command, use_shell_script)
|
|
679
695
|
UI.verbose("Using altool as transporter.")
|
|
680
696
|
@transporter_executor = AltoolTransporterExecutor.new
|
|
681
697
|
else
|
|
@@ -800,10 +816,20 @@ module FastlaneCore
|
|
|
800
816
|
# @return (Bool) True if everything worked fine
|
|
801
817
|
# @raise [Deliver::TransporterTransferError] when something went wrong
|
|
802
818
|
# when transferring
|
|
803
|
-
def verify(app_id = nil, dir = nil, package_path: nil)
|
|
804
|
-
raise "
|
|
819
|
+
def verify(app_id = nil, dir = nil, package_path: nil, asset_path: nil, platform: nil)
|
|
820
|
+
raise "app_id and dir are required or package_path or asset_path is required" if (app_id.nil? || dir.nil?) && package_path.nil? && asset_path.nil?
|
|
821
|
+
|
|
822
|
+
force_itmsp = FastlaneCore::Env.truthy?("ITMSTRANSPORTER_FORCE_ITMS_PACKAGE_UPLOAD")
|
|
823
|
+
can_use_asset_path = Helper.is_mac? && asset_path
|
|
805
824
|
|
|
806
|
-
actual_dir = if
|
|
825
|
+
actual_dir = if can_use_asset_path && !force_itmsp
|
|
826
|
+
# The asset gets deleted upon completion so copying to a temp directory
|
|
827
|
+
# (with randomized filename, for multibyte-mixed filename upload fails)
|
|
828
|
+
new_file_name = "#{SecureRandom.uuid}#{File.extname(asset_path)}"
|
|
829
|
+
tmp_asset_path = File.join(Dir.tmpdir, new_file_name)
|
|
830
|
+
FileUtils.cp(asset_path, tmp_asset_path)
|
|
831
|
+
tmp_asset_path
|
|
832
|
+
elsif package_path
|
|
807
833
|
package_path
|
|
808
834
|
else
|
|
809
835
|
File.join(dir, "#{app_id}.itmsp")
|
|
@@ -812,8 +838,16 @@ module FastlaneCore
|
|
|
812
838
|
password_placeholder = @jwt.nil? ? 'YourPassword' : nil
|
|
813
839
|
jwt_placeholder = @jwt.nil? ? nil : 'YourJWT'
|
|
814
840
|
|
|
815
|
-
|
|
816
|
-
|
|
841
|
+
# Handle AppStore Connect API
|
|
842
|
+
use_api_key = !@api_key.nil?
|
|
843
|
+
|
|
844
|
+
# Masking credentials for verbose outputs
|
|
845
|
+
api_key_placeholder = use_api_key ? { key_id: "YourKeyID", issuer_id: "YourIssuerID", key_dir: "YourTmpP8KeyDir" } : nil
|
|
846
|
+
|
|
847
|
+
api_key = api_key_with_p8_file_path(@api_key) if use_api_key
|
|
848
|
+
|
|
849
|
+
command = @transporter_executor.build_verify_command(@user, @password, actual_dir, @provider_short_name, jwt: @jwt, platform: platform, api_key: api_key)
|
|
850
|
+
UI.verbose(@transporter_executor.build_verify_command(@user, password_placeholder, actual_dir, @provider_short_name, jwt: jwt_placeholder, platform: platform, api_key: api_key_placeholder))
|
|
817
851
|
|
|
818
852
|
begin
|
|
819
853
|
result = @transporter_executor.execute(command, ItunesTransporter.hide_transporter_output?)
|
|
@@ -883,9 +917,9 @@ module FastlaneCore
|
|
|
883
917
|
end
|
|
884
918
|
|
|
885
919
|
# Returns whether altool should be used or ItunesTransporter should be used
|
|
886
|
-
def should_use_altool?(
|
|
920
|
+
def should_use_altool?(altool_compatible_command, use_shell_script)
|
|
887
921
|
# Xcode 14 no longer supports iTMSTransporter. Use altool instead
|
|
888
|
-
!use_shell_script &&
|
|
922
|
+
!use_shell_script && altool_compatible_command && !Helper.user_defined_itms_path? && Helper.mac? && Helper.xcode_at_least?(14)
|
|
889
923
|
end
|
|
890
924
|
|
|
891
925
|
# Returns the password to be used with the transporter
|
data/match/lib/match/importer.rb
CHANGED
|
@@ -38,6 +38,7 @@ module Match
|
|
|
38
38
|
s3_secret_access_key: params[:s3_secret_access_key],
|
|
39
39
|
s3_object_prefix: params[:s3_object_prefix],
|
|
40
40
|
gitlab_project: params[:gitlab_project],
|
|
41
|
+
gitlab_host: params[:gitlab_host],
|
|
41
42
|
readonly: params[:readonly],
|
|
42
43
|
username: params[:username],
|
|
43
44
|
team_id: params[:team_id],
|
data/match/lib/match/nuke.rb
CHANGED
|
@@ -56,6 +56,7 @@ module Match
|
|
|
56
56
|
s3_bucket: params[:s3_bucket].to_s,
|
|
57
57
|
s3_object_prefix: params[:s3_object_prefix].to_s,
|
|
58
58
|
gitlab_project: params[:gitlab_project],
|
|
59
|
+
gitlab_host: params[:gitlab_host],
|
|
59
60
|
team_id: params[:team_id] || Spaceship::ConnectAPI.client.portal_team_id
|
|
60
61
|
})
|
|
61
62
|
self.storage.download
|
data/match/lib/match/options.rb
CHANGED
|
@@ -228,6 +228,11 @@ module Match
|
|
|
228
228
|
env_name: "MATCH_GITLAB_PROJECT",
|
|
229
229
|
description: "GitLab Project Path (i.e. 'gitlab-org/gitlab')",
|
|
230
230
|
optional: true),
|
|
231
|
+
FastlaneCore::ConfigItem.new(key: :gitlab_host,
|
|
232
|
+
env_name: "MATCH_GITLAB_HOST",
|
|
233
|
+
default_value: 'https://gitlab.com',
|
|
234
|
+
description: "GitLab Host (i.e. 'https://gitlab.com')",
|
|
235
|
+
optional: true),
|
|
231
236
|
|
|
232
237
|
# Keychain
|
|
233
238
|
FastlaneCore::ConfigItem.new(key: :keychain_name,
|
data/match/lib/match/runner.rb
CHANGED
|
@@ -55,6 +55,7 @@ module Match
|
|
|
55
55
|
s3_bucket: params[:s3_bucket],
|
|
56
56
|
s3_object_prefix: params[:s3_object_prefix],
|
|
57
57
|
gitlab_project: params[:gitlab_project],
|
|
58
|
+
gitlab_host: params[:gitlab_host],
|
|
58
59
|
readonly: params[:readonly],
|
|
59
60
|
username: params[:readonly] ? nil : params[:username], # only pass username if not readonly
|
|
60
61
|
team_id: params[:team_id],
|
|
@@ -22,9 +22,10 @@ module Match
|
|
|
22
22
|
attr_reader :team_name
|
|
23
23
|
attr_reader :api_key_path
|
|
24
24
|
attr_reader :api_key
|
|
25
|
+
attr_reader :api_v4_url
|
|
25
26
|
|
|
26
27
|
def self.configure(params)
|
|
27
|
-
api_v4_url =
|
|
28
|
+
api_v4_url = ENV['CI_API_V4_URL'] || "#{params[:gitlab_host]}/api/v4"
|
|
28
29
|
project_id = params[:gitlab_project] || ENV['GITLAB_PROJECT'] || ENV['CI_PROJECT_ID']
|
|
29
30
|
job_token = params[:job_token] || ENV['CI_JOB_TOKEN']
|
|
30
31
|
private_token = params[:private_token] || ENV['PRIVATE_TOKEN']
|
|
@@ -72,9 +73,9 @@ module Match
|
|
|
72
73
|
@private_token = private_token
|
|
73
74
|
@api_v4_url = api_v4_url
|
|
74
75
|
@project_id = project_id
|
|
75
|
-
@gitlab_client = GitLab::Client.new(job_token: job_token, private_token: private_token, project_id: project_id, api_v4_url: api_v4_url)
|
|
76
|
+
@gitlab_client = GitLab::Client.new(job_token: @job_token, private_token: @private_token, project_id: @project_id, api_v4_url: @api_v4_url)
|
|
76
77
|
|
|
77
|
-
UI.message("Initializing match for GitLab project #{@project_id}")
|
|
78
|
+
UI.message("Initializing match for GitLab project #{@project_id} on #{@gitlab_host}")
|
|
78
79
|
end
|
|
79
80
|
|
|
80
81
|
# To make debugging easier, we have a custom exception here
|
|
@@ -174,8 +175,13 @@ module Match
|
|
|
174
175
|
# that should be generated
|
|
175
176
|
def generate_matchfile_content(template: nil)
|
|
176
177
|
project = UI.input("What is your GitLab Project (i.e. gitlab-org/gitlab): ")
|
|
178
|
+
host = UI.input("What is your GitLab Host (i.e. https://gitlab.example.com, skip to default to https://gitlab.com): ")
|
|
177
179
|
|
|
178
|
-
|
|
180
|
+
content = "gitlab_project(\"#{project}\")"
|
|
181
|
+
|
|
182
|
+
content += "\ngitlab_host(\"#{host}\")" if host
|
|
183
|
+
|
|
184
|
+
return content
|
|
179
185
|
end
|
|
180
186
|
end
|
|
181
187
|
end
|
|
@@ -157,7 +157,7 @@ module Pilot
|
|
|
157
157
|
end
|
|
158
158
|
end
|
|
159
159
|
platform = Spaceship::ConnectAPI::Platform.map(fetch_app_platform)
|
|
160
|
-
build ||= Spaceship::ConnectAPI::Build.all(app_id: app.id, version: app_version, build_number: build_number, sort: "-uploadedDate", platform: platform, limit:
|
|
160
|
+
build ||= Spaceship::ConnectAPI::Build.all(app_id: app.id, version: app_version, build_number: build_number, sort: "-uploadedDate", platform: platform, limit: Spaceship::ConnectAPI::Platform::ALL.size).first
|
|
161
161
|
end
|
|
162
162
|
|
|
163
163
|
# Verify the build has all the includes that we need
|
|
@@ -401,13 +401,13 @@ module Pilot
|
|
|
401
401
|
|
|
402
402
|
unless api_token.nil?
|
|
403
403
|
api_token.refresh! if api_token.expired?
|
|
404
|
-
return FastlaneCore::ItunesTransporter.new(nil, nil, false, nil, api_token.text,
|
|
404
|
+
return FastlaneCore::ItunesTransporter.new(nil, nil, false, nil, api_token.text, altool_compatible_command: true, api_key: api_key)
|
|
405
405
|
end
|
|
406
406
|
|
|
407
407
|
# Otherwise use username and password
|
|
408
408
|
tunes_client = Spaceship::ConnectAPI.client ? Spaceship::ConnectAPI.client.tunes_client : nil
|
|
409
409
|
|
|
410
|
-
generic_transporter = FastlaneCore::ItunesTransporter.new(options[:username], nil, false, options[:itc_provider],
|
|
410
|
+
generic_transporter = FastlaneCore::ItunesTransporter.new(options[:username], nil, false, options[:itc_provider], altool_compatible_command: true, api_key: api_key)
|
|
411
411
|
return generic_transporter if options[:itc_provider] || tunes_client.nil?
|
|
412
412
|
return generic_transporter unless tunes_client.teams.count > 1
|
|
413
413
|
|
|
@@ -416,7 +416,7 @@ module Pilot
|
|
|
416
416
|
name = team['name']
|
|
417
417
|
provider_id = generic_transporter.provider_ids[name]
|
|
418
418
|
UI.verbose("Inferred provider id #{provider_id} for team #{name}.")
|
|
419
|
-
return FastlaneCore::ItunesTransporter.new(options[:username], nil, false, provider_id,
|
|
419
|
+
return FastlaneCore::ItunesTransporter.new(options[:username], nil, false, provider_id, altool_compatible_command: true, api_key: api_key)
|
|
420
420
|
rescue => ex
|
|
421
421
|
STDERR.puts(ex.to_s)
|
|
422
422
|
UI.verbose("Couldn't infer a provider short name for team with id #{tunes_client.team_id} automatically: #{ex}. Proceeding without provider short name.")
|
|
@@ -226,7 +226,14 @@ module Scan
|
|
|
226
226
|
if Scan.building_mac_catalyst_for_mac?
|
|
227
227
|
Scan.config[:destination] = ["platform=macOS,variant=Mac Catalyst"]
|
|
228
228
|
elsif Scan.devices && Scan.devices.count > 0
|
|
229
|
-
|
|
229
|
+
# Explicitly run simulator in Rosetta (needed for Xcode 14.3 and up)
|
|
230
|
+
# Fixes https://github.com/fastlane/fastlane/issues/21194
|
|
231
|
+
arch = ""
|
|
232
|
+
if Scan.config[:run_rosetta_simulator]
|
|
233
|
+
arch = ",arch=x86_64"
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
Scan.config[:destination] = Scan.devices.map { |d| "platform=#{d.os_type} Simulator,id=#{d.udid}" + arch }
|
|
230
237
|
elsif Scan.project && Scan.project.mac_app?
|
|
231
238
|
Scan.config[:destination] = min_xcode8? ? ["platform=macOS"] : ["platform=OS X"]
|
|
232
239
|
end
|
data/scan/lib/scan/options.rb
CHANGED
|
@@ -480,6 +480,11 @@ module Scan
|
|
|
480
480
|
description: "Use only if you're a pro, use the other options instead",
|
|
481
481
|
is_string: false,
|
|
482
482
|
optional: true),
|
|
483
|
+
FastlaneCore::ConfigItem.new(key: :run_rosetta_simulator,
|
|
484
|
+
env_name: "SCAN_RUN_ROSETTA_SIMULATOR",
|
|
485
|
+
description: "Adds arch=x86_64 to the xcodebuild 'destination' argument to run simulator in a Rosetta mode",
|
|
486
|
+
type: Boolean,
|
|
487
|
+
default_value: false),
|
|
483
488
|
FastlaneCore::ConfigItem.new(key: :catalyst_platform,
|
|
484
489
|
env_name: "SCAN_CATALYST_PLATFORM",
|
|
485
490
|
description: "Platform to build when using a Catalyst enabled app. Valid values are: ios, macos",
|
|
@@ -16,12 +16,9 @@ module Snapshot
|
|
|
16
16
|
def self.version_for_os(os)
|
|
17
17
|
# We do all this, because we would get all kind of crap output generated by xcodebuild
|
|
18
18
|
# so we need to ignore stderror
|
|
19
|
-
|
|
20
|
-
Open3.popen3('xcodebuild -version -sdk') do |stdin, stdout, stderr, wait_thr|
|
|
21
|
-
output = stdout.read
|
|
22
|
-
end
|
|
19
|
+
stdout, _stderr, _status = Open3.capture3('xcodebuild -version -sdk')
|
|
23
20
|
|
|
24
|
-
matched =
|
|
21
|
+
matched = stdout.match(/#{os} ([\d\.]+) \(.*/)
|
|
25
22
|
if matched.nil?
|
|
26
23
|
FastlaneCore::UI.user_error!("Could not determine installed #{os} SDK version. Try running the _xcodebuild_ command manually to ensure it works.")
|
|
27
24
|
elsif matched.length > 1
|
|
@@ -54,12 +54,12 @@ module Spaceship
|
|
|
54
54
|
"contentRightsDeclaration" => "content_rights_declaration",
|
|
55
55
|
|
|
56
56
|
"appStoreVersions" => "app_store_versions",
|
|
57
|
+
# This attribute is already deprecated. It will be removed in a future release.
|
|
57
58
|
"prices" => "prices"
|
|
58
59
|
})
|
|
59
60
|
|
|
60
61
|
ESSENTIAL_INCLUDES = [
|
|
61
|
-
"appStoreVersions"
|
|
62
|
-
"prices"
|
|
62
|
+
"appStoreVersions"
|
|
63
63
|
].join(",")
|
|
64
64
|
|
|
65
65
|
def self.type
|
|
@@ -272,7 +272,7 @@ module Spaceship
|
|
|
272
272
|
# if it needs to
|
|
273
273
|
#
|
|
274
274
|
# https://github.com/fastlane/fastlane/pull/20480
|
|
275
|
-
r = request(:get, "https://appstoreconnect.apple.com/iris/v1/apps?include=appStoreVersions
|
|
275
|
+
r = request(:get, "https://appstoreconnect.apple.com/iris/v1/apps?include=appStoreVersions")
|
|
276
276
|
response = Spaceship::ConnectAPI::Response.new(
|
|
277
277
|
body: r.body,
|
|
278
278
|
status: r.status,
|
metadata
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fastlane
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.213.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
-
|
|
8
|
-
-
|
|
7
|
+
- Danielle Tomlinson
|
|
8
|
+
- Josh Holtz
|
|
9
|
+
- Olivier Halligon
|
|
10
|
+
- Satoshi Namai
|
|
9
11
|
- Helmut Januschka
|
|
10
|
-
-
|
|
12
|
+
- Max Ott
|
|
13
|
+
- Felix Krause
|
|
14
|
+
- Daniel Jankowski
|
|
11
15
|
- Joshua Liebowitz
|
|
12
|
-
- Kohki Miki
|
|
13
|
-
- Jimmy Dee
|
|
14
|
-
- Jorge Revuelta H
|
|
15
|
-
- Andrew McBurney
|
|
16
|
-
- Satoshi Namai
|
|
17
|
-
- Josh Holtz
|
|
18
16
|
- Fumiya Nakamura
|
|
19
|
-
- Danielle Tomlinson
|
|
20
|
-
- Łukasz Grabowski
|
|
21
|
-
- Luka Mirosevic
|
|
22
|
-
- Felix Krause
|
|
23
|
-
- Jérôme Lacoste
|
|
24
|
-
- Max Ott
|
|
25
|
-
- Manu Wallner
|
|
26
17
|
- Aaron Brager
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
- Olivier Halligon
|
|
30
|
-
- Iulian Onofrei
|
|
18
|
+
- Kohki Miki
|
|
19
|
+
- Luka Mirosevic
|
|
31
20
|
- Matthew Ellis
|
|
21
|
+
- Roger Oba
|
|
22
|
+
- Stefan Natchev
|
|
23
|
+
- Iulian Onofrei
|
|
24
|
+
- Maksym Grebenets
|
|
32
25
|
- Jan Piotrowski
|
|
26
|
+
- Jérôme Lacoste
|
|
27
|
+
- Manish Rathi
|
|
28
|
+
- Łukasz Grabowski
|
|
29
|
+
- Manu Wallner
|
|
30
|
+
- Andrew McBurney
|
|
31
|
+
- Jimmy Dee
|
|
32
|
+
- Jorge Revuelta H
|
|
33
33
|
autorequire:
|
|
34
34
|
bindir: bin
|
|
35
35
|
cert_chain: []
|
|
36
|
-
date: 2023-
|
|
36
|
+
date: 2023-05-24 00:00:00.000000000 Z
|
|
37
37
|
dependencies:
|
|
38
38
|
- !ruby/object:Gem::Dependency
|
|
39
39
|
name: xcodeproj
|
|
@@ -173,16 +173,22 @@ dependencies:
|
|
|
173
173
|
name: multipart-post
|
|
174
174
|
requirement: !ruby/object:Gem::Requirement
|
|
175
175
|
requirements:
|
|
176
|
-
- - "
|
|
176
|
+
- - ">="
|
|
177
177
|
- !ruby/object:Gem::Version
|
|
178
178
|
version: 2.0.0
|
|
179
|
+
- - "<"
|
|
180
|
+
- !ruby/object:Gem::Version
|
|
181
|
+
version: 3.0.0
|
|
179
182
|
type: :runtime
|
|
180
183
|
prerelease: false
|
|
181
184
|
version_requirements: !ruby/object:Gem::Requirement
|
|
182
185
|
requirements:
|
|
183
|
-
- - "
|
|
186
|
+
- - ">="
|
|
184
187
|
- !ruby/object:Gem::Version
|
|
185
188
|
version: 2.0.0
|
|
189
|
+
- - "<"
|
|
190
|
+
- !ruby/object:Gem::Version
|
|
191
|
+
version: 3.0.0
|
|
186
192
|
- !ruby/object:Gem::Dependency
|
|
187
193
|
name: word_wrap
|
|
188
194
|
requirement: !ruby/object:Gem::Requirement
|