fastlane 2.213.0 → 2.215.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 +94 -94
- data/deliver/lib/deliver/app_screenshot.rb +13 -10
- data/deliver/lib/deliver/submit_for_review.rb +13 -0
- data/deliver/lib/deliver/upload_price_tier.rb +1 -1
- data/fastlane/lib/assets/custom_action_template.rb +18 -12
- data/fastlane/lib/fastlane/actions/docs/build_app.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +8 -8
- data/fastlane/lib/fastlane/actions/docs/check_app_store_metadata.md +3 -3
- data/fastlane/lib/fastlane/actions/docs/get_push_certificate.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +6 -4
- data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +1 -1
- data/fastlane/lib/fastlane/actions/download_universal_apk_from_google_play.rb +124 -0
- data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +4 -0
- data/fastlane/lib/fastlane/helper/xcodes_helper.rb +0 -3
- data/fastlane/lib/fastlane/new_action.rb +1 -1
- data/fastlane/lib/fastlane/plugins/plugin_info_collector.rb +3 -3
- data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -2
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
- data/fastlane/lib/fastlane/plugins/template/lib/fastlane/plugin/%plugin_name%/helper/%plugin_name%_helper.rb.erb +1 -1
- data/fastlane/lib/fastlane/version.rb +2 -2
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastlane.swift +79 -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 +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/formatting/Brewfile.lock.json +28 -18
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +1 -1
- data/frameit/lib/frameit/device_types.rb +1 -1
- data/gym/lib/gym/generators/build_command_generator.rb +1 -1
- data/match/lib/match/change_password.rb +3 -9
- data/match/lib/match/commands_generator.rb +3 -6
- data/match/lib/match/encryption.rb +1 -1
- data/match/lib/match/importer.rb +3 -31
- data/match/lib/match/migrate.rb +6 -2
- data/match/lib/match/nuke.rb +3 -25
- data/match/lib/match/options.rb +7 -0
- data/match/lib/match/runner.rb +5 -32
- data/match/lib/match/setup.rb +1 -1
- data/match/lib/match/storage/gitlab/client.rb +40 -14
- data/match/lib/match/storage/gitlab_secure_files.rb +7 -2
- data/match/lib/match/storage/s3_storage.rb +6 -0
- data/match/lib/match/storage.rb +56 -5
- data/scan/lib/scan/test_command_generator.rb +1 -1
- data/snapshot/lib/snapshot/test_command_generator.rb +1 -1
- data/spaceship/lib/spaceship/client.rb +0 -1
- data/spaceship/lib/spaceship/connect_api/api_client.rb +19 -1
- data/spaceship/lib/spaceship/connect_api/models/app.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +15 -9
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +3 -1
- data/spaceship/lib/spaceship/connect_api/models/user.rb +38 -0
- data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +5 -15
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +8 -2
- data/spaceship/lib/spaceship/connect_api/users/users.rb +34 -0
- data/supply/lib/supply/client.rb +72 -20
- data/supply/lib/supply/generated_universal_apk.rb +24 -0
- data/supply/lib/supply/image_listing.rb +15 -0
- data/supply/lib/supply/options.rb +5 -0
- data/supply/lib/supply/setup.rb +1 -1
- data/supply/lib/supply/uploader.rb +32 -5
- data/supply/lib/supply.rb +2 -0
- metadata +285 -274
@@ -0,0 +1,124 @@
|
|
1
|
+
require 'supply'
|
2
|
+
require 'supply/options'
|
3
|
+
|
4
|
+
module Fastlane
|
5
|
+
module Actions
|
6
|
+
class DownloadUniversalApkFromGooglePlayAction < Action
|
7
|
+
def self.run(params)
|
8
|
+
package_name = params[:package_name]
|
9
|
+
version_code = params[:version_code]
|
10
|
+
destination = params[:destination]
|
11
|
+
cert_sha = params[:certificate_sha256_hash]
|
12
|
+
|
13
|
+
client = Supply::Client.make_from_config(params: params)
|
14
|
+
|
15
|
+
UI.message("Fetching the list of generated APKs from the Google API...")
|
16
|
+
all_universal_apks = client.list_generated_universal_apks(package_name: package_name, version_code: version_code)
|
17
|
+
matching_apks = all_universal_apks.select { |apk| cert_sha.nil? || apk.certificate_sha256_hash&.casecmp?(cert_sha) }
|
18
|
+
|
19
|
+
all_certs_printable_list = all_universal_apks.map { |apk| " - #{apk.certificate_sha256_hash}" }
|
20
|
+
if matching_apks.count > 1
|
21
|
+
message = <<~ERROR
|
22
|
+
We found multiple Generated Universal APK, with the following `certificate_sha256_hash`:
|
23
|
+
#{all_certs_printable_list.join("\n")}
|
24
|
+
|
25
|
+
Use the `certificate_sha256_hash` parameter to specify which one to download.
|
26
|
+
ERROR
|
27
|
+
UI.user_error!(message)
|
28
|
+
elsif matching_apks.empty?
|
29
|
+
# NOTE: if no APK was found at all to begin with, the client would already have raised a user_error!('Google Api Error ...')
|
30
|
+
message = <<~ERROR
|
31
|
+
None of the Universal APK(s) found for this version code matched the `certificate_sha256_hash` of `#{cert_sha}`.
|
32
|
+
|
33
|
+
We found #{all_universal_apks.count} Generated Universal APK(s), but with a different `certificate_sha256_hash`:
|
34
|
+
#{all_certs_printable_list.join("\n")}
|
35
|
+
ERROR
|
36
|
+
UI.user_error!(message)
|
37
|
+
end
|
38
|
+
|
39
|
+
UI.message("Downloading Generated Universal APK to `#{destination}`...")
|
40
|
+
FileUtils.mkdir_p(File.dirname(destination))
|
41
|
+
client.download_generated_universal_apk(generated_universal_apk: matching_apks.first, destination: destination)
|
42
|
+
|
43
|
+
UI.success("Universal APK successfully downloaded to `#{destination}`.")
|
44
|
+
destination
|
45
|
+
end
|
46
|
+
|
47
|
+
#####################################################
|
48
|
+
# @!group Documentation
|
49
|
+
#####################################################
|
50
|
+
|
51
|
+
def self.description
|
52
|
+
"Download the Universal APK of a given version code from the Google Play Console"
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.details
|
56
|
+
<<~DETAILS
|
57
|
+
Download the universal APK of a given version code from the Google Play Console.
|
58
|
+
|
59
|
+
This uses _fastlane_ `supply` (and the `AndroidPublisher` Google API) to download the Universal APK
|
60
|
+
generated by Google after you uploaded an `.aab` bundle to the Play Console.
|
61
|
+
|
62
|
+
See https://developers.google.com/android-publisher/api-ref/rest/v3/generatedapks/list
|
63
|
+
DETAILS
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.available_options
|
67
|
+
# Only borrow _some_ of the ConfigItems from https://github.com/fastlane/fastlane/blob/master/supply/lib/supply/options.rb
|
68
|
+
# So we don't have to duplicate the name, env_var, type, description, and verify_block of those here.
|
69
|
+
supply_borrowed_options = Supply::Options.available_options.select do |o|
|
70
|
+
%i[package_name version_code json_key json_key_data root_url timeout].include?(o.key)
|
71
|
+
end
|
72
|
+
# Adjust the description for the :version_code ConfigItem for our action's use case
|
73
|
+
supply_borrowed_options.find { |o| o.key == :version_code }&.description = "The versionCode for which to download the generated APK"
|
74
|
+
|
75
|
+
[
|
76
|
+
*supply_borrowed_options,
|
77
|
+
|
78
|
+
# The remaining ConfigItems below are specific to this action
|
79
|
+
FastlaneCore::ConfigItem.new(key: :destination,
|
80
|
+
env_name: 'DOWNLOAD_UNIVERSAL_APK_DESTINATION',
|
81
|
+
optional: false,
|
82
|
+
type: String,
|
83
|
+
description: "The path on disk where to download the Generated Universal APK",
|
84
|
+
verify_block: proc do |value|
|
85
|
+
UI.user_error!("The 'destination' must be a file path with the `.apk` file extension") unless File.extname(value) == '.apk'
|
86
|
+
end),
|
87
|
+
FastlaneCore::ConfigItem.new(key: :certificate_sha256_hash,
|
88
|
+
env_name: 'DOWNLOAD_UNIVERSAL_APK_CERTIFICATE_SHA256_HASH',
|
89
|
+
optional: true,
|
90
|
+
type: String,
|
91
|
+
description: "The SHA256 hash of the signing key for which to download the Universal, Code-Signed APK for. " \
|
92
|
+
+ "Use 'xx:xx:xx:…' format (32 hex bytes separated by colons), as printed by `keytool -list -keystore <keystorefile>`. " \
|
93
|
+
+ "Only useful to provide if you have multiple signing keys configured on GPC, to specify which generated APK to download",
|
94
|
+
verify_block: proc do |value|
|
95
|
+
bytes = value.split(':')
|
96
|
+
next if bytes.length == 32 && bytes.all? { |byte| /^[0-9a-fA-F]{2}$/.match?(byte) }
|
97
|
+
|
98
|
+
UI.user_error!("When provided, the certificate sha256 must be in the 'xx:xx:xx:…:xx' (32 hex bytes separated by colons) format")
|
99
|
+
end)
|
100
|
+
]
|
101
|
+
end
|
102
|
+
|
103
|
+
def self.output
|
104
|
+
# Define the shared values you are going to provide
|
105
|
+
end
|
106
|
+
|
107
|
+
def self.return_value
|
108
|
+
'The path to the downloaded Universal APK. The action will raise an exception if it failed to find or download the APK in Google Play'
|
109
|
+
end
|
110
|
+
|
111
|
+
def self.authors
|
112
|
+
['Automattic']
|
113
|
+
end
|
114
|
+
|
115
|
+
def self.category
|
116
|
+
:production
|
117
|
+
end
|
118
|
+
|
119
|
+
def self.is_supported?(platform)
|
120
|
+
platform == :android
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -119,6 +119,10 @@ module Fastlane
|
|
119
119
|
def self.is_supported?(platform)
|
120
120
|
[:ios, :mac].include?(platform)
|
121
121
|
end
|
122
|
+
|
123
|
+
def self.deprecated_notes
|
124
|
+
"The xcode-install gem, which this action depends on, has been sunset. Please migrate to [xcodes](https://docs.fastlane.tools/actions/xcodes). You can find a migration guide here: [xcpretty/xcode-install/MIGRATION.md](https://github.com/xcpretty/xcode-install/blob/master/MIGRATION.md)"
|
125
|
+
end
|
122
126
|
end
|
123
127
|
end
|
124
128
|
end
|
@@ -18,9 +18,6 @@ module Fastlane
|
|
18
18
|
module Verify
|
19
19
|
def self.requirement(req)
|
20
20
|
UI.user_error!("Version must be specified") if req.nil? || req.to_s.strip.size == 0
|
21
|
-
Gem::Requirement.new(req.to_s)
|
22
|
-
rescue Gem::Requirement::BadRequirementError
|
23
|
-
UI.user_error!("The requirement '#{req}' is not a valid RubyGems style requirement")
|
24
21
|
end
|
25
22
|
end
|
26
23
|
end
|
@@ -7,7 +7,7 @@ module Fastlane
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.fetch_name
|
10
|
-
puts("Must be
|
10
|
+
puts("Must be lowercase, and use a '_' between words. Do not use '.'".green)
|
11
11
|
puts("examples: 'testflight', 'upload_to_s3'".green)
|
12
12
|
name = UI.input("Name of your action: ")
|
13
13
|
until name_valid?(name)
|
@@ -45,7 +45,7 @@ module Fastlane
|
|
45
45
|
@ui.message("\nThe gem name '#{gem_name}' is already taken on RubyGems, please choose a different plugin name.")
|
46
46
|
else
|
47
47
|
# That's a naming error
|
48
|
-
@ui.message("\nPlugin names can only contain
|
48
|
+
@ui.message("\nPlugin names can only contain lowercase letters, numbers, and underscores")
|
49
49
|
@ui.message("and should not contain 'fastlane' or 'plugin'.")
|
50
50
|
end
|
51
51
|
end
|
@@ -54,7 +54,7 @@ module Fastlane
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def plugin_name_valid?(name)
|
57
|
-
# Only
|
57
|
+
# Only lowercase letters, numbers and underscores allowed
|
58
58
|
/^[a-z0-9_]+$/ =~ name &&
|
59
59
|
# Does not contain the words 'fastlane' or 'plugin' since those will become
|
60
60
|
# part of the gem name
|
@@ -79,7 +79,7 @@ module Fastlane
|
|
79
79
|
name = name.to_s.downcase
|
80
80
|
fixes = {
|
81
81
|
/[\- ]/ => '_', # dashes and spaces become underscores
|
82
|
-
/[^a-z0-9_]/ => '', # anything other than
|
82
|
+
/[^a-z0-9_]/ => '', # anything other than lowercase letters, numbers and underscores is removed
|
83
83
|
/fastlane[_]?/ => '', # 'fastlane' or 'fastlane_' is removed
|
84
84
|
/plugin[_]?/ => '' # 'plugin' or 'plugin_' is removed
|
85
85
|
}
|
@@ -13,9 +13,8 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.license = "MIT"
|
14
14
|
|
15
15
|
spec.files = Dir["lib/**/*"] + %w(README.md LICENSE)
|
16
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
16
|
spec.require_paths = ['lib']
|
18
|
-
|
17
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
19
18
|
spec.required_ruby_version = '>= 2.6'
|
20
19
|
|
21
20
|
# Don't add a dependency to fastlane or fastlane_re
|
@@ -124,6 +124,8 @@ Style/GuardClause:
|
|
124
124
|
Enabled: false
|
125
125
|
Style/StringLiterals:
|
126
126
|
Enabled: false
|
127
|
+
Style/QuotedSymbols:
|
128
|
+
Enabled: false
|
127
129
|
Style/ConditionalAssignment:
|
128
130
|
Enabled: false
|
129
131
|
Style/RedundantSelf:
|
@@ -164,7 +166,7 @@ Style/CollectionMethods:
|
|
164
166
|
Enabled: false
|
165
167
|
Style/MethodCallWithArgsParentheses:
|
166
168
|
Enabled: true
|
167
|
-
|
169
|
+
AllowedMethods:
|
168
170
|
- require
|
169
171
|
- require_relative
|
170
172
|
- fastlane_require
|
@@ -186,3 +188,5 @@ Style/MethodCallWithArgsParentheses:
|
|
186
188
|
- context
|
187
189
|
- before
|
188
190
|
- after
|
191
|
+
Gemspec/DevelopmentDependencies:
|
192
|
+
Enabled: false
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.
|
2
|
+
VERSION = '2.215.0'.freeze
|
3
3
|
DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
|
4
4
|
MINIMUM_XCODE_RELEASE = "7.0".freeze
|
5
|
-
RUBOCOP_REQUIREMENT = '1.
|
5
|
+
RUBOCOP_REQUIREMENT = '1.50.2'.freeze
|
6
6
|
end
|
@@ -4204,6 +4204,61 @@ public func downloadFromPlayStore(packageName: String,
|
|
4204
4204
|
_ = runner.executeCommand(command)
|
4205
4205
|
}
|
4206
4206
|
|
4207
|
+
/**
|
4208
|
+
Download the Universal APK of a given version code from the Google Play Console
|
4209
|
+
|
4210
|
+
- parameters:
|
4211
|
+
- packageName: The package name of the application to use
|
4212
|
+
- versionCode: The versionCode for which to download the generated APK
|
4213
|
+
- jsonKey: The path to a file containing service account JSON, used to authenticate with Google
|
4214
|
+
- jsonKeyData: The raw service account JSON data used to authenticate with Google
|
4215
|
+
- rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
|
4216
|
+
- timeout: Timeout for read, open, and send (in seconds)
|
4217
|
+
- destination: The path on disk where to download the Generated Universal APK
|
4218
|
+
- certificateSha256Hash: The SHA256 hash of the signing key for which to download the Universal, Code-Signed APK for. Use 'xx:xx:xx:…' format (32 hex bytes separated by colons), as printed by `keytool -list -keystore <keystorefile>`. Only useful to provide if you have multiple signing keys configured on GPC, to specify which generated APK to download
|
4219
|
+
|
4220
|
+
- returns: The path to the downloaded Universal APK. The action will raise an exception if it failed to find or download the APK in Google Play
|
4221
|
+
|
4222
|
+
Download the universal APK of a given version code from the Google Play Console.
|
4223
|
+
|
4224
|
+
This uses _fastlane_ `supply` (and the `AndroidPublisher` Google API) to download the Universal APK
|
4225
|
+
generated by Google after you uploaded an `.aab` bundle to the Play Console.
|
4226
|
+
|
4227
|
+
See https://developers.google.com/android-publisher/api-ref/rest/v3/generatedapks/list
|
4228
|
+
|
4229
|
+
*/
|
4230
|
+
public func downloadUniversalApkFromGooglePlay(packageName: String,
|
4231
|
+
versionCode: OptionalConfigValue<Int?> = .fastlaneDefault(nil),
|
4232
|
+
jsonKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
4233
|
+
jsonKeyData: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
4234
|
+
rootUrl: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
4235
|
+
timeout: Int = 300,
|
4236
|
+
destination: String,
|
4237
|
+
certificateSha256Hash: OptionalConfigValue<String?> = .fastlaneDefault(nil))
|
4238
|
+
{
|
4239
|
+
let packageNameArg = RubyCommand.Argument(name: "package_name", value: packageName, type: nil)
|
4240
|
+
let versionCodeArg = versionCode.asRubyArgument(name: "version_code", type: nil)
|
4241
|
+
let jsonKeyArg = jsonKey.asRubyArgument(name: "json_key", type: nil)
|
4242
|
+
let jsonKeyDataArg = jsonKeyData.asRubyArgument(name: "json_key_data", type: nil)
|
4243
|
+
let rootUrlArg = rootUrl.asRubyArgument(name: "root_url", type: nil)
|
4244
|
+
let timeoutArg = RubyCommand.Argument(name: "timeout", value: timeout, type: nil)
|
4245
|
+
let destinationArg = RubyCommand.Argument(name: "destination", value: destination, type: nil)
|
4246
|
+
let certificateSha256HashArg = certificateSha256Hash.asRubyArgument(name: "certificate_sha256_hash", type: nil)
|
4247
|
+
let array: [RubyCommand.Argument?] = [packageNameArg,
|
4248
|
+
versionCodeArg,
|
4249
|
+
jsonKeyArg,
|
4250
|
+
jsonKeyDataArg,
|
4251
|
+
rootUrlArg,
|
4252
|
+
timeoutArg,
|
4253
|
+
destinationArg,
|
4254
|
+
certificateSha256HashArg]
|
4255
|
+
let args: [RubyCommand.Argument] = array
|
4256
|
+
.filter { $0?.value != nil }
|
4257
|
+
.compactMap { $0 }
|
4258
|
+
let command = RubyCommand(commandID: "", methodName: "download_universal_apk_from_google_play", className: nil, args: args)
|
4259
|
+
_ = runner.executeCommand(command)
|
4260
|
+
}
|
4261
|
+
|
4207
4262
|
/**
|
4208
4263
|
Creates a zipped dSYM in the project root from the .xcarchive
|
4209
4264
|
|
@@ -6679,6 +6734,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
6679
6734
|
- s3SecretAccessKey: S3 secret access key
|
6680
6735
|
- s3Bucket: Name of the S3 bucket
|
6681
6736
|
- s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
|
6737
|
+
- s3SkipEncryption: Skip encryption of all objects uploaded to S3. WARNING: only enable this on S3 buckets with sufficiently restricted permissions and server-side encryption enabled. See https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html
|
6682
6738
|
- gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
|
6683
6739
|
- gitlabHost: GitLab Host (i.e. 'https://gitlab.com')
|
6684
6740
|
- keychainName: Keychain the items should be imported to
|
@@ -6733,6 +6789,7 @@ public func match(type: String = matchfile.type,
|
|
6733
6789
|
s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3SecretAccessKey),
|
6734
6790
|
s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3Bucket),
|
6735
6791
|
s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.s3ObjectPrefix),
|
6792
|
+
s3SkipEncryption: OptionalConfigValue<Bool> = .fastlaneDefault(matchfile.s3SkipEncryption),
|
6736
6793
|
gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(matchfile.gitlabProject),
|
6737
6794
|
gitlabHost: String = matchfile.gitlabHost,
|
6738
6795
|
keychainName: String = matchfile.keychainName,
|
@@ -6785,6 +6842,7 @@ public func match(type: String = matchfile.type,
|
|
6785
6842
|
let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
|
6786
6843
|
let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
|
6787
6844
|
let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
|
6845
|
+
let s3SkipEncryptionArg = s3SkipEncryption.asRubyArgument(name: "s3_skip_encryption", type: nil)
|
6788
6846
|
let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
|
6789
6847
|
let gitlabHostArg = RubyCommand.Argument(name: "gitlab_host", value: gitlabHost, type: nil)
|
6790
6848
|
let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
|
@@ -6836,6 +6894,7 @@ public func match(type: String = matchfile.type,
|
|
6836
6894
|
s3SecretAccessKeyArg,
|
6837
6895
|
s3BucketArg,
|
6838
6896
|
s3ObjectPrefixArg,
|
6897
|
+
s3SkipEncryptionArg,
|
6839
6898
|
gitlabProjectArg,
|
6840
6899
|
gitlabHostArg,
|
6841
6900
|
keychainNameArg,
|
@@ -6898,6 +6957,7 @@ public func match(type: String = matchfile.type,
|
|
6898
6957
|
- s3SecretAccessKey: S3 secret access key
|
6899
6958
|
- s3Bucket: Name of the S3 bucket
|
6900
6959
|
- s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
|
6960
|
+
- s3SkipEncryption: Skip encryption of all objects uploaded to S3. WARNING: only enable this on S3 buckets with sufficiently restricted permissions and server-side encryption enabled. See https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html
|
6901
6961
|
- gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
|
6902
6962
|
- gitlabHost: GitLab Host (i.e. 'https://gitlab.com')
|
6903
6963
|
- keychainName: Keychain the items should be imported to
|
@@ -6956,6 +7016,7 @@ public func matchNuke(type: String = "development",
|
|
6956
7016
|
s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
6957
7017
|
s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
6958
7018
|
s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
7019
|
+
s3SkipEncryption: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
6959
7020
|
gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
6960
7021
|
gitlabHost: String = "https://gitlab.com",
|
6961
7022
|
keychainName: String = "login.keychain",
|
@@ -7008,6 +7069,7 @@ public func matchNuke(type: String = "development",
|
|
7008
7069
|
let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
|
7009
7070
|
let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
|
7010
7071
|
let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
|
7072
|
+
let s3SkipEncryptionArg = s3SkipEncryption.asRubyArgument(name: "s3_skip_encryption", type: nil)
|
7011
7073
|
let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
|
7012
7074
|
let gitlabHostArg = RubyCommand.Argument(name: "gitlab_host", value: gitlabHost, type: nil)
|
7013
7075
|
let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
|
@@ -7059,6 +7121,7 @@ public func matchNuke(type: String = "development",
|
|
7059
7121
|
s3SecretAccessKeyArg,
|
7060
7122
|
s3BucketArg,
|
7061
7123
|
s3ObjectPrefixArg,
|
7124
|
+
s3SkipEncryptionArg,
|
7062
7125
|
gitlabProjectArg,
|
7063
7126
|
gitlabHostArg,
|
7064
7127
|
keychainNameArg,
|
@@ -10868,7 +10931,7 @@ public func ssh(username: String,
|
|
10868
10931
|
- parameters:
|
10869
10932
|
- packageName: The package name of the application to use
|
10870
10933
|
- versionName: Version name (used when uploading new apks/aabs) - defaults to 'versionName' in build.gradle or AndroidManifest.xml
|
10871
|
-
- versionCode:
|
10934
|
+
- versionCode: The versionCode for which to download the generated APK
|
10872
10935
|
- releaseStatus: Release status (used when uploading new apks/aabs) - valid values are completed, draft, halted, inProgress
|
10873
10936
|
- track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
|
10874
10937
|
- rollout: The percentage of the user fraction when uploading to the rollout track (setting to 1 will complete the rollout)
|
@@ -10887,6 +10950,7 @@ public func ssh(username: String,
|
|
10887
10950
|
- skipUploadChangelogs: Whether to skip uploading changelogs
|
10888
10951
|
- skipUploadImages: Whether to skip uploading images, screenshots not included
|
10889
10952
|
- skipUploadScreenshots: Whether to skip uploading SCREENSHOTS
|
10953
|
+
- syncImageUpload: Whether to use sha256 comparison to skip upload of images and screenshots that are already in Play Store
|
10890
10954
|
- trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
|
10891
10955
|
- trackPromoteReleaseStatus: Promoted track release status (used when promoting a track) - valid values are completed, draft, halted, inProgress
|
10892
10956
|
- validateOnly: Only validate changes with Google Play rather than actually publish
|
@@ -10929,6 +10993,7 @@ public func supply(packageName: String,
|
|
10929
10993
|
skipUploadChangelogs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
10930
10994
|
skipUploadImages: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
10931
10995
|
skipUploadScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
10996
|
+
syncImageUpload: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
10932
10997
|
trackPromoteTo: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
10933
10998
|
trackPromoteReleaseStatus: String = "completed",
|
10934
10999
|
validateOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
@@ -10969,6 +11034,7 @@ public func supply(packageName: String,
|
|
10969
11034
|
let skipUploadChangelogsArg = skipUploadChangelogs.asRubyArgument(name: "skip_upload_changelogs", type: nil)
|
10970
11035
|
let skipUploadImagesArg = skipUploadImages.asRubyArgument(name: "skip_upload_images", type: nil)
|
10971
11036
|
let skipUploadScreenshotsArg = skipUploadScreenshots.asRubyArgument(name: "skip_upload_screenshots", type: nil)
|
11037
|
+
let syncImageUploadArg = syncImageUpload.asRubyArgument(name: "sync_image_upload", type: nil)
|
10972
11038
|
let trackPromoteToArg = trackPromoteTo.asRubyArgument(name: "track_promote_to", type: nil)
|
10973
11039
|
let trackPromoteReleaseStatusArg = RubyCommand.Argument(name: "track_promote_release_status", value: trackPromoteReleaseStatus, type: nil)
|
10974
11040
|
let validateOnlyArg = validateOnly.asRubyArgument(name: "validate_only", type: nil)
|
@@ -11008,6 +11074,7 @@ public func supply(packageName: String,
|
|
11008
11074
|
skipUploadChangelogsArg,
|
11009
11075
|
skipUploadImagesArg,
|
11010
11076
|
skipUploadScreenshotsArg,
|
11077
|
+
syncImageUploadArg,
|
11011
11078
|
trackPromoteToArg,
|
11012
11079
|
trackPromoteReleaseStatusArg,
|
11013
11080
|
validateOnlyArg,
|
@@ -11136,6 +11203,7 @@ public func swiftlint(mode: String = "lint",
|
|
11136
11203
|
- s3SecretAccessKey: S3 secret access key
|
11137
11204
|
- s3Bucket: Name of the S3 bucket
|
11138
11205
|
- s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
|
11206
|
+
- s3SkipEncryption: Skip encryption of all objects uploaded to S3. WARNING: only enable this on S3 buckets with sufficiently restricted permissions and server-side encryption enabled. See https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html
|
11139
11207
|
- gitlabProject: GitLab Project Path (i.e. 'gitlab-org/gitlab')
|
11140
11208
|
- gitlabHost: GitLab Host (i.e. 'https://gitlab.com')
|
11141
11209
|
- keychainName: Keychain the items should be imported to
|
@@ -11190,6 +11258,7 @@ public func syncCodeSigning(type: String = "development",
|
|
11190
11258
|
s3SecretAccessKey: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
11191
11259
|
s3Bucket: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
11192
11260
|
s3ObjectPrefix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
11261
|
+
s3SkipEncryption: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
11193
11262
|
gitlabProject: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
11194
11263
|
gitlabHost: String = "https://gitlab.com",
|
11195
11264
|
keychainName: String = "login.keychain",
|
@@ -11242,6 +11311,7 @@ public func syncCodeSigning(type: String = "development",
|
|
11242
11311
|
let s3SecretAccessKeyArg = s3SecretAccessKey.asRubyArgument(name: "s3_secret_access_key", type: nil)
|
11243
11312
|
let s3BucketArg = s3Bucket.asRubyArgument(name: "s3_bucket", type: nil)
|
11244
11313
|
let s3ObjectPrefixArg = s3ObjectPrefix.asRubyArgument(name: "s3_object_prefix", type: nil)
|
11314
|
+
let s3SkipEncryptionArg = s3SkipEncryption.asRubyArgument(name: "s3_skip_encryption", type: nil)
|
11245
11315
|
let gitlabProjectArg = gitlabProject.asRubyArgument(name: "gitlab_project", type: nil)
|
11246
11316
|
let gitlabHostArg = RubyCommand.Argument(name: "gitlab_host", value: gitlabHost, type: nil)
|
11247
11317
|
let keychainNameArg = RubyCommand.Argument(name: "keychain_name", value: keychainName, type: nil)
|
@@ -11293,6 +11363,7 @@ public func syncCodeSigning(type: String = "development",
|
|
11293
11363
|
s3SecretAccessKeyArg,
|
11294
11364
|
s3BucketArg,
|
11295
11365
|
s3ObjectPrefixArg,
|
11366
|
+
s3SkipEncryptionArg,
|
11296
11367
|
gitlabProjectArg,
|
11297
11368
|
gitlabHostArg,
|
11298
11369
|
keychainNameArg,
|
@@ -12595,7 +12666,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
|
|
12595
12666
|
- parameters:
|
12596
12667
|
- packageName: The package name of the application to use
|
12597
12668
|
- versionName: Version name (used when uploading new apks/aabs) - defaults to 'versionName' in build.gradle or AndroidManifest.xml
|
12598
|
-
- versionCode:
|
12669
|
+
- versionCode: The versionCode for which to download the generated APK
|
12599
12670
|
- releaseStatus: Release status (used when uploading new apks/aabs) - valid values are completed, draft, halted, inProgress
|
12600
12671
|
- track: The track of the application to use. The default available tracks are: production, beta, alpha, internal
|
12601
12672
|
- rollout: The percentage of the user fraction when uploading to the rollout track (setting to 1 will complete the rollout)
|
@@ -12614,6 +12685,7 @@ public func uploadToAppStore(apiKeyPath: OptionalConfigValue<String?> = .fastlan
|
|
12614
12685
|
- skipUploadChangelogs: Whether to skip uploading changelogs
|
12615
12686
|
- skipUploadImages: Whether to skip uploading images, screenshots not included
|
12616
12687
|
- skipUploadScreenshots: Whether to skip uploading SCREENSHOTS
|
12688
|
+
- syncImageUpload: Whether to use sha256 comparison to skip upload of images and screenshots that are already in Play Store
|
12617
12689
|
- trackPromoteTo: The track to promote to. The default available tracks are: production, beta, alpha, internal
|
12618
12690
|
- trackPromoteReleaseStatus: Promoted track release status (used when promoting a track) - valid values are completed, draft, halted, inProgress
|
12619
12691
|
- validateOnly: Only validate changes with Google Play rather than actually publish
|
@@ -12656,6 +12728,7 @@ public func uploadToPlayStore(packageName: String,
|
|
12656
12728
|
skipUploadChangelogs: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
12657
12729
|
skipUploadImages: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
12658
12730
|
skipUploadScreenshots: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
12731
|
+
syncImageUpload: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
12659
12732
|
trackPromoteTo: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
12660
12733
|
trackPromoteReleaseStatus: String = "completed",
|
12661
12734
|
validateOnly: OptionalConfigValue<Bool> = .fastlaneDefault(false),
|
@@ -12696,6 +12769,7 @@ public func uploadToPlayStore(packageName: String,
|
|
12696
12769
|
let skipUploadChangelogsArg = skipUploadChangelogs.asRubyArgument(name: "skip_upload_changelogs", type: nil)
|
12697
12770
|
let skipUploadImagesArg = skipUploadImages.asRubyArgument(name: "skip_upload_images", type: nil)
|
12698
12771
|
let skipUploadScreenshotsArg = skipUploadScreenshots.asRubyArgument(name: "skip_upload_screenshots", type: nil)
|
12772
|
+
let syncImageUploadArg = syncImageUpload.asRubyArgument(name: "sync_image_upload", type: nil)
|
12699
12773
|
let trackPromoteToArg = trackPromoteTo.asRubyArgument(name: "track_promote_to", type: nil)
|
12700
12774
|
let trackPromoteReleaseStatusArg = RubyCommand.Argument(name: "track_promote_release_status", value: trackPromoteReleaseStatus, type: nil)
|
12701
12775
|
let validateOnlyArg = validateOnly.asRubyArgument(name: "validate_only", type: nil)
|
@@ -12735,6 +12809,7 @@ public func uploadToPlayStore(packageName: String,
|
|
12735
12809
|
skipUploadChangelogsArg,
|
12736
12810
|
skipUploadImagesArg,
|
12737
12811
|
skipUploadScreenshotsArg,
|
12812
|
+
syncImageUploadArg,
|
12738
12813
|
trackPromoteToArg,
|
12739
12814
|
trackPromoteReleaseStatusArg,
|
12740
12815
|
validateOnlyArg,
|
@@ -13394,7 +13469,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
|
|
13394
13469
|
coverallsServiceJobId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
13395
13470
|
coverallsRepoToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
13396
13471
|
xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
|
13397
|
-
ideFoundationPath: String = "/Applications/Xcode-14.
|
13472
|
+
ideFoundationPath: String = "/Applications/Xcode-14.3.0.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
13398
13473
|
legacySupport: OptionalConfigValue<Bool> = .fastlaneDefault(false))
|
13399
13474
|
{
|
13400
13475
|
let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
|
@@ -13597,4 +13672,4 @@ public let snapshotfile: Snapshotfile = .init()
|
|
13597
13672
|
|
13598
13673
|
// Please don't remove the lines below
|
13599
13674
|
// They are used to detect outdated files
|
13600
|
-
// FastlaneRunnerAPIVersion [0.9.
|
13675
|
+
// FastlaneRunnerAPIVersion [0.9.171]
|
@@ -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
|
+
/// Skip encryption of all objects uploaded to S3. WARNING: only enable this on S3 buckets with sufficiently restricted permissions and server-side encryption enabled. See https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html
|
96
|
+
var s3SkipEncryption: Bool { get }
|
97
|
+
|
95
98
|
/// GitLab Project Path (i.e. 'gitlab-org/gitlab')
|
96
99
|
var gitlabProject: String? { get }
|
97
100
|
|
@@ -187,6 +190,7 @@ public extension MatchfileProtocol {
|
|
187
190
|
var s3SecretAccessKey: String? { return nil }
|
188
191
|
var s3Bucket: String? { return nil }
|
189
192
|
var s3ObjectPrefix: String? { return nil }
|
193
|
+
var s3SkipEncryption: Bool { return false }
|
190
194
|
var gitlabProject: String? { return nil }
|
191
195
|
var gitlabHost: String { return "https://gitlab.com" }
|
192
196
|
var keychainName: String { return "login.keychain" }
|
@@ -212,4 +216,4 @@ public extension MatchfileProtocol {
|
|
212
216
|
|
213
217
|
// Please don't remove the lines below
|
214
218
|
// They are used to detect outdated files
|
215
|
-
// FastlaneRunnerAPIVersion [0.9.
|
219
|
+
// FastlaneRunnerAPIVersion [0.9.115]
|