fastlane 2.138.0 → 2.139.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 +66 -66
- data/deliver/lib/deliver/submit_for_review.rb +7 -1
- data/fastlane/lib/fastlane/action.rb +1 -1
- data/fastlane/lib/fastlane/actions/create_pull_request.rb +42 -2
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +10 -0
- data/fastlane/lib/fastlane/actions/last_git_tag.rb +14 -5
- data/fastlane/lib/fastlane/actions/setup_ci.rb +14 -8
- data/fastlane/lib/fastlane/actions/upload_to_play_store_internal_app_sharing.rb +78 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +64 -10
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +5 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane_core/lib/fastlane_core/build_watcher.rb +6 -2
- data/fastlane_core/lib/fastlane_core/device_manager.rb +20 -0
- data/fastlane_core/lib/fastlane_core/helper.rb +7 -1
- data/frameit/lib/frameit/editor.rb +3 -0
- data/gym/lib/gym/.runner.rb.swp +0 -0
- data/gym/lib/gym/generators/build_command_generator.rb +1 -0
- data/gym/lib/gym/runner.rb +8 -3
- data/pilot/lib/pilot/build_manager.rb +31 -6
- data/pilot/lib/pilot/options.rb +3 -1
- data/scan/lib/scan/options.rb +5 -0
- data/scan/lib/scan/runner.rb +6 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +5 -0
- data/supply/lib/supply/client.rb +26 -0
- data/supply/lib/supply/uploader.rb +28 -0
- metadata +22 -20
@@ -0,0 +1,78 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class UploadToPlayStoreInternalAppSharingAction < Action
|
4
|
+
def self.run(params)
|
5
|
+
require 'supply'
|
6
|
+
|
7
|
+
# If no APK params were provided, try to fill in the values from lane context, preferring
|
8
|
+
# the multiple APKs over the single APK if set.
|
9
|
+
if params[:apk_paths].nil? && params[:apk].nil?
|
10
|
+
all_apk_paths = Actions.lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS] || []
|
11
|
+
if all_apk_paths.size > 1
|
12
|
+
params[:apk_paths] = all_apk_paths
|
13
|
+
else
|
14
|
+
params[:apk] = Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# If no AAB param was provided, try to fill in the value from lane context.
|
19
|
+
# First GRADLE_ALL_AAB_OUTPUT_PATHS if only one
|
20
|
+
# Else from GRADLE_AAB_OUTPUT_PATH
|
21
|
+
if params[:aab].nil?
|
22
|
+
all_aab_paths = Actions.lane_context[SharedValues::GRADLE_ALL_AAB_OUTPUT_PATHS] || []
|
23
|
+
if all_aab_paths.count == 1
|
24
|
+
params[:aab] = all_aab_paths.first
|
25
|
+
else
|
26
|
+
params[:aab] = Actions.lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
Supply.config = params # we already have the finished config
|
31
|
+
|
32
|
+
Supply::Uploader.new.perform_upload_to_internal_app_sharing
|
33
|
+
end
|
34
|
+
|
35
|
+
#####################################################
|
36
|
+
# @!group Documentation
|
37
|
+
#####################################################
|
38
|
+
|
39
|
+
def self.description
|
40
|
+
"Upload binaries to Google Play Internal App Sharing (via _supply_)"
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.details
|
44
|
+
"More information: https://docs.fastlane.tools/actions/upload_to_play_store_internal_app_sharing/"
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.available_options
|
48
|
+
require 'supply'
|
49
|
+
require 'supply/options'
|
50
|
+
options = Supply::Options.available_options.clone
|
51
|
+
|
52
|
+
# remove all the unnecessary (for this action) options
|
53
|
+
options_to_keep = [:package_name, :apk, :apk_paths, :aab, :aab_paths, :json_key, :json_key_data, :root_url, :timeout]
|
54
|
+
options.delete_if { |option| options_to_keep.include?(option.key) == false }
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.return_value
|
58
|
+
"Returns a string containing the download URL for the uploaded APK/AAB (or array of strings if multiple were uploaded)."
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.authors
|
62
|
+
["andrewhavens"]
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.is_supported?(platform)
|
66
|
+
platform == :android
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.example_code
|
70
|
+
["upload_to_play_store_internal_app_sharing"]
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.category
|
74
|
+
:production
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -2146,6 +2146,8 @@ func createKeychain(name: String? = nil,
|
|
2146
2146
|
- base: The name of the branch you want your changes pulled into (defaults to `master`)
|
2147
2147
|
- apiUrl: The URL of GitHub API - used when the Enterprise (default to `https://api.github.com`)
|
2148
2148
|
- assignees: The assignees for the pull request
|
2149
|
+
- reviewers: The reviewers (slug) for the pull request
|
2150
|
+
- teamReviewers: The team reviewers (slug) for the pull request
|
2149
2151
|
|
2150
2152
|
- returns: The pull request URL when successful
|
2151
2153
|
*/
|
@@ -2157,7 +2159,9 @@ func createPullRequest(apiToken: String,
|
|
2157
2159
|
head: String? = nil,
|
2158
2160
|
base: String = "master",
|
2159
2161
|
apiUrl: String = "https://api.github.com",
|
2160
|
-
assignees: [String]? = nil
|
2162
|
+
assignees: [String]? = nil,
|
2163
|
+
reviewers: [String]? = nil,
|
2164
|
+
teamReviewers: [String]? = nil) {
|
2161
2165
|
let command = RubyCommand(commandID: "", methodName: "create_pull_request", className: nil, args: [RubyCommand.Argument(name: "api_token", value: apiToken),
|
2162
2166
|
RubyCommand.Argument(name: "repo", value: repo),
|
2163
2167
|
RubyCommand.Argument(name: "title", value: title),
|
@@ -2166,7 +2170,9 @@ func createPullRequest(apiToken: String,
|
|
2166
2170
|
RubyCommand.Argument(name: "head", value: head),
|
2167
2171
|
RubyCommand.Argument(name: "base", value: base),
|
2168
2172
|
RubyCommand.Argument(name: "api_url", value: apiUrl),
|
2169
|
-
RubyCommand.Argument(name: "assignees", value: assignees)
|
2173
|
+
RubyCommand.Argument(name: "assignees", value: assignees),
|
2174
|
+
RubyCommand.Argument(name: "reviewers", value: reviewers),
|
2175
|
+
RubyCommand.Argument(name: "team_reviewers", value: teamReviewers)])
|
2170
2176
|
_ = runner.executeCommand(command)
|
2171
2177
|
}
|
2172
2178
|
|
@@ -4077,10 +4083,13 @@ func jira(url: String,
|
|
4077
4083
|
/**
|
4078
4084
|
Get the most recent git tag
|
4079
4085
|
|
4086
|
+
- parameter pattern: Pattern to filter tags when looking for last one. Limit tags to ones matching given shell glob. If pattern lacks ?, *, or [, * at the end is implied
|
4087
|
+
|
4080
4088
|
If you are using this action on a **shallow clone**, *the default with some CI systems like Bamboo*, you need to ensure that you have also pulled all the git tags appropriately. Assuming your git repo has the correct remote set you can issue `sh('git fetch --tags')`.
|
4089
|
+
Pattern parameter allows you to filter to a subset of tags.
|
4081
4090
|
*/
|
4082
|
-
@discardableResult func lastGitTag() -> String {
|
4083
|
-
let command = RubyCommand(commandID: "", methodName: "last_git_tag", className: nil, args: [])
|
4091
|
+
@discardableResult func lastGitTag(pattern: String? = nil) -> String {
|
4092
|
+
let command = RubyCommand(commandID: "", methodName: "last_git_tag", className: nil, args: [RubyCommand.Argument(name: "pattern", value: pattern)])
|
4084
4093
|
return runner.executeCommand(command)
|
4085
4094
|
}
|
4086
4095
|
|
@@ -4667,7 +4676,7 @@ func pem(development: Bool = false,
|
|
4667
4676
|
- localizedBuildInfo: Localized beta app test info for what's new
|
4668
4677
|
- changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
|
4669
4678
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
4670
|
-
- skipWaitingForBuildProcessing:
|
4679
|
+
- skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
|
4671
4680
|
- updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
|
4672
4681
|
- usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
|
4673
4682
|
- distributeExternal: Should the build be distributed to external testers?
|
@@ -5354,6 +5363,7 @@ func rubyVersion() {
|
|
5354
5363
|
- skipDetectDevices: Should skip auto detecting of devices if none were specified
|
5355
5364
|
- forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
|
5356
5365
|
- resetSimulator: Enabling this option will automatically erase the simulator before running the application
|
5366
|
+
- disableSlideToType: Enabling this option will disable the simulator from showing the 'Slide to type' prompt
|
5357
5367
|
- prelaunchSimulator: Enabling this option will launch the first simulator prior to calling any xcodebuild command
|
5358
5368
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
5359
5369
|
- appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
|
@@ -5411,6 +5421,7 @@ func runTests(workspace: String? = nil,
|
|
5411
5421
|
skipDetectDevices: Bool = false,
|
5412
5422
|
forceQuitSimulator: Bool = false,
|
5413
5423
|
resetSimulator: Bool = false,
|
5424
|
+
disableSlideToType: Bool = true,
|
5414
5425
|
prelaunchSimulator: Bool? = nil,
|
5415
5426
|
reinstallApp: Bool = false,
|
5416
5427
|
appIdentifier: String? = nil,
|
@@ -5465,6 +5476,7 @@ func runTests(workspace: String? = nil,
|
|
5465
5476
|
RubyCommand.Argument(name: "skip_detect_devices", value: skipDetectDevices),
|
5466
5477
|
RubyCommand.Argument(name: "force_quit_simulator", value: forceQuitSimulator),
|
5467
5478
|
RubyCommand.Argument(name: "reset_simulator", value: resetSimulator),
|
5479
|
+
RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
|
5468
5480
|
RubyCommand.Argument(name: "prelaunch_simulator", value: prelaunchSimulator),
|
5469
5481
|
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
5470
5482
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
@@ -5600,6 +5612,7 @@ func say(text: Any,
|
|
5600
5612
|
- skipDetectDevices: Should skip auto detecting of devices if none were specified
|
5601
5613
|
- forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
|
5602
5614
|
- resetSimulator: Enabling this option will automatically erase the simulator before running the application
|
5615
|
+
- disableSlideToType: Enabling this option will disable the simulator from showing the 'Slide to type' prompt
|
5603
5616
|
- prelaunchSimulator: Enabling this option will launch the first simulator prior to calling any xcodebuild command
|
5604
5617
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
5605
5618
|
- appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
|
@@ -5657,6 +5670,7 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5657
5670
|
skipDetectDevices: Bool = scanfile.skipDetectDevices,
|
5658
5671
|
forceQuitSimulator: Bool = scanfile.forceQuitSimulator,
|
5659
5672
|
resetSimulator: Bool = scanfile.resetSimulator,
|
5673
|
+
disableSlideToType: Bool = scanfile.disableSlideToType,
|
5660
5674
|
prelaunchSimulator: Bool? = scanfile.prelaunchSimulator,
|
5661
5675
|
reinstallApp: Bool = scanfile.reinstallApp,
|
5662
5676
|
appIdentifier: Any? = scanfile.appIdentifier,
|
@@ -5711,6 +5725,7 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5711
5725
|
RubyCommand.Argument(name: "skip_detect_devices", value: skipDetectDevices),
|
5712
5726
|
RubyCommand.Argument(name: "force_quit_simulator", value: forceQuitSimulator),
|
5713
5727
|
RubyCommand.Argument(name: "reset_simulator", value: resetSimulator),
|
5728
|
+
RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
|
5714
5729
|
RubyCommand.Argument(name: "prelaunch_simulator", value: prelaunchSimulator),
|
5715
5730
|
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
5716
5731
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
@@ -6006,7 +6021,7 @@ func setPodKey(useBundleExec: Bool = true,
|
|
6006
6021
|
|
6007
6022
|
- parameters:
|
6008
6023
|
- force: Force setup, even if not executed by CI
|
6009
|
-
- provider: CI provider
|
6024
|
+
- provider: CI provider. If none is set, the provider is detected automatically
|
6010
6025
|
|
6011
6026
|
- Creates a new temporary keychain for use with match|
|
6012
6027
|
- Switches match to `readonly` mode to not create new profiles/cert on CI|
|
@@ -7014,7 +7029,7 @@ func testfairy(apiKey: String,
|
|
7014
7029
|
- localizedBuildInfo: Localized beta app test info for what's new
|
7015
7030
|
- changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
|
7016
7031
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
7017
|
-
- skipWaitingForBuildProcessing:
|
7032
|
+
- skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
|
7018
7033
|
- updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
|
7019
7034
|
- usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
|
7020
7035
|
- distributeExternal: Should the build be distributed to external testers?
|
@@ -7816,6 +7831,45 @@ func uploadToPlayStore(packageName: String,
|
|
7816
7831
|
_ = runner.executeCommand(command)
|
7817
7832
|
}
|
7818
7833
|
|
7834
|
+
/**
|
7835
|
+
Upload binaries to Google Play Internal App Sharing (via _supply_)
|
7836
|
+
|
7837
|
+
- parameters:
|
7838
|
+
- packageName: The package name of the application to use
|
7839
|
+
- jsonKey: The path to a file containing service account JSON, used to authenticate with Google
|
7840
|
+
- jsonKeyData: The raw service account JSON data used to authenticate with Google
|
7841
|
+
- apk: Path to the APK file to upload
|
7842
|
+
- apkPaths: An array of paths to APK files to upload
|
7843
|
+
- aab: Path to the AAB file to upload
|
7844
|
+
- aabPaths: An array of paths to AAB files to upload
|
7845
|
+
- rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
|
7846
|
+
- timeout: Timeout for read, open, and send (in seconds)
|
7847
|
+
|
7848
|
+
- returns: Returns a string containing the download URL for the uploaded APK/AAB (or array of strings if multiple were uploaded).
|
7849
|
+
|
7850
|
+
More information: https://docs.fastlane.tools/actions/upload_to_play_store_internal_app_sharing/
|
7851
|
+
*/
|
7852
|
+
func uploadToPlayStoreInternalAppSharing(packageName: String,
|
7853
|
+
jsonKey: String? = nil,
|
7854
|
+
jsonKeyData: String? = nil,
|
7855
|
+
apk: String? = nil,
|
7856
|
+
apkPaths: [String]? = nil,
|
7857
|
+
aab: String? = nil,
|
7858
|
+
aabPaths: [String]? = nil,
|
7859
|
+
rootUrl: String? = nil,
|
7860
|
+
timeout: Int = 300) {
|
7861
|
+
let command = RubyCommand(commandID: "", methodName: "upload_to_play_store_internal_app_sharing", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
|
7862
|
+
RubyCommand.Argument(name: "json_key", value: jsonKey),
|
7863
|
+
RubyCommand.Argument(name: "json_key_data", value: jsonKeyData),
|
7864
|
+
RubyCommand.Argument(name: "apk", value: apk),
|
7865
|
+
RubyCommand.Argument(name: "apk_paths", value: apkPaths),
|
7866
|
+
RubyCommand.Argument(name: "aab", value: aab),
|
7867
|
+
RubyCommand.Argument(name: "aab_paths", value: aabPaths),
|
7868
|
+
RubyCommand.Argument(name: "root_url", value: rootUrl),
|
7869
|
+
RubyCommand.Argument(name: "timeout", value: timeout)])
|
7870
|
+
_ = runner.executeCommand(command)
|
7871
|
+
}
|
7872
|
+
|
7819
7873
|
/**
|
7820
7874
|
Upload new binary to App Store Connect for TestFlight beta testing (via _pilot_)
|
7821
7875
|
|
@@ -7833,7 +7887,7 @@ func uploadToPlayStore(packageName: String,
|
|
7833
7887
|
- localizedBuildInfo: Localized beta app test info for what's new
|
7834
7888
|
- changelog: Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog
|
7835
7889
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
7836
|
-
- skipWaitingForBuildProcessing:
|
7890
|
+
- skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
|
7837
7891
|
- updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
|
7838
7892
|
- usesNonExemptEncryption: Provide the 'Uses Non-Exempt Encryption' for export compliance. This is used if there is 'ITSAppUsesNonExemptEncryption' is not set in the Info.plist
|
7839
7893
|
- distributeExternal: Should the build be distributed to external testers?
|
@@ -8211,7 +8265,7 @@ func xcov(workspace: String? = nil,
|
|
8211
8265
|
coverallsServiceJobId: String? = nil,
|
8212
8266
|
coverallsRepoToken: String? = nil,
|
8213
8267
|
xcconfig: String? = nil,
|
8214
|
-
ideFoundationPath: String = "/Applications/Xcode-11.
|
8268
|
+
ideFoundationPath: String = "/Applications/Xcode-11.3.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
8215
8269
|
legacySupport: Bool = false) {
|
8216
8270
|
let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
8217
8271
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -8356,4 +8410,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
|
|
8356
8410
|
|
8357
8411
|
// Please don't remove the lines below
|
8358
8412
|
// They are used to detect outdated files
|
8359
|
-
// FastlaneRunnerAPIVersion [0.9.
|
8413
|
+
// FastlaneRunnerAPIVersion [0.9.67]
|
@@ -24,6 +24,9 @@ protocol ScanfileProtocol: class {
|
|
24
24
|
/// Enabling this option will automatically erase the simulator before running the application
|
25
25
|
var resetSimulator: Bool { get }
|
26
26
|
|
27
|
+
/// Enabling this option will disable the simulator from showing the 'Slide to type' prompt
|
28
|
+
var disableSlideToType: Bool { get }
|
29
|
+
|
27
30
|
/// Enabling this option will launch the first simulator prior to calling any xcodebuild command
|
28
31
|
var prelaunchSimulator: Bool? { get }
|
29
32
|
|
@@ -172,6 +175,7 @@ extension ScanfileProtocol {
|
|
172
175
|
var skipDetectDevices: Bool { return false }
|
173
176
|
var forceQuitSimulator: Bool { return false }
|
174
177
|
var resetSimulator: Bool { return false }
|
178
|
+
var disableSlideToType: Bool { return true }
|
175
179
|
var prelaunchSimulator: Bool? { return nil }
|
176
180
|
var reinstallApp: Bool { return false }
|
177
181
|
var appIdentifier: String? { return nil }
|
@@ -222,4 +226,4 @@ extension ScanfileProtocol {
|
|
222
226
|
|
223
227
|
// Please don't remove the lines below
|
224
228
|
// They are used to detect outdated files
|
225
|
-
// FastlaneRunnerAPIVersion [0.9.
|
229
|
+
// FastlaneRunnerAPIVersion [0.9.23]
|
@@ -6,7 +6,7 @@ module FastlaneCore
|
|
6
6
|
class BuildWatcher
|
7
7
|
class << self
|
8
8
|
# @return The build we waited for. This method will always return a build
|
9
|
-
def wait_for_build_processing_to_be_complete(app_id: nil, platform: nil, train_version: nil, app_version: nil, build_version: nil, poll_interval: 10, strict_build_watch: false, return_spaceship_testflight_build: true)
|
9
|
+
def wait_for_build_processing_to_be_complete(app_id: nil, platform: nil, train_version: nil, app_version: nil, build_version: nil, poll_interval: 10, strict_build_watch: false, return_when_build_appears: false, return_spaceship_testflight_build: true)
|
10
10
|
# Warn about train_version being removed in the future
|
11
11
|
if train_version
|
12
12
|
UI.deprecated(":train_version is no longer a used argument on FastlaneCore::BuildWatcher. Please use :app_version instead.")
|
@@ -32,7 +32,11 @@ module FastlaneCore
|
|
32
32
|
|
33
33
|
report_status(build: matched_build)
|
34
34
|
|
35
|
-
|
35
|
+
# Processing of builds by AppStoreConnect can be a very time consuming task and will
|
36
|
+
# block the worker running this task until it is completed. In some cases,
|
37
|
+
# having a build resource appear in AppStoreConnect (matched_build) may be enough (i.e. setting a changelog)
|
38
|
+
# so here we may choose to skip the full processing of the build if return_when_build_appears is true
|
39
|
+
if matched_build && (return_when_build_appears || matched_build.processed?)
|
36
40
|
if return_spaceship_testflight_build
|
37
41
|
return matched_build.to_testflight_build
|
38
42
|
else
|
@@ -212,6 +212,19 @@ module FastlaneCore
|
|
212
212
|
`xcrun simctl delete #{self.udid}`
|
213
213
|
return
|
214
214
|
end
|
215
|
+
|
216
|
+
def disable_slide_to_type
|
217
|
+
return unless is_simulator
|
218
|
+
return unless os_type == "iOS"
|
219
|
+
return unless Gem::Version.new(os_version) >= Gem::Version.new('13.0')
|
220
|
+
UI.message("Disabling 'Slide to Type' #{self}")
|
221
|
+
|
222
|
+
plist_buddy = '/usr/libexec/PlistBuddy'
|
223
|
+
plist_buddy_cmd = "-c \"Add :KeyboardContinuousPathEnabled bool false\""
|
224
|
+
plist_path = File.expand_path("~/Library/Developer/CoreSimulator/Devices/#{self.udid}/data/Library/Preferences/com.apple.keyboard.ContinuousPath.plist")
|
225
|
+
|
226
|
+
Helper.backticks("#{plist_buddy} #{plist_buddy_cmd} #{plist_path}")
|
227
|
+
end
|
215
228
|
end
|
216
229
|
end
|
217
230
|
|
@@ -248,6 +261,13 @@ module FastlaneCore
|
|
248
261
|
all.select { |device| device.os_version == os_version }.each(&:delete)
|
249
262
|
end
|
250
263
|
|
264
|
+
# Disable 'Slide to Type' by UDID or name and OS version
|
265
|
+
# Latter is useful when combined with -destination option of xcodebuild
|
266
|
+
def disable_slide_to_type(udid: nil, name: nil, os_version: nil)
|
267
|
+
match = all.detect { |device| device.udid == udid || device.name == name && device.os_version == os_version }
|
268
|
+
match.disable_slide_to_type if match
|
269
|
+
end
|
270
|
+
|
251
271
|
def clear_cache
|
252
272
|
@devices = nil
|
253
273
|
end
|
@@ -71,13 +71,19 @@ module FastlaneCore
|
|
71
71
|
|
72
72
|
# @return [boolean] true if building in a known CI environment
|
73
73
|
def self.ci?
|
74
|
+
return true if self.is_circle_ci?
|
75
|
+
|
74
76
|
# Check for Jenkins, Travis CI, ... environment variables
|
75
|
-
['JENKINS_HOME', 'JENKINS_URL', 'TRAVIS', '
|
77
|
+
['JENKINS_HOME', 'JENKINS_URL', 'TRAVIS', 'CI', 'APPCENTER_BUILD_ID', 'TEAMCITY_VERSION', 'GO_PIPELINE_NAME', 'bamboo_buildKey', 'GITLAB_CI', 'XCS', 'TF_BUILD', 'GITHUB_ACTION', 'GITHUB_ACTIONS', 'BITRISE_IO'].each do |current|
|
76
78
|
return true if ENV.key?(current)
|
77
79
|
end
|
78
80
|
return false
|
79
81
|
end
|
80
82
|
|
83
|
+
def self.is_circle_ci?
|
84
|
+
return ENV.key?('CIRCLECI')
|
85
|
+
end
|
86
|
+
|
81
87
|
def self.operating_system
|
82
88
|
return "macOS" if RUBY_PLATFORM.downcase.include?("darwin")
|
83
89
|
return "Windows" if RUBY_PLATFORM.downcase.include?("mswin")
|
@@ -262,6 +262,9 @@ module Frameit
|
|
262
262
|
left_space = (background.width / 2.0 - image.width / 2.0).round
|
263
263
|
|
264
264
|
@image = background.composite(image, "png") do |c|
|
265
|
+
colorspace = image.data["colorspace"]
|
266
|
+
c.colorspace(colorspace) if colorspace
|
267
|
+
|
265
268
|
c.compose("Over")
|
266
269
|
c.geometry("+#{left_space}+#{device_top(background)}")
|
267
270
|
end
|
Binary file
|
data/gym/lib/gym/runner.rb
CHANGED
@@ -18,6 +18,9 @@ module Gym
|
|
18
18
|
build_app
|
19
19
|
end
|
20
20
|
verify_archive unless Gym.config[:skip_archive]
|
21
|
+
|
22
|
+
return nil if Gym.config[:skip_archive]
|
23
|
+
|
21
24
|
FileUtils.mkdir_p(File.expand_path(Gym.config[:output_directory]))
|
22
25
|
|
23
26
|
if Gym.project.ios? || Gym.project.tvos?
|
@@ -97,9 +100,11 @@ module Gym
|
|
97
100
|
ErrorHandler.handle_build_error(output)
|
98
101
|
end)
|
99
102
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
+
unless Gym.config[:skip_archive]
|
104
|
+
mark_archive_as_built_by_gym(BuildCommandGenerator.archive_path)
|
105
|
+
UI.success("Successfully stored the archive. You can find it in the Xcode Organizer.") unless Gym.config[:archive_path].nil?
|
106
|
+
UI.verbose("Stored the archive in: " + BuildCommandGenerator.archive_path)
|
107
|
+
end
|
103
108
|
|
104
109
|
post_build_app
|
105
110
|
end
|