fastlane 2.138.0 → 2.143.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/README.md +75 -62
- data/cert/lib/cert/options.rb +12 -5
- data/cert/lib/cert/runner.rb +13 -0
- data/deliver/lib/deliver/options.rb +2 -2
- data/deliver/lib/deliver/runner.rb +13 -2
- data/deliver/lib/deliver/submit_for_review.rb +7 -1
- data/fastlane/lib/fastlane/action.rb +2 -2
- data/fastlane/lib/fastlane/actions/.hockey.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/README.md +2 -0
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +13 -5
- data/fastlane/lib/fastlane/actions/build_app.rb +157 -6
- data/fastlane/lib/fastlane/actions/build_ios_app.rb +28 -132
- data/fastlane/lib/fastlane/actions/build_mac_app.rb +46 -0
- data/fastlane/lib/fastlane/actions/cocoapods.rb +2 -2
- data/fastlane/lib/fastlane/actions/create_pull_request.rb +71 -2
- data/fastlane/lib/fastlane/actions/docs/{build_ios_app.md → build_app.md} +1 -1
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +22 -6
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +20 -4
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +10 -0
- data/fastlane/lib/fastlane/actions/ensure_git_branch.rb +1 -1
- data/fastlane/lib/fastlane/actions/ensure_xcode_version.rb +35 -7
- data/fastlane/lib/fastlane/actions/frame_screenshots.rb +2 -1
- data/fastlane/lib/fastlane/actions/get_github_release.rb +3 -0
- data/fastlane/lib/fastlane/actions/gradle.rb +43 -2
- data/fastlane/lib/fastlane/actions/gym.rb +3 -7
- data/fastlane/lib/fastlane/actions/import_from_git.rb +4 -0
- data/fastlane/lib/fastlane/actions/last_git_tag.rb +14 -5
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +9 -3
- data/fastlane/lib/fastlane/actions/notarize.rb +183 -0
- data/fastlane/lib/fastlane/actions/run_tests.rb +5 -22
- data/fastlane/lib/fastlane/actions/s3.rb +5 -291
- data/fastlane/lib/fastlane/actions/set_github_release.rb +1 -1
- data/fastlane/lib/fastlane/actions/setup_ci.rb +14 -8
- data/fastlane/lib/fastlane/actions/spm.rb +8 -0
- data/fastlane/lib/fastlane/actions/swiftlint.rb +17 -2
- data/fastlane/lib/fastlane/actions/update_plist.rb +37 -2
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +13 -3
- data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +1 -0
- data/fastlane/lib/fastlane/actions/upload_to_play_store_internal_app_sharing.rb +78 -0
- data/fastlane/lib/fastlane/fast_file.rb +13 -3
- data/fastlane/lib/fastlane/helper/adb_helper.rb +1 -1
- data/fastlane/lib/fastlane/helper/s3_client_helper.rb +56 -0
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +1 -1
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +2 -0
- data/fastlane/lib/fastlane/runner.rb +23 -18
- data/fastlane/lib/fastlane/server/socket_server_action_command_executor.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +3 -3
- data/fastlane/swift/Fastlane.swift +429 -50
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +17 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +23 -3
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/RubyCommand.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +21 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
- data/fastlane_core/lib/fastlane_core/build_watcher.rb +6 -2
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +28 -0
- data/fastlane_core/lib/fastlane_core/device_manager.rb +20 -0
- data/fastlane_core/lib/fastlane_core/helper.rb +7 -1
- data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +1 -0
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +2 -0
- data/fastlane_core/lib/fastlane_core/project.rb +27 -0
- data/frameit/lib/frameit/commands_generator.rb +25 -0
- data/frameit/lib/frameit/config_parser.rb +31 -9
- data/frameit/lib/frameit/device.rb +90 -0
- data/frameit/lib/frameit/device_types.rb +121 -5
- data/frameit/lib/frameit/editor.rb +31 -40
- data/frameit/lib/frameit/offsets.rb +8 -1
- data/frameit/lib/frameit/options.rb +81 -54
- data/frameit/lib/frameit/runner.rb +17 -7
- data/frameit/lib/frameit/screenshot.rb +35 -47
- data/frameit/lib/frameit/template_finder.rb +15 -12
- data/gym/lib/gym/code_signing_mapping.rb +32 -3
- data/gym/lib/gym/detect_values.rb +34 -2
- data/gym/lib/gym/generators/build_command_generator.rb +1 -0
- data/gym/lib/gym/generators/package_command_generator.rb +4 -0
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +47 -17
- data/gym/lib/gym/module.rb +8 -0
- data/gym/lib/gym/options.rb +25 -1
- data/gym/lib/gym/runner.rb +64 -24
- data/match/lib/match/change_password.rb +1 -1
- data/match/lib/match/encryption.rb +4 -0
- data/match/lib/match/encryption/openssl.rb +1 -1
- data/match/lib/match/generator.rb +17 -3
- data/match/lib/match/importer.rb +2 -2
- data/match/lib/match/module.rb +5 -2
- data/match/lib/match/nuke.rb +59 -17
- data/match/lib/match/options.rb +38 -15
- data/match/lib/match/runner.rb +24 -8
- data/match/lib/match/setup.rb +1 -1
- data/match/lib/match/spaceship_ensure.rb +19 -9
- data/match/lib/match/storage.rb +4 -0
- data/match/lib/match/storage/git_storage.rb +5 -2
- data/match/lib/match/storage/google_cloud_storage.rb +2 -2
- data/match/lib/match/storage/s3_storage.rb +162 -0
- data/pilot/lib/pilot/.manager.rb.swp +0 -0
- data/pilot/lib/pilot/build_manager.rb +55 -15
- data/pilot/lib/pilot/options.rb +3 -1
- data/scan/lib/scan/detect_values.rb +6 -1
- data/scan/lib/scan/manager.rb +18 -1
- data/scan/lib/scan/options.rb +28 -1
- data/scan/lib/scan/runner.rb +11 -3
- data/scan/lib/scan/slack_poster.rb +1 -1
- data/scan/lib/scan/test_command_generator.rb +9 -5
- data/screengrab/lib/screengrab/runner.rb +31 -18
- data/snapshot/lib/snapshot/fixes/simulator_shared_pasteboard.rb +16 -0
- data/snapshot/lib/snapshot/options.rb +12 -1
- data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/.DS_Store +0 -0
- data/spaceship/lib/spaceship/connect_api/models/beta_feedback.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +2 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +6 -0
- data/spaceship/lib/spaceship/portal/.certificate.rb.swp +0 -0
- data/spaceship/lib/spaceship/portal/app.rb +11 -2
- data/spaceship/lib/spaceship/tunes/iap.rb +11 -11
- data/spaceship/lib/spaceship/tunes/iap_detail.rb +7 -3
- data/spaceship/lib/spaceship/tunes/iap_families.rb +12 -1
- data/spaceship/lib/spaceship/tunes/iap_family_details.rb +26 -17
- data/spaceship/lib/spaceship/tunes/iap_status.rb +5 -1
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
- data/supply/lib/supply/client.rb +26 -0
- data/supply/lib/supply/uploader.rb +28 -0
- metadata +64 -20
@@ -441,8 +441,8 @@ func appledoc(input: Any,
|
|
441
441
|
- overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
|
442
442
|
- submitForReview: Submit the new version for Review after uploading everything
|
443
443
|
- rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
|
444
|
-
- automaticRelease: Should the app be automatically released once it's approved?
|
445
|
-
- autoReleaseDate: Date in milliseconds for automatically releasing on pending approval
|
444
|
+
- automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
|
445
|
+
- autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
|
446
446
|
- phasedRelease: Enable the phased release feature of iTC
|
447
447
|
- resetRatings: Reset the summary rating when you release a new version of the application
|
448
448
|
- priceTier: The price tier of this application
|
@@ -829,6 +829,7 @@ func buildAndUploadToAppetize(xcodebuild: [String : Any] = [:],
|
|
829
829
|
- task: The gradle task you want to execute, e.g. `assemble`, `bundle` or `test`. For tasks such as `assembleMyFlavorRelease` you should use gradle(task: 'assemble', flavor: 'Myflavor', build_type: 'Release')
|
830
830
|
- flavor: The flavor that you want the task for, e.g. `MyFlavor`. If you are running the `assemble` task in a multi-flavor project, and you rely on Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] then you must specify a flavor here or else this value will be undefined
|
831
831
|
- buildType: The build type that you want the task for, e.g. `Release`. Useful for some tasks such as `assemble`
|
832
|
+
- tasks: The multiple gradle tasks that you want to execute, e.g. `[assembleDebug, bundleDebug]`
|
832
833
|
- flags: All parameter flags you want to pass to the gradle command, e.g. `--exitcode --xml file.xml`
|
833
834
|
- projectDir: The root directory of the gradle project
|
834
835
|
- gradlePath: The path to your `gradlew`. If you specify a relative path, it is assumed to be relative to the `project_dir`
|
@@ -842,9 +843,10 @@ func buildAndUploadToAppetize(xcodebuild: [String : Any] = [:],
|
|
842
843
|
|
843
844
|
Run `./gradlew tasks` to get a list of all available gradle tasks for your project
|
844
845
|
*/
|
845
|
-
func buildAndroidApp(task: String,
|
846
|
+
func buildAndroidApp(task: String? = nil,
|
846
847
|
flavor: String? = nil,
|
847
848
|
buildType: String? = nil,
|
849
|
+
tasks: [String]? = nil,
|
848
850
|
flags: String? = nil,
|
849
851
|
projectDir: String = ".",
|
850
852
|
gradlePath: String? = nil,
|
@@ -856,6 +858,7 @@ func buildAndroidApp(task: String,
|
|
856
858
|
let command = RubyCommand(commandID: "", methodName: "build_android_app", className: nil, args: [RubyCommand.Argument(name: "task", value: task),
|
857
859
|
RubyCommand.Argument(name: "flavor", value: flavor),
|
858
860
|
RubyCommand.Argument(name: "build_type", value: buildType),
|
861
|
+
RubyCommand.Argument(name: "tasks", value: tasks),
|
859
862
|
RubyCommand.Argument(name: "flags", value: flags),
|
860
863
|
RubyCommand.Argument(name: "project_dir", value: projectDir),
|
861
864
|
RubyCommand.Argument(name: "gradle_path", value: gradlePath),
|
@@ -868,7 +871,7 @@ func buildAndroidApp(task: String,
|
|
868
871
|
}
|
869
872
|
|
870
873
|
/**
|
871
|
-
|
874
|
+
Easily build and sign your app (via _gym_)
|
872
875
|
|
873
876
|
- parameters:
|
874
877
|
- workspace: Path to the workspace file
|
@@ -881,6 +884,7 @@ func buildAndroidApp(task: String,
|
|
881
884
|
- silent: Hide all information that's not necessary while building
|
882
885
|
- codesigningIdentity: The name of the code signing identity to use. It has to match the name exactly. e.g. 'iPhone Distribution: SunApps GmbH'
|
883
886
|
- skipPackageIpa: Should we skip packaging the ipa?
|
887
|
+
- skipPackagePkg: Should we skip packaging the pkg?
|
884
888
|
- includeSymbols: Should the ipa file include symbols?
|
885
889
|
- includeBitcode: Should the ipa file include bitcode?
|
886
890
|
- exportMethod: Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id
|
@@ -889,6 +893,8 @@ func buildAndroidApp(task: String,
|
|
889
893
|
- skipBuildArchive: Export ipa from previously built xcarchive. Uses archive_path as source
|
890
894
|
- skipArchive: After building, don't archive, effectively not including -archivePath param
|
891
895
|
- skipCodesigning: Build without codesigning
|
896
|
+
- catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
|
897
|
+
- installerCertName: Full name of 3rd Party Mac Developer Installer or Deveoper ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
|
892
898
|
- buildPath: The directory in which the archive should be stored in
|
893
899
|
- archivePath: The path to the created archive
|
894
900
|
- derivedDataPath: The directory where built products and other derived data will go
|
@@ -911,6 +917,7 @@ func buildAndroidApp(task: String,
|
|
911
917
|
- analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
|
912
918
|
- xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
|
913
919
|
- skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
920
|
+
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
914
921
|
|
915
922
|
- returns: The absolute path to the generated ipa file
|
916
923
|
|
@@ -926,6 +933,7 @@ func buildApp(workspace: String? = nil,
|
|
926
933
|
silent: Bool = false,
|
927
934
|
codesigningIdentity: String? = nil,
|
928
935
|
skipPackageIpa: Bool = false,
|
936
|
+
skipPackagePkg: Bool = false,
|
929
937
|
includeSymbols: Bool? = nil,
|
930
938
|
includeBitcode: Bool? = nil,
|
931
939
|
exportMethod: String? = nil,
|
@@ -934,6 +942,8 @@ func buildApp(workspace: String? = nil,
|
|
934
942
|
skipBuildArchive: Bool? = nil,
|
935
943
|
skipArchive: Bool? = nil,
|
936
944
|
skipCodesigning: Bool? = nil,
|
945
|
+
catalystPlatform: String? = nil,
|
946
|
+
installerCertName: String? = nil,
|
937
947
|
buildPath: String? = nil,
|
938
948
|
archivePath: String? = nil,
|
939
949
|
derivedDataPath: String? = nil,
|
@@ -955,7 +965,8 @@ func buildApp(workspace: String? = nil,
|
|
955
965
|
xcprettyReportJson: String? = nil,
|
956
966
|
analyzeBuildTime: Bool? = nil,
|
957
967
|
xcprettyUtf: Bool? = nil,
|
958
|
-
skipProfileDetection: Bool = false
|
968
|
+
skipProfileDetection: Bool = false,
|
969
|
+
clonedSourcePackagesPath: String? = nil) {
|
959
970
|
let command = RubyCommand(commandID: "", methodName: "build_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
960
971
|
RubyCommand.Argument(name: "project", value: project),
|
961
972
|
RubyCommand.Argument(name: "scheme", value: scheme),
|
@@ -966,6 +977,7 @@ func buildApp(workspace: String? = nil,
|
|
966
977
|
RubyCommand.Argument(name: "silent", value: silent),
|
967
978
|
RubyCommand.Argument(name: "codesigning_identity", value: codesigningIdentity),
|
968
979
|
RubyCommand.Argument(name: "skip_package_ipa", value: skipPackageIpa),
|
980
|
+
RubyCommand.Argument(name: "skip_package_pkg", value: skipPackagePkg),
|
969
981
|
RubyCommand.Argument(name: "include_symbols", value: includeSymbols),
|
970
982
|
RubyCommand.Argument(name: "include_bitcode", value: includeBitcode),
|
971
983
|
RubyCommand.Argument(name: "export_method", value: exportMethod),
|
@@ -974,6 +986,8 @@ func buildApp(workspace: String? = nil,
|
|
974
986
|
RubyCommand.Argument(name: "skip_build_archive", value: skipBuildArchive),
|
975
987
|
RubyCommand.Argument(name: "skip_archive", value: skipArchive),
|
976
988
|
RubyCommand.Argument(name: "skip_codesigning", value: skipCodesigning),
|
989
|
+
RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
|
990
|
+
RubyCommand.Argument(name: "installer_cert_name", value: installerCertName),
|
977
991
|
RubyCommand.Argument(name: "build_path", value: buildPath),
|
978
992
|
RubyCommand.Argument(name: "archive_path", value: archivePath),
|
979
993
|
RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
|
@@ -995,12 +1009,13 @@ func buildApp(workspace: String? = nil,
|
|
995
1009
|
RubyCommand.Argument(name: "xcpretty_report_json", value: xcprettyReportJson),
|
996
1010
|
RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
|
997
1011
|
RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
|
998
|
-
RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection)
|
1012
|
+
RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
|
1013
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
|
999
1014
|
_ = runner.executeCommand(command)
|
1000
1015
|
}
|
1001
1016
|
|
1002
1017
|
/**
|
1003
|
-
|
1018
|
+
Alias for the `build_app` action but only for iOS
|
1004
1019
|
|
1005
1020
|
- parameters:
|
1006
1021
|
- workspace: Path to the workspace file
|
@@ -1043,6 +1058,7 @@ func buildApp(workspace: String? = nil,
|
|
1043
1058
|
- analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
|
1044
1059
|
- xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
|
1045
1060
|
- skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
1061
|
+
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
1046
1062
|
|
1047
1063
|
- returns: The absolute path to the generated ipa file
|
1048
1064
|
|
@@ -1087,7 +1103,8 @@ func buildIosApp(workspace: String? = nil,
|
|
1087
1103
|
xcprettyReportJson: String? = nil,
|
1088
1104
|
analyzeBuildTime: Bool? = nil,
|
1089
1105
|
xcprettyUtf: Bool? = nil,
|
1090
|
-
skipProfileDetection: Bool = false
|
1106
|
+
skipProfileDetection: Bool = false,
|
1107
|
+
clonedSourcePackagesPath: String? = nil) {
|
1091
1108
|
let command = RubyCommand(commandID: "", methodName: "build_ios_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
1092
1109
|
RubyCommand.Argument(name: "project", value: project),
|
1093
1110
|
RubyCommand.Argument(name: "scheme", value: scheme),
|
@@ -1127,7 +1144,146 @@ func buildIosApp(workspace: String? = nil,
|
|
1127
1144
|
RubyCommand.Argument(name: "xcpretty_report_json", value: xcprettyReportJson),
|
1128
1145
|
RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
|
1129
1146
|
RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
|
1130
|
-
RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection)
|
1147
|
+
RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
|
1148
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
|
1149
|
+
_ = runner.executeCommand(command)
|
1150
|
+
}
|
1151
|
+
|
1152
|
+
/**
|
1153
|
+
Alias for the `build_app` action but only for macOS
|
1154
|
+
|
1155
|
+
- parameters:
|
1156
|
+
- workspace: Path to the workspace file
|
1157
|
+
- project: Path to the project file
|
1158
|
+
- scheme: The project's scheme. Make sure it's marked as `Shared`
|
1159
|
+
- clean: Should the project be cleaned before building it?
|
1160
|
+
- outputDirectory: The directory in which the ipa file should be stored in
|
1161
|
+
- outputName: The name of the resulting ipa file
|
1162
|
+
- configuration: The configuration to use when building the app. Defaults to 'Release'
|
1163
|
+
- silent: Hide all information that's not necessary while building
|
1164
|
+
- codesigningIdentity: The name of the code signing identity to use. It has to match the name exactly. e.g. 'iPhone Distribution: SunApps GmbH'
|
1165
|
+
- skipPackagePkg: Should we skip packaging the pkg?
|
1166
|
+
- includeSymbols: Should the ipa file include symbols?
|
1167
|
+
- includeBitcode: Should the ipa file include bitcode?
|
1168
|
+
- exportMethod: Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id
|
1169
|
+
- exportOptions: Path to an export options plist or a hash with export options. Use 'xcodebuild -help' to print the full set of available options
|
1170
|
+
- exportXcargs: Pass additional arguments to xcodebuild for the package phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
|
1171
|
+
- skipBuildArchive: Export ipa from previously built xcarchive. Uses archive_path as source
|
1172
|
+
- skipArchive: After building, don't archive, effectively not including -archivePath param
|
1173
|
+
- skipCodesigning: Build without codesigning
|
1174
|
+
- installerCertName: Full name of 3rd Party Mac Developer Installer or Deveoper ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
|
1175
|
+
- buildPath: The directory in which the archive should be stored in
|
1176
|
+
- archivePath: The path to the created archive
|
1177
|
+
- derivedDataPath: The directory where built products and other derived data will go
|
1178
|
+
- resultBundle: Should an Xcode result bundle be generated in the output directory
|
1179
|
+
- resultBundlePath: Path to the result bundle directory to create. Ignored if `result_bundle` if false
|
1180
|
+
- buildlogPath: The directory where to store the build log
|
1181
|
+
- sdk: The SDK that should be used for building the application
|
1182
|
+
- toolchain: The toolchain that should be used for building the application (e.g. com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a)
|
1183
|
+
- destination: Use a custom destination for building the app
|
1184
|
+
- exportTeamId: Optional: Sometimes you need to specify a team id when exporting the ipa file
|
1185
|
+
- xcargs: Pass additional arguments to xcodebuild for the build phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
|
1186
|
+
- xcconfig: Use an extra XCCONFIG file to build your app
|
1187
|
+
- suppressXcodeOutput: Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
|
1188
|
+
- disableXcpretty: Disable xcpretty formatting of build output
|
1189
|
+
- xcprettyTestFormat: Use the test (RSpec style) format for build output
|
1190
|
+
- xcprettyFormatter: A custom xcpretty formatter to use
|
1191
|
+
- xcprettyReportJunit: Have xcpretty create a JUnit-style XML report at the provided path
|
1192
|
+
- xcprettyReportHtml: Have xcpretty create a simple HTML report at the provided path
|
1193
|
+
- xcprettyReportJson: Have xcpretty create a JSON compilation database at the provided path
|
1194
|
+
- analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
|
1195
|
+
- xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
|
1196
|
+
- skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
1197
|
+
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
1198
|
+
|
1199
|
+
- returns: The absolute path to the generated ipa file
|
1200
|
+
|
1201
|
+
More information: https://fastlane.tools/gym
|
1202
|
+
*/
|
1203
|
+
func buildMacApp(workspace: String? = nil,
|
1204
|
+
project: String? = nil,
|
1205
|
+
scheme: String? = nil,
|
1206
|
+
clean: Bool = false,
|
1207
|
+
outputDirectory: String = ".",
|
1208
|
+
outputName: String? = nil,
|
1209
|
+
configuration: String? = nil,
|
1210
|
+
silent: Bool = false,
|
1211
|
+
codesigningIdentity: String? = nil,
|
1212
|
+
skipPackagePkg: Bool = false,
|
1213
|
+
includeSymbols: Bool? = nil,
|
1214
|
+
includeBitcode: Bool? = nil,
|
1215
|
+
exportMethod: String? = nil,
|
1216
|
+
exportOptions: [String : Any]? = nil,
|
1217
|
+
exportXcargs: String? = nil,
|
1218
|
+
skipBuildArchive: Bool? = nil,
|
1219
|
+
skipArchive: Bool? = nil,
|
1220
|
+
skipCodesigning: Bool? = nil,
|
1221
|
+
installerCertName: String? = nil,
|
1222
|
+
buildPath: String? = nil,
|
1223
|
+
archivePath: String? = nil,
|
1224
|
+
derivedDataPath: String? = nil,
|
1225
|
+
resultBundle: Bool = false,
|
1226
|
+
resultBundlePath: String? = nil,
|
1227
|
+
buildlogPath: String = "~/Library/Logs/gym",
|
1228
|
+
sdk: String? = nil,
|
1229
|
+
toolchain: String? = nil,
|
1230
|
+
destination: String? = nil,
|
1231
|
+
exportTeamId: String? = nil,
|
1232
|
+
xcargs: String? = nil,
|
1233
|
+
xcconfig: String? = nil,
|
1234
|
+
suppressXcodeOutput: Bool? = nil,
|
1235
|
+
disableXcpretty: Bool? = nil,
|
1236
|
+
xcprettyTestFormat: Bool? = nil,
|
1237
|
+
xcprettyFormatter: String? = nil,
|
1238
|
+
xcprettyReportJunit: String? = nil,
|
1239
|
+
xcprettyReportHtml: String? = nil,
|
1240
|
+
xcprettyReportJson: String? = nil,
|
1241
|
+
analyzeBuildTime: Bool? = nil,
|
1242
|
+
xcprettyUtf: Bool? = nil,
|
1243
|
+
skipProfileDetection: Bool = false,
|
1244
|
+
clonedSourcePackagesPath: String? = nil) {
|
1245
|
+
let command = RubyCommand(commandID: "", methodName: "build_mac_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
1246
|
+
RubyCommand.Argument(name: "project", value: project),
|
1247
|
+
RubyCommand.Argument(name: "scheme", value: scheme),
|
1248
|
+
RubyCommand.Argument(name: "clean", value: clean),
|
1249
|
+
RubyCommand.Argument(name: "output_directory", value: outputDirectory),
|
1250
|
+
RubyCommand.Argument(name: "output_name", value: outputName),
|
1251
|
+
RubyCommand.Argument(name: "configuration", value: configuration),
|
1252
|
+
RubyCommand.Argument(name: "silent", value: silent),
|
1253
|
+
RubyCommand.Argument(name: "codesigning_identity", value: codesigningIdentity),
|
1254
|
+
RubyCommand.Argument(name: "skip_package_pkg", value: skipPackagePkg),
|
1255
|
+
RubyCommand.Argument(name: "include_symbols", value: includeSymbols),
|
1256
|
+
RubyCommand.Argument(name: "include_bitcode", value: includeBitcode),
|
1257
|
+
RubyCommand.Argument(name: "export_method", value: exportMethod),
|
1258
|
+
RubyCommand.Argument(name: "export_options", value: exportOptions),
|
1259
|
+
RubyCommand.Argument(name: "export_xcargs", value: exportXcargs),
|
1260
|
+
RubyCommand.Argument(name: "skip_build_archive", value: skipBuildArchive),
|
1261
|
+
RubyCommand.Argument(name: "skip_archive", value: skipArchive),
|
1262
|
+
RubyCommand.Argument(name: "skip_codesigning", value: skipCodesigning),
|
1263
|
+
RubyCommand.Argument(name: "installer_cert_name", value: installerCertName),
|
1264
|
+
RubyCommand.Argument(name: "build_path", value: buildPath),
|
1265
|
+
RubyCommand.Argument(name: "archive_path", value: archivePath),
|
1266
|
+
RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
|
1267
|
+
RubyCommand.Argument(name: "result_bundle", value: resultBundle),
|
1268
|
+
RubyCommand.Argument(name: "result_bundle_path", value: resultBundlePath),
|
1269
|
+
RubyCommand.Argument(name: "buildlog_path", value: buildlogPath),
|
1270
|
+
RubyCommand.Argument(name: "sdk", value: sdk),
|
1271
|
+
RubyCommand.Argument(name: "toolchain", value: toolchain),
|
1272
|
+
RubyCommand.Argument(name: "destination", value: destination),
|
1273
|
+
RubyCommand.Argument(name: "export_team_id", value: exportTeamId),
|
1274
|
+
RubyCommand.Argument(name: "xcargs", value: xcargs),
|
1275
|
+
RubyCommand.Argument(name: "xcconfig", value: xcconfig),
|
1276
|
+
RubyCommand.Argument(name: "suppress_xcode_output", value: suppressXcodeOutput),
|
1277
|
+
RubyCommand.Argument(name: "disable_xcpretty", value: disableXcpretty),
|
1278
|
+
RubyCommand.Argument(name: "xcpretty_test_format", value: xcprettyTestFormat),
|
1279
|
+
RubyCommand.Argument(name: "xcpretty_formatter", value: xcprettyFormatter),
|
1280
|
+
RubyCommand.Argument(name: "xcpretty_report_junit", value: xcprettyReportJunit),
|
1281
|
+
RubyCommand.Argument(name: "xcpretty_report_html", value: xcprettyReportHtml),
|
1282
|
+
RubyCommand.Argument(name: "xcpretty_report_json", value: xcprettyReportJson),
|
1283
|
+
RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
|
1284
|
+
RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
|
1285
|
+
RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
|
1286
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
|
1131
1287
|
_ = runner.executeCommand(command)
|
1132
1288
|
}
|
1133
1289
|
|
@@ -1305,6 +1461,8 @@ func captureAndroidScreenshots(androidHome: String? = nil,
|
|
1305
1461
|
- testTargetName: The name of the target you want to test (if you desire to override the Target Application from Xcode)
|
1306
1462
|
- namespaceLogFiles: Separate the log files per device and per language
|
1307
1463
|
- concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
|
1464
|
+
- disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
|
1465
|
+
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
1308
1466
|
*/
|
1309
1467
|
func captureIosScreenshots(workspace: String? = nil,
|
1310
1468
|
project: String? = nil,
|
@@ -1339,7 +1497,9 @@ func captureIosScreenshots(workspace: String? = nil,
|
|
1339
1497
|
resultBundle: Bool = false,
|
1340
1498
|
testTargetName: String? = nil,
|
1341
1499
|
namespaceLogFiles: Any? = nil,
|
1342
|
-
concurrentSimulators: Bool = true
|
1500
|
+
concurrentSimulators: Bool = true,
|
1501
|
+
disableSlideToType: Bool = false,
|
1502
|
+
clonedSourcePackagesPath: String? = nil) {
|
1343
1503
|
let command = RubyCommand(commandID: "", methodName: "capture_ios_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
1344
1504
|
RubyCommand.Argument(name: "project", value: project),
|
1345
1505
|
RubyCommand.Argument(name: "xcargs", value: xcargs),
|
@@ -1373,7 +1533,9 @@ func captureIosScreenshots(workspace: String? = nil,
|
|
1373
1533
|
RubyCommand.Argument(name: "result_bundle", value: resultBundle),
|
1374
1534
|
RubyCommand.Argument(name: "test_target_name", value: testTargetName),
|
1375
1535
|
RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles),
|
1376
|
-
RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators)
|
1536
|
+
RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
|
1537
|
+
RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
|
1538
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
|
1377
1539
|
_ = runner.executeCommand(command)
|
1378
1540
|
}
|
1379
1541
|
|
@@ -1415,6 +1577,8 @@ func captureIosScreenshots(workspace: String? = nil,
|
|
1415
1577
|
- testTargetName: The name of the target you want to test (if you desire to override the Target Application from Xcode)
|
1416
1578
|
- namespaceLogFiles: Separate the log files per device and per language
|
1417
1579
|
- concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
|
1580
|
+
- disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
|
1581
|
+
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
1418
1582
|
*/
|
1419
1583
|
func captureScreenshots(workspace: String? = nil,
|
1420
1584
|
project: String? = nil,
|
@@ -1449,7 +1613,9 @@ func captureScreenshots(workspace: String? = nil,
|
|
1449
1613
|
resultBundle: Bool = false,
|
1450
1614
|
testTargetName: String? = nil,
|
1451
1615
|
namespaceLogFiles: Any? = nil,
|
1452
|
-
concurrentSimulators: Bool = true
|
1616
|
+
concurrentSimulators: Bool = true,
|
1617
|
+
disableSlideToType: Bool = false,
|
1618
|
+
clonedSourcePackagesPath: String? = nil) {
|
1453
1619
|
let command = RubyCommand(commandID: "", methodName: "capture_screenshots", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
1454
1620
|
RubyCommand.Argument(name: "project", value: project),
|
1455
1621
|
RubyCommand.Argument(name: "xcargs", value: xcargs),
|
@@ -1483,7 +1649,9 @@ func captureScreenshots(workspace: String? = nil,
|
|
1483
1649
|
RubyCommand.Argument(name: "result_bundle", value: resultBundle),
|
1484
1650
|
RubyCommand.Argument(name: "test_target_name", value: testTargetName),
|
1485
1651
|
RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles),
|
1486
|
-
RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators)
|
1652
|
+
RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
|
1653
|
+
RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
|
1654
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
|
1487
1655
|
_ = runner.executeCommand(command)
|
1488
1656
|
}
|
1489
1657
|
|
@@ -1560,6 +1728,7 @@ func carthage(command: String = "bootstrap",
|
|
1560
1728
|
|
1561
1729
|
- parameters:
|
1562
1730
|
- development: Create a development certificate instead of a distribution one
|
1731
|
+
- type: Create specific certificate type (takes precedence over :development)
|
1563
1732
|
- force: Create a certificate even if an existing certificate exists
|
1564
1733
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
1565
1734
|
- username: Your Apple ID Username
|
@@ -1575,6 +1744,7 @@ func carthage(command: String = "bootstrap",
|
|
1575
1744
|
Use this action to download the latest code signing identity.
|
1576
1745
|
*/
|
1577
1746
|
func cert(development: Bool = false,
|
1747
|
+
type: String? = nil,
|
1578
1748
|
force: Bool = false,
|
1579
1749
|
generateAppleCerts: Bool = true,
|
1580
1750
|
username: String,
|
@@ -1584,8 +1754,9 @@ func cert(development: Bool = false,
|
|
1584
1754
|
outputPath: String = ".",
|
1585
1755
|
keychainPath: String,
|
1586
1756
|
keychainPassword: String? = nil,
|
1587
|
-
platform:
|
1757
|
+
platform: String = "ios") {
|
1588
1758
|
let command = RubyCommand(commandID: "", methodName: "cert", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
|
1759
|
+
RubyCommand.Argument(name: "type", value: type),
|
1589
1760
|
RubyCommand.Argument(name: "force", value: force),
|
1590
1761
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
1591
1762
|
RubyCommand.Argument(name: "username", value: username),
|
@@ -2142,10 +2313,13 @@ func createKeychain(name: String? = nil,
|
|
2142
2313
|
- title: The title of the pull request
|
2143
2314
|
- body: The contents of the pull request
|
2144
2315
|
- labels: The labels for the pull request
|
2316
|
+
- milestone: The milestone ID (Integer) for the pull request
|
2145
2317
|
- head: The name of the branch where your changes are implemented (defaults to the current branch name)
|
2146
2318
|
- base: The name of the branch you want your changes pulled into (defaults to `master`)
|
2147
2319
|
- apiUrl: The URL of GitHub API - used when the Enterprise (default to `https://api.github.com`)
|
2148
2320
|
- assignees: The assignees for the pull request
|
2321
|
+
- reviewers: The reviewers (slug) for the pull request
|
2322
|
+
- teamReviewers: The team reviewers (slug) for the pull request
|
2149
2323
|
|
2150
2324
|
- returns: The pull request URL when successful
|
2151
2325
|
*/
|
@@ -2154,19 +2328,25 @@ func createPullRequest(apiToken: String,
|
|
2154
2328
|
title: String,
|
2155
2329
|
body: String? = nil,
|
2156
2330
|
labels: [String]? = nil,
|
2331
|
+
milestone: String? = nil,
|
2157
2332
|
head: String? = nil,
|
2158
2333
|
base: String = "master",
|
2159
2334
|
apiUrl: String = "https://api.github.com",
|
2160
|
-
assignees: [String]? = nil
|
2335
|
+
assignees: [String]? = nil,
|
2336
|
+
reviewers: [String]? = nil,
|
2337
|
+
teamReviewers: [String]? = nil) {
|
2161
2338
|
let command = RubyCommand(commandID: "", methodName: "create_pull_request", className: nil, args: [RubyCommand.Argument(name: "api_token", value: apiToken),
|
2162
2339
|
RubyCommand.Argument(name: "repo", value: repo),
|
2163
2340
|
RubyCommand.Argument(name: "title", value: title),
|
2164
2341
|
RubyCommand.Argument(name: "body", value: body),
|
2165
2342
|
RubyCommand.Argument(name: "labels", value: labels),
|
2343
|
+
RubyCommand.Argument(name: "milestone", value: milestone),
|
2166
2344
|
RubyCommand.Argument(name: "head", value: head),
|
2167
2345
|
RubyCommand.Argument(name: "base", value: base),
|
2168
2346
|
RubyCommand.Argument(name: "api_url", value: apiUrl),
|
2169
|
-
RubyCommand.Argument(name: "assignees", value: assignees)
|
2347
|
+
RubyCommand.Argument(name: "assignees", value: assignees),
|
2348
|
+
RubyCommand.Argument(name: "reviewers", value: reviewers),
|
2349
|
+
RubyCommand.Argument(name: "team_reviewers", value: teamReviewers)])
|
2170
2350
|
_ = runner.executeCommand(command)
|
2171
2351
|
}
|
2172
2352
|
|
@@ -2269,8 +2449,8 @@ func deleteKeychain(name: String? = nil,
|
|
2269
2449
|
- overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
|
2270
2450
|
- submitForReview: Submit the new version for Review after uploading everything
|
2271
2451
|
- rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
|
2272
|
-
- automaticRelease: Should the app be automatically released once it's approved?
|
2273
|
-
- autoReleaseDate: Date in milliseconds for automatically releasing on pending approval
|
2452
|
+
- automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
|
2453
|
+
- autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
|
2274
2454
|
- phasedRelease: Enable the phased release feature of iTC
|
2275
2455
|
- resetRatings: Reset the summary rating when you release a new version of the application
|
2276
2456
|
- priceTier: The price tier of this application
|
@@ -2577,7 +2757,7 @@ func downloadDsyms(username: String,
|
|
2577
2757
|
func downloadFromPlayStore(packageName: String,
|
2578
2758
|
versionName: String? = nil,
|
2579
2759
|
track: String = "production",
|
2580
|
-
metadataPath: String
|
2760
|
+
metadataPath: String = "./metadata",
|
2581
2761
|
key: String? = nil,
|
2582
2762
|
issuer: String? = nil,
|
2583
2763
|
jsonKey: String? = nil,
|
@@ -2652,7 +2832,7 @@ func ensureEnvVars(envVars: [String]) {
|
|
2652
2832
|
/**
|
2653
2833
|
Raises an exception if not on a specific git branch
|
2654
2834
|
|
2655
|
-
- parameter branch: The branch that should be checked for. String that can be either the full name of the branch or a regex to match
|
2835
|
+
- parameter branch: The branch that should be checked for. String that can be either the full name of the branch or a regex e.g. `^feature/.*$` to match
|
2656
2836
|
|
2657
2837
|
This action will check if your git repo is checked out to a specific branch.
|
2658
2838
|
You may only want to make releases from a specific branch, so `ensure_git_branch` will stop a lane if it was accidentally executed on an incorrect branch.
|
@@ -2712,14 +2892,19 @@ func ensureNoDebugCode(text: String,
|
|
2712
2892
|
/**
|
2713
2893
|
Ensure the right version of Xcode is used
|
2714
2894
|
|
2715
|
-
-
|
2895
|
+
- parameters:
|
2896
|
+
- version: Xcode version to verify that is selected
|
2897
|
+
- strict: Should the version be verified strictly (all 3 version numbers), or matching only the given version numbers (i.e. `11.3` == `11.3.x`)
|
2716
2898
|
|
2717
2899
|
If building your app requires a specific version of Xcode, you can invoke this command before using gym.
|
2718
2900
|
For example, to ensure that a beta version of Xcode is not accidentally selected to build, which would make uploading to TestFlight fail.
|
2719
2901
|
You can either manually provide a specific version using `version: ` or you make use of the `.xcode-version` file.
|
2902
|
+
Using the `strict` parameter, you can either verify the full set of version numbers strictly (i.e. `11.3.1`) or only a subset of them (i.e. `11.3` or `11`).
|
2720
2903
|
*/
|
2721
|
-
func ensureXcodeVersion(version: String? = nil
|
2722
|
-
|
2904
|
+
func ensureXcodeVersion(version: String? = nil,
|
2905
|
+
strict: Bool = true) {
|
2906
|
+
let command = RubyCommand(commandID: "", methodName: "ensure_xcode_version", className: nil, args: [RubyCommand.Argument(name: "version", value: version),
|
2907
|
+
RubyCommand.Argument(name: "strict", value: strict)])
|
2723
2908
|
_ = runner.executeCommand(command)
|
2724
2909
|
}
|
2725
2910
|
|
@@ -2801,10 +2986,15 @@ func flock(message: String,
|
|
2801
2986
|
- forceDeviceType: Forces a given device type, useful for Mac screenshots, as their sizes vary
|
2802
2987
|
- useLegacyIphone5s: Use iPhone 5s instead of iPhone SE frames
|
2803
2988
|
- useLegacyIphone6s: Use iPhone 6s frames instead of iPhone 7 frames
|
2989
|
+
- useLegacyIphone7: Use iPhone 7 frames instead of iPhone 8 frames
|
2804
2990
|
- useLegacyIphonex: Use iPhone X instead of iPhone XS frames
|
2991
|
+
- useLegacyIphonexr: Use iPhone XR instead of iPhone 11 frames
|
2992
|
+
- useLegacyIphonexs: Use iPhone XS instead of iPhone 11 Pro frames
|
2993
|
+
- useLegacyIphonexsmax: Use iPhone XS Max instead of iPhone 11 Pro Max frames
|
2805
2994
|
- forceOrientationBlock: [Advanced] A block to customize your screenshots' device orientation
|
2806
2995
|
- debugMode: Output debug information in framed screenshots
|
2807
2996
|
- resume: Resume frameit instead of reprocessing all screenshots
|
2997
|
+
- usePlatform: Choose a platform, the valid options are IOS, ANDROID and ANY (IOS is default to ensure backward compatibility)
|
2808
2998
|
- path: The path to the directory containing the screenshots
|
2809
2999
|
|
2810
3000
|
Uses [frameit](https://docs.fastlane.tools/actions/frameit/) to prepare perfect screenshots for the App Store, your website, QA or emails.
|
@@ -2817,10 +3007,15 @@ func frameScreenshots(white: Bool? = nil,
|
|
2817
3007
|
forceDeviceType: String? = nil,
|
2818
3008
|
useLegacyIphone5s: Bool = false,
|
2819
3009
|
useLegacyIphone6s: Bool = false,
|
3010
|
+
useLegacyIphone7: Bool = false,
|
2820
3011
|
useLegacyIphonex: Bool = false,
|
3012
|
+
useLegacyIphonexr: Bool = false,
|
3013
|
+
useLegacyIphonexs: Bool = false,
|
3014
|
+
useLegacyIphonexsmax: Bool = false,
|
2821
3015
|
forceOrientationBlock: String? = nil,
|
2822
3016
|
debugMode: Bool = false,
|
2823
3017
|
resume: Bool = false,
|
3018
|
+
usePlatform: String = "IOS",
|
2824
3019
|
path: String = "./") {
|
2825
3020
|
let command = RubyCommand(commandID: "", methodName: "frame_screenshots", className: nil, args: [RubyCommand.Argument(name: "white", value: white),
|
2826
3021
|
RubyCommand.Argument(name: "silver", value: silver),
|
@@ -2829,10 +3024,15 @@ func frameScreenshots(white: Bool? = nil,
|
|
2829
3024
|
RubyCommand.Argument(name: "force_device_type", value: forceDeviceType),
|
2830
3025
|
RubyCommand.Argument(name: "use_legacy_iphone5s", value: useLegacyIphone5s),
|
2831
3026
|
RubyCommand.Argument(name: "use_legacy_iphone6s", value: useLegacyIphone6s),
|
3027
|
+
RubyCommand.Argument(name: "use_legacy_iphone7", value: useLegacyIphone7),
|
2832
3028
|
RubyCommand.Argument(name: "use_legacy_iphonex", value: useLegacyIphonex),
|
3029
|
+
RubyCommand.Argument(name: "use_legacy_iphonexr", value: useLegacyIphonexr),
|
3030
|
+
RubyCommand.Argument(name: "use_legacy_iphonexs", value: useLegacyIphonexs),
|
3031
|
+
RubyCommand.Argument(name: "use_legacy_iphonexsmax", value: useLegacyIphonexsmax),
|
2833
3032
|
RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock),
|
2834
3033
|
RubyCommand.Argument(name: "debug_mode", value: debugMode),
|
2835
3034
|
RubyCommand.Argument(name: "resume", value: resume),
|
3035
|
+
RubyCommand.Argument(name: "use_platform", value: usePlatform),
|
2836
3036
|
RubyCommand.Argument(name: "path", value: path)])
|
2837
3037
|
_ = runner.executeCommand(command)
|
2838
3038
|
}
|
@@ -2848,10 +3048,15 @@ func frameScreenshots(white: Bool? = nil,
|
|
2848
3048
|
- forceDeviceType: Forces a given device type, useful for Mac screenshots, as their sizes vary
|
2849
3049
|
- useLegacyIphone5s: Use iPhone 5s instead of iPhone SE frames
|
2850
3050
|
- useLegacyIphone6s: Use iPhone 6s frames instead of iPhone 7 frames
|
3051
|
+
- useLegacyIphone7: Use iPhone 7 frames instead of iPhone 8 frames
|
2851
3052
|
- useLegacyIphonex: Use iPhone X instead of iPhone XS frames
|
3053
|
+
- useLegacyIphonexr: Use iPhone XR instead of iPhone 11 frames
|
3054
|
+
- useLegacyIphonexs: Use iPhone XS instead of iPhone 11 Pro frames
|
3055
|
+
- useLegacyIphonexsmax: Use iPhone XS Max instead of iPhone 11 Pro Max frames
|
2852
3056
|
- forceOrientationBlock: [Advanced] A block to customize your screenshots' device orientation
|
2853
3057
|
- debugMode: Output debug information in framed screenshots
|
2854
3058
|
- resume: Resume frameit instead of reprocessing all screenshots
|
3059
|
+
- usePlatform: Choose a platform, the valid options are IOS, ANDROID and ANY (IOS is default to ensure backward compatibility)
|
2855
3060
|
- path: The path to the directory containing the screenshots
|
2856
3061
|
|
2857
3062
|
Uses [frameit](https://docs.fastlane.tools/actions/frameit/) to prepare perfect screenshots for the App Store, your website, QA or emails.
|
@@ -2864,10 +3069,15 @@ func frameit(white: Bool? = nil,
|
|
2864
3069
|
forceDeviceType: String? = nil,
|
2865
3070
|
useLegacyIphone5s: Bool = false,
|
2866
3071
|
useLegacyIphone6s: Bool = false,
|
3072
|
+
useLegacyIphone7: Bool = false,
|
2867
3073
|
useLegacyIphonex: Bool = false,
|
3074
|
+
useLegacyIphonexr: Bool = false,
|
3075
|
+
useLegacyIphonexs: Bool = false,
|
3076
|
+
useLegacyIphonexsmax: Bool = false,
|
2868
3077
|
forceOrientationBlock: String? = nil,
|
2869
3078
|
debugMode: Bool = false,
|
2870
3079
|
resume: Bool = false,
|
3080
|
+
usePlatform: String = "IOS",
|
2871
3081
|
path: String = "./") {
|
2872
3082
|
let command = RubyCommand(commandID: "", methodName: "frameit", className: nil, args: [RubyCommand.Argument(name: "white", value: white),
|
2873
3083
|
RubyCommand.Argument(name: "silver", value: silver),
|
@@ -2876,10 +3086,15 @@ func frameit(white: Bool? = nil,
|
|
2876
3086
|
RubyCommand.Argument(name: "force_device_type", value: forceDeviceType),
|
2877
3087
|
RubyCommand.Argument(name: "use_legacy_iphone5s", value: useLegacyIphone5s),
|
2878
3088
|
RubyCommand.Argument(name: "use_legacy_iphone6s", value: useLegacyIphone6s),
|
3089
|
+
RubyCommand.Argument(name: "use_legacy_iphone7", value: useLegacyIphone7),
|
2879
3090
|
RubyCommand.Argument(name: "use_legacy_iphonex", value: useLegacyIphonex),
|
3091
|
+
RubyCommand.Argument(name: "use_legacy_iphonexr", value: useLegacyIphonexr),
|
3092
|
+
RubyCommand.Argument(name: "use_legacy_iphonexs", value: useLegacyIphonexs),
|
3093
|
+
RubyCommand.Argument(name: "use_legacy_iphonexsmax", value: useLegacyIphonexsmax),
|
2880
3094
|
RubyCommand.Argument(name: "force_orientation_block", value: forceOrientationBlock),
|
2881
3095
|
RubyCommand.Argument(name: "debug_mode", value: debugMode),
|
2882
3096
|
RubyCommand.Argument(name: "resume", value: resume),
|
3097
|
+
RubyCommand.Argument(name: "use_platform", value: usePlatform),
|
2883
3098
|
RubyCommand.Argument(name: "path", value: path)])
|
2884
3099
|
_ = runner.executeCommand(command)
|
2885
3100
|
}
|
@@ -2932,6 +3147,7 @@ func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
|
|
2932
3147
|
|
2933
3148
|
- parameters:
|
2934
3149
|
- development: Create a development certificate instead of a distribution one
|
3150
|
+
- type: Create specific certificate type (takes precedence over :development)
|
2935
3151
|
- force: Create a certificate even if an existing certificate exists
|
2936
3152
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
2937
3153
|
- username: Your Apple ID Username
|
@@ -2947,6 +3163,7 @@ func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
|
|
2947
3163
|
Use this action to download the latest code signing identity.
|
2948
3164
|
*/
|
2949
3165
|
func getCertificates(development: Bool = false,
|
3166
|
+
type: String? = nil,
|
2950
3167
|
force: Bool = false,
|
2951
3168
|
generateAppleCerts: Bool = true,
|
2952
3169
|
username: String,
|
@@ -2956,8 +3173,9 @@ func getCertificates(development: Bool = false,
|
|
2956
3173
|
outputPath: String = ".",
|
2957
3174
|
keychainPath: String,
|
2958
3175
|
keychainPassword: String? = nil,
|
2959
|
-
platform:
|
3176
|
+
platform: String = "ios") {
|
2960
3177
|
let command = RubyCommand(commandID: "", methodName: "get_certificates", className: nil, args: [RubyCommand.Argument(name: "development", value: development),
|
3178
|
+
RubyCommand.Argument(name: "type", value: type),
|
2961
3179
|
RubyCommand.Argument(name: "force", value: force),
|
2962
3180
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
2963
3181
|
RubyCommand.Argument(name: "username", value: username),
|
@@ -3419,6 +3637,7 @@ func googlePlayTrackVersionCodes(packageName: String,
|
|
3419
3637
|
- task: The gradle task you want to execute, e.g. `assemble`, `bundle` or `test`. For tasks such as `assembleMyFlavorRelease` you should use gradle(task: 'assemble', flavor: 'Myflavor', build_type: 'Release')
|
3420
3638
|
- flavor: The flavor that you want the task for, e.g. `MyFlavor`. If you are running the `assemble` task in a multi-flavor project, and you rely on Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] then you must specify a flavor here or else this value will be undefined
|
3421
3639
|
- buildType: The build type that you want the task for, e.g. `Release`. Useful for some tasks such as `assemble`
|
3640
|
+
- tasks: The multiple gradle tasks that you want to execute, e.g. `[assembleDebug, bundleDebug]`
|
3422
3641
|
- flags: All parameter flags you want to pass to the gradle command, e.g. `--exitcode --xml file.xml`
|
3423
3642
|
- projectDir: The root directory of the gradle project
|
3424
3643
|
- gradlePath: The path to your `gradlew`. If you specify a relative path, it is assumed to be relative to the `project_dir`
|
@@ -3432,9 +3651,10 @@ func googlePlayTrackVersionCodes(packageName: String,
|
|
3432
3651
|
|
3433
3652
|
Run `./gradlew tasks` to get a list of all available gradle tasks for your project
|
3434
3653
|
*/
|
3435
|
-
func gradle(task: String,
|
3654
|
+
func gradle(task: String? = nil,
|
3436
3655
|
flavor: String? = nil,
|
3437
3656
|
buildType: String? = nil,
|
3657
|
+
tasks: [String]? = nil,
|
3438
3658
|
flags: String? = nil,
|
3439
3659
|
projectDir: String = ".",
|
3440
3660
|
gradlePath: String? = nil,
|
@@ -3446,6 +3666,7 @@ func gradle(task: String,
|
|
3446
3666
|
let command = RubyCommand(commandID: "", methodName: "gradle", className: nil, args: [RubyCommand.Argument(name: "task", value: task),
|
3447
3667
|
RubyCommand.Argument(name: "flavor", value: flavor),
|
3448
3668
|
RubyCommand.Argument(name: "build_type", value: buildType),
|
3669
|
+
RubyCommand.Argument(name: "tasks", value: tasks),
|
3449
3670
|
RubyCommand.Argument(name: "flags", value: flags),
|
3450
3671
|
RubyCommand.Argument(name: "project_dir", value: projectDir),
|
3451
3672
|
RubyCommand.Argument(name: "gradle_path", value: gradlePath),
|
@@ -3458,7 +3679,7 @@ func gradle(task: String,
|
|
3458
3679
|
}
|
3459
3680
|
|
3460
3681
|
/**
|
3461
|
-
Alias for the `
|
3682
|
+
Alias for the `build_app` action
|
3462
3683
|
|
3463
3684
|
- parameters:
|
3464
3685
|
- workspace: Path to the workspace file
|
@@ -3471,6 +3692,7 @@ func gradle(task: String,
|
|
3471
3692
|
- silent: Hide all information that's not necessary while building
|
3472
3693
|
- codesigningIdentity: The name of the code signing identity to use. It has to match the name exactly. e.g. 'iPhone Distribution: SunApps GmbH'
|
3473
3694
|
- skipPackageIpa: Should we skip packaging the ipa?
|
3695
|
+
- skipPackagePkg: Should we skip packaging the pkg?
|
3474
3696
|
- includeSymbols: Should the ipa file include symbols?
|
3475
3697
|
- includeBitcode: Should the ipa file include bitcode?
|
3476
3698
|
- exportMethod: Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id
|
@@ -3479,6 +3701,8 @@ func gradle(task: String,
|
|
3479
3701
|
- skipBuildArchive: Export ipa from previously built xcarchive. Uses archive_path as source
|
3480
3702
|
- skipArchive: After building, don't archive, effectively not including -archivePath param
|
3481
3703
|
- skipCodesigning: Build without codesigning
|
3704
|
+
- catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
|
3705
|
+
- installerCertName: Full name of 3rd Party Mac Developer Installer or Deveoper ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`
|
3482
3706
|
- buildPath: The directory in which the archive should be stored in
|
3483
3707
|
- archivePath: The path to the created archive
|
3484
3708
|
- derivedDataPath: The directory where built products and other derived data will go
|
@@ -3501,6 +3725,7 @@ func gradle(task: String,
|
|
3501
3725
|
- analyzeBuildTime: Analyze the project build time and store the output in 'culprits.txt' file
|
3502
3726
|
- xcprettyUtf: Have xcpretty use unicode encoding when reporting builds
|
3503
3727
|
- skipProfileDetection: Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
|
3728
|
+
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
3504
3729
|
|
3505
3730
|
- returns: The absolute path to the generated ipa file
|
3506
3731
|
|
@@ -3516,6 +3741,7 @@ func gym(workspace: Any? = gymfile.workspace,
|
|
3516
3741
|
silent: Bool = gymfile.silent,
|
3517
3742
|
codesigningIdentity: Any? = gymfile.codesigningIdentity,
|
3518
3743
|
skipPackageIpa: Bool = gymfile.skipPackageIpa,
|
3744
|
+
skipPackagePkg: Bool = gymfile.skipPackagePkg,
|
3519
3745
|
includeSymbols: Bool? = gymfile.includeSymbols,
|
3520
3746
|
includeBitcode: Bool? = gymfile.includeBitcode,
|
3521
3747
|
exportMethod: Any? = gymfile.exportMethod,
|
@@ -3524,6 +3750,8 @@ func gym(workspace: Any? = gymfile.workspace,
|
|
3524
3750
|
skipBuildArchive: Bool? = gymfile.skipBuildArchive,
|
3525
3751
|
skipArchive: Bool? = gymfile.skipArchive,
|
3526
3752
|
skipCodesigning: Bool? = gymfile.skipCodesigning,
|
3753
|
+
catalystPlatform: Any? = gymfile.catalystPlatform,
|
3754
|
+
installerCertName: Any? = gymfile.installerCertName,
|
3527
3755
|
buildPath: Any? = gymfile.buildPath,
|
3528
3756
|
archivePath: Any? = gymfile.archivePath,
|
3529
3757
|
derivedDataPath: Any? = gymfile.derivedDataPath,
|
@@ -3545,7 +3773,8 @@ func gym(workspace: Any? = gymfile.workspace,
|
|
3545
3773
|
xcprettyReportJson: Any? = gymfile.xcprettyReportJson,
|
3546
3774
|
analyzeBuildTime: Bool? = gymfile.analyzeBuildTime,
|
3547
3775
|
xcprettyUtf: Bool? = gymfile.xcprettyUtf,
|
3548
|
-
skipProfileDetection: Bool = gymfile.skipProfileDetection
|
3776
|
+
skipProfileDetection: Bool = gymfile.skipProfileDetection,
|
3777
|
+
clonedSourcePackagesPath: Any? = gymfile.clonedSourcePackagesPath) {
|
3549
3778
|
let command = RubyCommand(commandID: "", methodName: "gym", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
3550
3779
|
RubyCommand.Argument(name: "project", value: project),
|
3551
3780
|
RubyCommand.Argument(name: "scheme", value: scheme),
|
@@ -3556,6 +3785,7 @@ func gym(workspace: Any? = gymfile.workspace,
|
|
3556
3785
|
RubyCommand.Argument(name: "silent", value: silent),
|
3557
3786
|
RubyCommand.Argument(name: "codesigning_identity", value: codesigningIdentity),
|
3558
3787
|
RubyCommand.Argument(name: "skip_package_ipa", value: skipPackageIpa),
|
3788
|
+
RubyCommand.Argument(name: "skip_package_pkg", value: skipPackagePkg),
|
3559
3789
|
RubyCommand.Argument(name: "include_symbols", value: includeSymbols),
|
3560
3790
|
RubyCommand.Argument(name: "include_bitcode", value: includeBitcode),
|
3561
3791
|
RubyCommand.Argument(name: "export_method", value: exportMethod),
|
@@ -3564,6 +3794,8 @@ func gym(workspace: Any? = gymfile.workspace,
|
|
3564
3794
|
RubyCommand.Argument(name: "skip_build_archive", value: skipBuildArchive),
|
3565
3795
|
RubyCommand.Argument(name: "skip_archive", value: skipArchive),
|
3566
3796
|
RubyCommand.Argument(name: "skip_codesigning", value: skipCodesigning),
|
3797
|
+
RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
|
3798
|
+
RubyCommand.Argument(name: "installer_cert_name", value: installerCertName),
|
3567
3799
|
RubyCommand.Argument(name: "build_path", value: buildPath),
|
3568
3800
|
RubyCommand.Argument(name: "archive_path", value: archivePath),
|
3569
3801
|
RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
|
@@ -3585,7 +3817,8 @@ func gym(workspace: Any? = gymfile.workspace,
|
|
3585
3817
|
RubyCommand.Argument(name: "xcpretty_report_json", value: xcprettyReportJson),
|
3586
3818
|
RubyCommand.Argument(name: "analyze_build_time", value: analyzeBuildTime),
|
3587
3819
|
RubyCommand.Argument(name: "xcpretty_utf", value: xcprettyUtf),
|
3588
|
-
RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection)
|
3820
|
+
RubyCommand.Argument(name: "skip_profile_detection", value: skipProfileDetection),
|
3821
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
|
3589
3822
|
_ = runner.executeCommand(command)
|
3590
3823
|
}
|
3591
3824
|
|
@@ -4077,10 +4310,13 @@ func jira(url: String,
|
|
4077
4310
|
/**
|
4078
4311
|
Get the most recent git tag
|
4079
4312
|
|
4313
|
+
- 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
|
4314
|
+
|
4080
4315
|
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')`.
|
4316
|
+
Pattern parameter allows you to filter to a subset of tags.
|
4081
4317
|
*/
|
4082
|
-
@discardableResult func lastGitTag() -> String {
|
4083
|
-
let command = RubyCommand(commandID: "", methodName: "last_git_tag", className: nil, args: [])
|
4318
|
+
@discardableResult func lastGitTag(pattern: String? = nil) -> String {
|
4319
|
+
let command = RubyCommand(commandID: "", methodName: "last_git_tag", className: nil, args: [RubyCommand.Argument(name: "pattern", value: pattern)])
|
4084
4320
|
return runner.executeCommand(command)
|
4085
4321
|
}
|
4086
4322
|
|
@@ -4217,7 +4453,8 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4217
4453
|
Alias for the `sync_code_signing` action
|
4218
4454
|
|
4219
4455
|
- parameters:
|
4220
|
-
- type: Define the profile type, can be appstore, adhoc, development, enterprise
|
4456
|
+
- type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id
|
4457
|
+
- additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
|
4221
4458
|
- readonly: Only fetch existing certificates and profiles, don't generate new ones
|
4222
4459
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
4223
4460
|
- skipProvisioningProfiles: Skip syncing provisioning profiles
|
@@ -4237,13 +4474,17 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4237
4474
|
- googleCloudBucketName: Name of the Google Cloud Storage bucket to use
|
4238
4475
|
- googleCloudKeysFile: Path to the gc_keys.json file
|
4239
4476
|
- googleCloudProjectId: ID of the Google Cloud project to use for authentication
|
4477
|
+
- s3Region: Name of the S3 region
|
4478
|
+
- s3AccessKey: S3 access key
|
4479
|
+
- s3SecretAccessKey: S3 secret secret access key
|
4480
|
+
- s3Bucket: Name of the S3 bucket
|
4240
4481
|
- keychainName: Keychain the items should be imported to
|
4241
4482
|
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password
|
4242
4483
|
- force: Renew the provisioning profiles every time you run match
|
4243
4484
|
- forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
|
4244
4485
|
- skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
|
4245
4486
|
- skipDocs: Skip generation of a README.md for the created git repository
|
4246
|
-
- platform: Set the provisioning profile's platform to work with (i.e. ios, tvos)
|
4487
|
+
- platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
|
4247
4488
|
- templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
|
4248
4489
|
- outputPath: Path in which to export certificates, key and profile
|
4249
4490
|
- verbose: Print out extra information and all commands
|
@@ -4251,6 +4492,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4251
4492
|
More information: https://docs.fastlane.tools/actions/match/
|
4252
4493
|
*/
|
4253
4494
|
func match(type: Any = matchfile.type,
|
4495
|
+
additionalCertTypes: [String]? = matchfile.additionalCertTypes,
|
4254
4496
|
readonly: Bool = matchfile.readonly,
|
4255
4497
|
generateAppleCerts: Bool = matchfile.generateAppleCerts,
|
4256
4498
|
skipProvisioningProfiles: Bool = matchfile.skipProvisioningProfiles,
|
@@ -4270,6 +4512,10 @@ func match(type: Any = matchfile.type,
|
|
4270
4512
|
googleCloudBucketName: Any? = matchfile.googleCloudBucketName,
|
4271
4513
|
googleCloudKeysFile: Any? = matchfile.googleCloudKeysFile,
|
4272
4514
|
googleCloudProjectId: Any? = matchfile.googleCloudProjectId,
|
4515
|
+
s3Region: Any? = matchfile.s3Region,
|
4516
|
+
s3AccessKey: Any? = matchfile.s3AccessKey,
|
4517
|
+
s3SecretAccessKey: Any? = matchfile.s3SecretAccessKey,
|
4518
|
+
s3Bucket: Any? = matchfile.s3Bucket,
|
4273
4519
|
keychainName: Any = matchfile.keychainName,
|
4274
4520
|
keychainPassword: Any? = matchfile.keychainPassword,
|
4275
4521
|
force: Bool = matchfile.force,
|
@@ -4281,6 +4527,7 @@ func match(type: Any = matchfile.type,
|
|
4281
4527
|
outputPath: Any? = matchfile.outputPath,
|
4282
4528
|
verbose: Bool = matchfile.verbose) {
|
4283
4529
|
let command = RubyCommand(commandID: "", methodName: "match", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
|
4530
|
+
RubyCommand.Argument(name: "additional_cert_types", value: additionalCertTypes),
|
4284
4531
|
RubyCommand.Argument(name: "readonly", value: readonly),
|
4285
4532
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
4286
4533
|
RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
|
@@ -4300,6 +4547,10 @@ func match(type: Any = matchfile.type,
|
|
4300
4547
|
RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
|
4301
4548
|
RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
|
4302
4549
|
RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
|
4550
|
+
RubyCommand.Argument(name: "s3_region", value: s3Region),
|
4551
|
+
RubyCommand.Argument(name: "s3_access_key", value: s3AccessKey),
|
4552
|
+
RubyCommand.Argument(name: "s3_secret_access_key", value: s3SecretAccessKey),
|
4553
|
+
RubyCommand.Argument(name: "s3_bucket", value: s3Bucket),
|
4303
4554
|
RubyCommand.Argument(name: "keychain_name", value: keychainName),
|
4304
4555
|
RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
|
4305
4556
|
RubyCommand.Argument(name: "force", value: force),
|
@@ -4408,6 +4659,35 @@ func nexusUpload(file: String,
|
|
4408
4659
|
_ = runner.executeCommand(command)
|
4409
4660
|
}
|
4410
4661
|
|
4662
|
+
/**
|
4663
|
+
Notarizes a macOS app
|
4664
|
+
|
4665
|
+
- parameters:
|
4666
|
+
- package: Path to package to notarize, e.g. .app bundle or disk image
|
4667
|
+
- tryEarlyStapling: Whether to try early stapling while the notarization request is in progress
|
4668
|
+
- bundleId: Bundle identifier to uniquely identify the package
|
4669
|
+
- username: Apple ID username
|
4670
|
+
- ascProvider: Provider short name for accounts associated with multiple providers
|
4671
|
+
- printLog: Whether to print notarization log file, listing issues on failure and warnings on success
|
4672
|
+
- verbose: Whether to log requests
|
4673
|
+
*/
|
4674
|
+
func notarize(package: String,
|
4675
|
+
tryEarlyStapling: Bool = false,
|
4676
|
+
bundleId: String? = nil,
|
4677
|
+
username: String,
|
4678
|
+
ascProvider: String? = nil,
|
4679
|
+
printLog: Bool = false,
|
4680
|
+
verbose: Bool = false) {
|
4681
|
+
let command = RubyCommand(commandID: "", methodName: "notarize", className: nil, args: [RubyCommand.Argument(name: "package", value: package),
|
4682
|
+
RubyCommand.Argument(name: "try_early_stapling", value: tryEarlyStapling),
|
4683
|
+
RubyCommand.Argument(name: "bundle_id", value: bundleId),
|
4684
|
+
RubyCommand.Argument(name: "username", value: username),
|
4685
|
+
RubyCommand.Argument(name: "asc_provider", value: ascProvider),
|
4686
|
+
RubyCommand.Argument(name: "print_log", value: printLog),
|
4687
|
+
RubyCommand.Argument(name: "verbose", value: verbose)])
|
4688
|
+
_ = runner.executeCommand(command)
|
4689
|
+
}
|
4690
|
+
|
4411
4691
|
/**
|
4412
4692
|
Display a macOS notification with custom message and title
|
4413
4693
|
|
@@ -4667,7 +4947,7 @@ func pem(development: Bool = false,
|
|
4667
4947
|
- localizedBuildInfo: Localized beta app test info for what's new
|
4668
4948
|
- 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
4949
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
4670
|
-
- skipWaitingForBuildProcessing:
|
4950
|
+
- 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
4951
|
- 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
4952
|
- 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
4953
|
- distributeExternal: Should the build be distributed to external testers?
|
@@ -5354,6 +5634,7 @@ func rubyVersion() {
|
|
5354
5634
|
- skipDetectDevices: Should skip auto detecting of devices if none were specified
|
5355
5635
|
- forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
|
5356
5636
|
- resetSimulator: Enabling this option will automatically erase the simulator before running the application
|
5637
|
+
- disableSlideToType: Enabling this option will disable the simulator from showing the 'Slide to type' prompt
|
5357
5638
|
- prelaunchSimulator: Enabling this option will launch the first simulator prior to calling any xcodebuild command
|
5358
5639
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
5359
5640
|
- appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
|
@@ -5379,6 +5660,7 @@ func rubyVersion() {
|
|
5379
5660
|
- shouldZipBuildProducts: Should zip the derived data build products and place in output path?
|
5380
5661
|
- resultBundle: Should an Xcode result bundle be generated in the output directory
|
5381
5662
|
- useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
|
5663
|
+
- concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
|
5382
5664
|
- maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
|
5383
5665
|
- disableConcurrentTesting: Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing
|
5384
5666
|
- skipBuild: Should debug build be skipped before test build?
|
@@ -5388,6 +5670,8 @@ func rubyVersion() {
|
|
5388
5670
|
- configuration: The configuration to use when building the app. Defaults to 'Release'
|
5389
5671
|
- xcargs: Pass additional arguments to xcodebuild. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
|
5390
5672
|
- xcconfig: Use an extra XCCONFIG file to build your app
|
5673
|
+
- appName: App name to use in slack message and logfile name
|
5674
|
+
- deploymentTargetVersion: Target version of the app being build or tested. Used to filter out simulator version
|
5391
5675
|
- slackUrl: Create an Incoming WebHook for your Slack group to post results there
|
5392
5676
|
- slackChannel: #channel or @username
|
5393
5677
|
- slackMessage: The message included with each message posted to slack
|
@@ -5399,6 +5683,7 @@ func rubyVersion() {
|
|
5399
5683
|
- destination: Use only if you're a pro, use the other options instead
|
5400
5684
|
- customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
|
5401
5685
|
- xcodebuildCommand: Allows for override of the default `xcodebuild` command
|
5686
|
+
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
5402
5687
|
- failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
|
5403
5688
|
|
5404
5689
|
More information: https://docs.fastlane.tools/actions/scan/
|
@@ -5411,6 +5696,7 @@ func runTests(workspace: String? = nil,
|
|
5411
5696
|
skipDetectDevices: Bool = false,
|
5412
5697
|
forceQuitSimulator: Bool = false,
|
5413
5698
|
resetSimulator: Bool = false,
|
5699
|
+
disableSlideToType: Bool = true,
|
5414
5700
|
prelaunchSimulator: Bool? = nil,
|
5415
5701
|
reinstallApp: Bool = false,
|
5416
5702
|
appIdentifier: String? = nil,
|
@@ -5436,6 +5722,7 @@ func runTests(workspace: String? = nil,
|
|
5436
5722
|
shouldZipBuildProducts: Bool = false,
|
5437
5723
|
resultBundle: Bool = false,
|
5438
5724
|
useClangReportName: Bool = false,
|
5725
|
+
concurrentWorkers: Int? = nil,
|
5439
5726
|
maxConcurrentSimulators: Int? = nil,
|
5440
5727
|
disableConcurrentTesting: Bool = false,
|
5441
5728
|
skipBuild: Bool = false,
|
@@ -5445,6 +5732,8 @@ func runTests(workspace: String? = nil,
|
|
5445
5732
|
configuration: String? = nil,
|
5446
5733
|
xcargs: String? = nil,
|
5447
5734
|
xcconfig: String? = nil,
|
5735
|
+
appName: String? = nil,
|
5736
|
+
deploymentTargetVersion: String? = nil,
|
5448
5737
|
slackUrl: String? = nil,
|
5449
5738
|
slackChannel: String? = nil,
|
5450
5739
|
slackMessage: String? = nil,
|
@@ -5456,6 +5745,7 @@ func runTests(workspace: String? = nil,
|
|
5456
5745
|
destination: Any? = nil,
|
5457
5746
|
customReportFileName: String? = nil,
|
5458
5747
|
xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
|
5748
|
+
clonedSourcePackagesPath: String? = nil,
|
5459
5749
|
failBuild: Bool = true) {
|
5460
5750
|
let command = RubyCommand(commandID: "", methodName: "run_tests", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
5461
5751
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -5465,6 +5755,7 @@ func runTests(workspace: String? = nil,
|
|
5465
5755
|
RubyCommand.Argument(name: "skip_detect_devices", value: skipDetectDevices),
|
5466
5756
|
RubyCommand.Argument(name: "force_quit_simulator", value: forceQuitSimulator),
|
5467
5757
|
RubyCommand.Argument(name: "reset_simulator", value: resetSimulator),
|
5758
|
+
RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
|
5468
5759
|
RubyCommand.Argument(name: "prelaunch_simulator", value: prelaunchSimulator),
|
5469
5760
|
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
5470
5761
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
@@ -5490,6 +5781,7 @@ func runTests(workspace: String? = nil,
|
|
5490
5781
|
RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
|
5491
5782
|
RubyCommand.Argument(name: "result_bundle", value: resultBundle),
|
5492
5783
|
RubyCommand.Argument(name: "use_clang_report_name", value: useClangReportName),
|
5784
|
+
RubyCommand.Argument(name: "concurrent_workers", value: concurrentWorkers),
|
5493
5785
|
RubyCommand.Argument(name: "max_concurrent_simulators", value: maxConcurrentSimulators),
|
5494
5786
|
RubyCommand.Argument(name: "disable_concurrent_testing", value: disableConcurrentTesting),
|
5495
5787
|
RubyCommand.Argument(name: "skip_build", value: skipBuild),
|
@@ -5499,6 +5791,8 @@ func runTests(workspace: String? = nil,
|
|
5499
5791
|
RubyCommand.Argument(name: "configuration", value: configuration),
|
5500
5792
|
RubyCommand.Argument(name: "xcargs", value: xcargs),
|
5501
5793
|
RubyCommand.Argument(name: "xcconfig", value: xcconfig),
|
5794
|
+
RubyCommand.Argument(name: "app_name", value: appName),
|
5795
|
+
RubyCommand.Argument(name: "deployment_target_version", value: deploymentTargetVersion),
|
5502
5796
|
RubyCommand.Argument(name: "slack_url", value: slackUrl),
|
5503
5797
|
RubyCommand.Argument(name: "slack_channel", value: slackChannel),
|
5504
5798
|
RubyCommand.Argument(name: "slack_message", value: slackMessage),
|
@@ -5510,6 +5804,7 @@ func runTests(workspace: String? = nil,
|
|
5510
5804
|
RubyCommand.Argument(name: "destination", value: destination),
|
5511
5805
|
RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
|
5512
5806
|
RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
|
5807
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
|
5513
5808
|
RubyCommand.Argument(name: "fail_build", value: failBuild)])
|
5514
5809
|
_ = runner.executeCommand(command)
|
5515
5810
|
}
|
@@ -5600,6 +5895,7 @@ func say(text: Any,
|
|
5600
5895
|
- skipDetectDevices: Should skip auto detecting of devices if none were specified
|
5601
5896
|
- forceQuitSimulator: Enabling this option will automatically killall Simulator processes before the run
|
5602
5897
|
- resetSimulator: Enabling this option will automatically erase the simulator before running the application
|
5898
|
+
- disableSlideToType: Enabling this option will disable the simulator from showing the 'Slide to type' prompt
|
5603
5899
|
- prelaunchSimulator: Enabling this option will launch the first simulator prior to calling any xcodebuild command
|
5604
5900
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
5605
5901
|
- appIdentifier: The bundle identifier of the app to uninstall (only needed when enabling reinstall_app)
|
@@ -5625,6 +5921,7 @@ func say(text: Any,
|
|
5625
5921
|
- shouldZipBuildProducts: Should zip the derived data build products and place in output path?
|
5626
5922
|
- resultBundle: Should an Xcode result bundle be generated in the output directory
|
5627
5923
|
- useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
|
5924
|
+
- concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
|
5628
5925
|
- maxConcurrentSimulators: Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations
|
5629
5926
|
- disableConcurrentTesting: Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing
|
5630
5927
|
- skipBuild: Should debug build be skipped before test build?
|
@@ -5634,6 +5931,8 @@ func say(text: Any,
|
|
5634
5931
|
- configuration: The configuration to use when building the app. Defaults to 'Release'
|
5635
5932
|
- xcargs: Pass additional arguments to xcodebuild. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC -lstdc++"
|
5636
5933
|
- xcconfig: Use an extra XCCONFIG file to build your app
|
5934
|
+
- appName: App name to use in slack message and logfile name
|
5935
|
+
- deploymentTargetVersion: Target version of the app being build or tested. Used to filter out simulator version
|
5637
5936
|
- slackUrl: Create an Incoming WebHook for your Slack group to post results there
|
5638
5937
|
- slackChannel: #channel or @username
|
5639
5938
|
- slackMessage: The message included with each message posted to slack
|
@@ -5645,6 +5944,7 @@ func say(text: Any,
|
|
5645
5944
|
- destination: Use only if you're a pro, use the other options instead
|
5646
5945
|
- customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
|
5647
5946
|
- xcodebuildCommand: Allows for override of the default `xcodebuild` command
|
5947
|
+
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
5648
5948
|
- failBuild: Should this step stop the build if the tests fail? Set this to false if you're using trainer
|
5649
5949
|
|
5650
5950
|
More information: https://docs.fastlane.tools/actions/scan/
|
@@ -5657,6 +5957,7 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5657
5957
|
skipDetectDevices: Bool = scanfile.skipDetectDevices,
|
5658
5958
|
forceQuitSimulator: Bool = scanfile.forceQuitSimulator,
|
5659
5959
|
resetSimulator: Bool = scanfile.resetSimulator,
|
5960
|
+
disableSlideToType: Bool = scanfile.disableSlideToType,
|
5660
5961
|
prelaunchSimulator: Bool? = scanfile.prelaunchSimulator,
|
5661
5962
|
reinstallApp: Bool = scanfile.reinstallApp,
|
5662
5963
|
appIdentifier: Any? = scanfile.appIdentifier,
|
@@ -5682,6 +5983,7 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5682
5983
|
shouldZipBuildProducts: Bool = scanfile.shouldZipBuildProducts,
|
5683
5984
|
resultBundle: Bool = scanfile.resultBundle,
|
5684
5985
|
useClangReportName: Bool = scanfile.useClangReportName,
|
5986
|
+
concurrentWorkers: Int? = scanfile.concurrentWorkers,
|
5685
5987
|
maxConcurrentSimulators: Int? = scanfile.maxConcurrentSimulators,
|
5686
5988
|
disableConcurrentTesting: Bool = scanfile.disableConcurrentTesting,
|
5687
5989
|
skipBuild: Bool = scanfile.skipBuild,
|
@@ -5691,6 +5993,8 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5691
5993
|
configuration: Any? = scanfile.configuration,
|
5692
5994
|
xcargs: Any? = scanfile.xcargs,
|
5693
5995
|
xcconfig: Any? = scanfile.xcconfig,
|
5996
|
+
appName: Any? = scanfile.appName,
|
5997
|
+
deploymentTargetVersion: Any? = scanfile.deploymentTargetVersion,
|
5694
5998
|
slackUrl: Any? = scanfile.slackUrl,
|
5695
5999
|
slackChannel: Any? = scanfile.slackChannel,
|
5696
6000
|
slackMessage: Any? = scanfile.slackMessage,
|
@@ -5702,6 +6006,7 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5702
6006
|
destination: Any? = scanfile.destination,
|
5703
6007
|
customReportFileName: Any? = scanfile.customReportFileName,
|
5704
6008
|
xcodebuildCommand: Any = scanfile.xcodebuildCommand,
|
6009
|
+
clonedSourcePackagesPath: Any? = scanfile.clonedSourcePackagesPath,
|
5705
6010
|
failBuild: Bool = scanfile.failBuild) {
|
5706
6011
|
let command = RubyCommand(commandID: "", methodName: "scan", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
5707
6012
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -5711,6 +6016,7 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5711
6016
|
RubyCommand.Argument(name: "skip_detect_devices", value: skipDetectDevices),
|
5712
6017
|
RubyCommand.Argument(name: "force_quit_simulator", value: forceQuitSimulator),
|
5713
6018
|
RubyCommand.Argument(name: "reset_simulator", value: resetSimulator),
|
6019
|
+
RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
|
5714
6020
|
RubyCommand.Argument(name: "prelaunch_simulator", value: prelaunchSimulator),
|
5715
6021
|
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
5716
6022
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
@@ -5736,6 +6042,7 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5736
6042
|
RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
|
5737
6043
|
RubyCommand.Argument(name: "result_bundle", value: resultBundle),
|
5738
6044
|
RubyCommand.Argument(name: "use_clang_report_name", value: useClangReportName),
|
6045
|
+
RubyCommand.Argument(name: "concurrent_workers", value: concurrentWorkers),
|
5739
6046
|
RubyCommand.Argument(name: "max_concurrent_simulators", value: maxConcurrentSimulators),
|
5740
6047
|
RubyCommand.Argument(name: "disable_concurrent_testing", value: disableConcurrentTesting),
|
5741
6048
|
RubyCommand.Argument(name: "skip_build", value: skipBuild),
|
@@ -5745,6 +6052,8 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5745
6052
|
RubyCommand.Argument(name: "configuration", value: configuration),
|
5746
6053
|
RubyCommand.Argument(name: "xcargs", value: xcargs),
|
5747
6054
|
RubyCommand.Argument(name: "xcconfig", value: xcconfig),
|
6055
|
+
RubyCommand.Argument(name: "app_name", value: appName),
|
6056
|
+
RubyCommand.Argument(name: "deployment_target_version", value: deploymentTargetVersion),
|
5748
6057
|
RubyCommand.Argument(name: "slack_url", value: slackUrl),
|
5749
6058
|
RubyCommand.Argument(name: "slack_channel", value: slackChannel),
|
5750
6059
|
RubyCommand.Argument(name: "slack_message", value: slackMessage),
|
@@ -5756,6 +6065,7 @@ func scan(workspace: Any? = scanfile.workspace,
|
|
5756
6065
|
RubyCommand.Argument(name: "destination", value: destination),
|
5757
6066
|
RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
|
5758
6067
|
RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
|
6068
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
|
5759
6069
|
RubyCommand.Argument(name: "fail_build", value: failBuild)])
|
5760
6070
|
_ = runner.executeCommand(command)
|
5761
6071
|
}
|
@@ -5942,7 +6252,7 @@ Access things like 'html_url', 'tag_name', 'name', 'body'
|
|
5942
6252
|
description: String? = nil,
|
5943
6253
|
isDraft: Bool = false,
|
5944
6254
|
isPrerelease: Bool = false,
|
5945
|
-
uploadAssets: [String]? = nil) -> [String :
|
6255
|
+
uploadAssets: [String]? = nil) -> [String : Any] {
|
5946
6256
|
let command = RubyCommand(commandID: "", methodName: "set_github_release", className: nil, args: [RubyCommand.Argument(name: "repository_name", value: repositoryName),
|
5947
6257
|
RubyCommand.Argument(name: "server_url", value: serverUrl),
|
5948
6258
|
RubyCommand.Argument(name: "api_token", value: apiToken),
|
@@ -6006,7 +6316,7 @@ func setPodKey(useBundleExec: Bool = true,
|
|
6006
6316
|
|
6007
6317
|
- parameters:
|
6008
6318
|
- force: Force setup, even if not executed by CI
|
6009
|
-
- provider: CI provider
|
6319
|
+
- provider: CI provider. If none is set, the provider is detected automatically
|
6010
6320
|
|
6011
6321
|
- Creates a new temporary keychain for use with match|
|
6012
6322
|
- Switches match to `readonly` mode to not create new profiles/cert on CI|
|
@@ -6429,6 +6739,8 @@ func slather(buildDirectory: String? = nil,
|
|
6429
6739
|
- testTargetName: The name of the target you want to test (if you desire to override the Target Application from Xcode)
|
6430
6740
|
- namespaceLogFiles: Separate the log files per device and per language
|
6431
6741
|
- concurrentSimulators: Take snapshots on multiple simulators concurrently. Note: This option is only applicable when running against Xcode 9
|
6742
|
+
- disableSlideToType: Disable the simulator from showing the 'Slide to type' prompt
|
6743
|
+
- clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
|
6432
6744
|
*/
|
6433
6745
|
func snapshot(workspace: Any? = snapshotfile.workspace,
|
6434
6746
|
project: Any? = snapshotfile.project,
|
@@ -6463,7 +6775,9 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
|
|
6463
6775
|
resultBundle: Bool = snapshotfile.resultBundle,
|
6464
6776
|
testTargetName: Any? = snapshotfile.testTargetName,
|
6465
6777
|
namespaceLogFiles: Any? = snapshotfile.namespaceLogFiles,
|
6466
|
-
concurrentSimulators: Bool = snapshotfile.concurrentSimulators
|
6778
|
+
concurrentSimulators: Bool = snapshotfile.concurrentSimulators,
|
6779
|
+
disableSlideToType: Bool = snapshotfile.disableSlideToType,
|
6780
|
+
clonedSourcePackagesPath: Any? = snapshotfile.clonedSourcePackagesPath) {
|
6467
6781
|
let command = RubyCommand(commandID: "", methodName: "snapshot", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
6468
6782
|
RubyCommand.Argument(name: "project", value: project),
|
6469
6783
|
RubyCommand.Argument(name: "xcargs", value: xcargs),
|
@@ -6497,7 +6811,9 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
|
|
6497
6811
|
RubyCommand.Argument(name: "result_bundle", value: resultBundle),
|
6498
6812
|
RubyCommand.Argument(name: "test_target_name", value: testTargetName),
|
6499
6813
|
RubyCommand.Argument(name: "namespace_log_files", value: namespaceLogFiles),
|
6500
|
-
RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators)
|
6814
|
+
RubyCommand.Argument(name: "concurrent_simulators", value: concurrentSimulators),
|
6815
|
+
RubyCommand.Argument(name: "disable_slide_to_type", value: disableSlideToType),
|
6816
|
+
RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath)])
|
6501
6817
|
_ = runner.executeCommand(command)
|
6502
6818
|
}
|
6503
6819
|
|
@@ -6629,6 +6945,7 @@ func splunkmint(dsym: String? = nil,
|
|
6629
6945
|
- xcconfig: Use xcconfig file to override swift package generate-xcodeproj defaults
|
6630
6946
|
- configuration: Build with configuration (debug|release) [default: debug]
|
6631
6947
|
- xcprettyOutput: Specifies the output type for xcpretty. eg. 'test', or 'simple'
|
6948
|
+
- xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf'), requires xcpretty_output to be specified also
|
6632
6949
|
- verbose: Increase verbosity of informational output
|
6633
6950
|
*/
|
6634
6951
|
func spm(command: String = "build",
|
@@ -6637,6 +6954,7 @@ func spm(command: String = "build",
|
|
6637
6954
|
xcconfig: String? = nil,
|
6638
6955
|
configuration: String? = nil,
|
6639
6956
|
xcprettyOutput: String? = nil,
|
6957
|
+
xcprettyArgs: String? = nil,
|
6640
6958
|
verbose: Bool = false) {
|
6641
6959
|
let command = RubyCommand(commandID: "", methodName: "spm", className: nil, args: [RubyCommand.Argument(name: "command", value: command),
|
6642
6960
|
RubyCommand.Argument(name: "build_path", value: buildPath),
|
@@ -6644,6 +6962,7 @@ func spm(command: String = "build",
|
|
6644
6962
|
RubyCommand.Argument(name: "xcconfig", value: xcconfig),
|
6645
6963
|
RubyCommand.Argument(name: "configuration", value: configuration),
|
6646
6964
|
RubyCommand.Argument(name: "xcpretty_output", value: xcprettyOutput),
|
6965
|
+
RubyCommand.Argument(name: "xcpretty_args", value: xcprettyArgs),
|
6647
6966
|
RubyCommand.Argument(name: "verbose", value: verbose)])
|
6648
6967
|
_ = runner.executeCommand(command)
|
6649
6968
|
}
|
@@ -6723,7 +7042,7 @@ func supply(packageName: String,
|
|
6723
7042
|
releaseStatus: String = "completed",
|
6724
7043
|
track: String = "production",
|
6725
7044
|
rollout: String? = nil,
|
6726
|
-
metadataPath: String
|
7045
|
+
metadataPath: String = "./metadata",
|
6727
7046
|
key: String? = nil,
|
6728
7047
|
issuer: String? = nil,
|
6729
7048
|
jsonKey: String? = nil,
|
@@ -6799,7 +7118,8 @@ func supply(packageName: String,
|
|
6799
7118
|
- strict: Fail on warnings? (true/false)
|
6800
7119
|
- files: List of files to process
|
6801
7120
|
- ignoreExitStatus: Ignore the exit status of the SwiftLint command, so that serious violations don't fail the build (true/false)
|
6802
|
-
-
|
7121
|
+
- raiseIfSwiftlintError: Raises an error if swiftlint fails, so you can fail CI/CD jobs if necessary (true/false)
|
7122
|
+
- reporter: Choose output reporter. Available: xcode, json, csv, checkstyle, junit, html, emoji, sonarqube, markdown, github-actions-logging
|
6803
7123
|
- quiet: Don't print status logs like 'Linting <file>' & 'Done linting'
|
6804
7124
|
- executable: Path to the `swiftlint` executable on your machine
|
6805
7125
|
- format: Format code when mode is :autocorrect
|
@@ -6812,6 +7132,7 @@ func swiftlint(mode: Any = "lint",
|
|
6812
7132
|
strict: Bool = false,
|
6813
7133
|
files: Any? = nil,
|
6814
7134
|
ignoreExitStatus: Bool = false,
|
7135
|
+
raiseIfSwiftlintError: Bool = false,
|
6815
7136
|
reporter: String? = nil,
|
6816
7137
|
quiet: Bool = false,
|
6817
7138
|
executable: String? = nil,
|
@@ -6824,6 +7145,7 @@ func swiftlint(mode: Any = "lint",
|
|
6824
7145
|
RubyCommand.Argument(name: "strict", value: strict),
|
6825
7146
|
RubyCommand.Argument(name: "files", value: files),
|
6826
7147
|
RubyCommand.Argument(name: "ignore_exit_status", value: ignoreExitStatus),
|
7148
|
+
RubyCommand.Argument(name: "raise_if_swiftlint_error", value: raiseIfSwiftlintError),
|
6827
7149
|
RubyCommand.Argument(name: "reporter", value: reporter),
|
6828
7150
|
RubyCommand.Argument(name: "quiet", value: quiet),
|
6829
7151
|
RubyCommand.Argument(name: "executable", value: executable),
|
@@ -6836,7 +7158,8 @@ func swiftlint(mode: Any = "lint",
|
|
6836
7158
|
Easily sync your certificates and profiles across your team (via _match_)
|
6837
7159
|
|
6838
7160
|
- parameters:
|
6839
|
-
- type: Define the profile type, can be appstore, adhoc, development, enterprise
|
7161
|
+
- type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id
|
7162
|
+
- additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
|
6840
7163
|
- readonly: Only fetch existing certificates and profiles, don't generate new ones
|
6841
7164
|
- generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
|
6842
7165
|
- skipProvisioningProfiles: Skip syncing provisioning profiles
|
@@ -6856,13 +7179,17 @@ func swiftlint(mode: Any = "lint",
|
|
6856
7179
|
- googleCloudBucketName: Name of the Google Cloud Storage bucket to use
|
6857
7180
|
- googleCloudKeysFile: Path to the gc_keys.json file
|
6858
7181
|
- googleCloudProjectId: ID of the Google Cloud project to use for authentication
|
7182
|
+
- s3Region: Name of the S3 region
|
7183
|
+
- s3AccessKey: S3 access key
|
7184
|
+
- s3SecretAccessKey: S3 secret secret access key
|
7185
|
+
- s3Bucket: Name of the S3 bucket
|
6859
7186
|
- keychainName: Keychain the items should be imported to
|
6860
7187
|
- keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password
|
6861
7188
|
- force: Renew the provisioning profiles every time you run match
|
6862
7189
|
- forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
|
6863
7190
|
- skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
|
6864
7191
|
- skipDocs: Skip generation of a README.md for the created git repository
|
6865
|
-
- platform: Set the provisioning profile's platform to work with (i.e. ios, tvos)
|
7192
|
+
- platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos)
|
6866
7193
|
- templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
|
6867
7194
|
- outputPath: Path in which to export certificates, key and profile
|
6868
7195
|
- verbose: Print out extra information and all commands
|
@@ -6870,6 +7197,7 @@ func swiftlint(mode: Any = "lint",
|
|
6870
7197
|
More information: https://docs.fastlane.tools/actions/match/
|
6871
7198
|
*/
|
6872
7199
|
func syncCodeSigning(type: String = "development",
|
7200
|
+
additionalCertTypes: [String]? = nil,
|
6873
7201
|
readonly: Bool = false,
|
6874
7202
|
generateAppleCerts: Bool = true,
|
6875
7203
|
skipProvisioningProfiles: Bool = false,
|
@@ -6889,17 +7217,22 @@ func syncCodeSigning(type: String = "development",
|
|
6889
7217
|
googleCloudBucketName: String? = nil,
|
6890
7218
|
googleCloudKeysFile: String? = nil,
|
6891
7219
|
googleCloudProjectId: String? = nil,
|
7220
|
+
s3Region: String? = nil,
|
7221
|
+
s3AccessKey: String? = nil,
|
7222
|
+
s3SecretAccessKey: String? = nil,
|
7223
|
+
s3Bucket: String? = nil,
|
6892
7224
|
keychainName: String = "login.keychain",
|
6893
7225
|
keychainPassword: String? = nil,
|
6894
7226
|
force: Bool = false,
|
6895
7227
|
forceForNewDevices: Bool = false,
|
6896
7228
|
skipConfirmation: Bool = false,
|
6897
7229
|
skipDocs: Bool = false,
|
6898
|
-
platform:
|
7230
|
+
platform: String = "ios",
|
6899
7231
|
templateName: String? = nil,
|
6900
7232
|
outputPath: String? = nil,
|
6901
7233
|
verbose: Bool = false) {
|
6902
7234
|
let command = RubyCommand(commandID: "", methodName: "sync_code_signing", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
|
7235
|
+
RubyCommand.Argument(name: "additional_cert_types", value: additionalCertTypes),
|
6903
7236
|
RubyCommand.Argument(name: "readonly", value: readonly),
|
6904
7237
|
RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
|
6905
7238
|
RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
|
@@ -6919,6 +7252,10 @@ func syncCodeSigning(type: String = "development",
|
|
6919
7252
|
RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
|
6920
7253
|
RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
|
6921
7254
|
RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
|
7255
|
+
RubyCommand.Argument(name: "s3_region", value: s3Region),
|
7256
|
+
RubyCommand.Argument(name: "s3_access_key", value: s3AccessKey),
|
7257
|
+
RubyCommand.Argument(name: "s3_secret_access_key", value: s3SecretAccessKey),
|
7258
|
+
RubyCommand.Argument(name: "s3_bucket", value: s3Bucket),
|
6922
7259
|
RubyCommand.Argument(name: "keychain_name", value: keychainName),
|
6923
7260
|
RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
|
6924
7261
|
RubyCommand.Argument(name: "force", value: force),
|
@@ -7014,7 +7351,7 @@ func testfairy(apiKey: String,
|
|
7014
7351
|
- localizedBuildInfo: Localized beta app test info for what's new
|
7015
7352
|
- 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
7353
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
7017
|
-
- skipWaitingForBuildProcessing:
|
7354
|
+
- 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
7355
|
- 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
7356
|
- 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
7357
|
- distributeExternal: Should the build be distributed to external testers?
|
@@ -7316,7 +7653,7 @@ func updateKeychainAccessGroups(entitlementsFile: String,
|
|
7316
7653
|
- plistPath: Path to plist file
|
7317
7654
|
- block: A block to process plist with custom logic
|
7318
7655
|
|
7319
|
-
This action allows you to modify any `plist` file.
|
7656
|
+
This action allows you to modify any value inside any `plist` file.
|
7320
7657
|
*/
|
7321
7658
|
func updatePlist(plistPath: String? = nil,
|
7322
7659
|
block: Any) {
|
@@ -7453,6 +7790,7 @@ func updateUrlSchemes(path: String,
|
|
7453
7790
|
- dsymPaths: Paths to the DSYM files or zips to upload
|
7454
7791
|
- apiToken: Crashlytics API Key
|
7455
7792
|
- gspPath: Path to GoogleService-Info.plist
|
7793
|
+
- appId: Firebase Crashlytics APP ID
|
7456
7794
|
- binaryPath: The path to the upload-symbols file of the Fabric app
|
7457
7795
|
- platform: The platform of the app (ios, appletvos, mac)
|
7458
7796
|
- dsymWorkerThreads: The number of threads to use for simultaneous dSYM upload
|
@@ -7463,6 +7801,7 @@ func uploadSymbolsToCrashlytics(dsymPath: String = "./spec/fixtures/dSYM/Themoji
|
|
7463
7801
|
dsymPaths: [String]? = nil,
|
7464
7802
|
apiToken: String? = nil,
|
7465
7803
|
gspPath: String? = nil,
|
7804
|
+
appId: String? = nil,
|
7466
7805
|
binaryPath: String? = nil,
|
7467
7806
|
platform: String = "ios",
|
7468
7807
|
dsymWorkerThreads: Int = 1) {
|
@@ -7470,6 +7809,7 @@ func uploadSymbolsToCrashlytics(dsymPath: String = "./spec/fixtures/dSYM/Themoji
|
|
7470
7809
|
RubyCommand.Argument(name: "dsym_paths", value: dsymPaths),
|
7471
7810
|
RubyCommand.Argument(name: "api_token", value: apiToken),
|
7472
7811
|
RubyCommand.Argument(name: "gsp_path", value: gspPath),
|
7812
|
+
RubyCommand.Argument(name: "app_id", value: appId),
|
7473
7813
|
RubyCommand.Argument(name: "binary_path", value: binaryPath),
|
7474
7814
|
RubyCommand.Argument(name: "platform", value: platform),
|
7475
7815
|
RubyCommand.Argument(name: "dsym_worker_threads", value: dsymWorkerThreads)])
|
@@ -7532,8 +7872,8 @@ func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/api/0",
|
|
7532
7872
|
- overwriteScreenshots: Clear all previously uploaded screenshots before uploading the new ones
|
7533
7873
|
- submitForReview: Submit the new version for Review after uploading everything
|
7534
7874
|
- rejectIfPossible: Rejects the previously submitted build if it's in a state where it's possible
|
7535
|
-
- automaticRelease: Should the app be automatically released once it's approved?
|
7536
|
-
- autoReleaseDate: Date in milliseconds for automatically releasing on pending approval
|
7875
|
+
- automaticRelease: Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
|
7876
|
+
- autoReleaseDate: Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
|
7537
7877
|
- phasedRelease: Enable the phased release feature of iTC
|
7538
7878
|
- resetRatings: Reset the summary rating when you release a new version of the application
|
7539
7879
|
- priceTier: The price tier of this application
|
@@ -7751,7 +8091,7 @@ func uploadToPlayStore(packageName: String,
|
|
7751
8091
|
releaseStatus: String = "completed",
|
7752
8092
|
track: String = "production",
|
7753
8093
|
rollout: String? = nil,
|
7754
|
-
metadataPath: String
|
8094
|
+
metadataPath: String = "./metadata",
|
7755
8095
|
key: String? = nil,
|
7756
8096
|
issuer: String? = nil,
|
7757
8097
|
jsonKey: String? = nil,
|
@@ -7816,6 +8156,45 @@ func uploadToPlayStore(packageName: String,
|
|
7816
8156
|
_ = runner.executeCommand(command)
|
7817
8157
|
}
|
7818
8158
|
|
8159
|
+
/**
|
8160
|
+
Upload binaries to Google Play Internal App Sharing (via _supply_)
|
8161
|
+
|
8162
|
+
- parameters:
|
8163
|
+
- packageName: The package name of the application to use
|
8164
|
+
- jsonKey: The path to a file containing service account JSON, used to authenticate with Google
|
8165
|
+
- jsonKeyData: The raw service account JSON data used to authenticate with Google
|
8166
|
+
- apk: Path to the APK file to upload
|
8167
|
+
- apkPaths: An array of paths to APK files to upload
|
8168
|
+
- aab: Path to the AAB file to upload
|
8169
|
+
- aabPaths: An array of paths to AAB files to upload
|
8170
|
+
- rootUrl: Root URL for the Google Play API. The provided URL will be used for API calls in place of https://www.googleapis.com/
|
8171
|
+
- timeout: Timeout for read, open, and send (in seconds)
|
8172
|
+
|
8173
|
+
- returns: Returns a string containing the download URL for the uploaded APK/AAB (or array of strings if multiple were uploaded).
|
8174
|
+
|
8175
|
+
More information: https://docs.fastlane.tools/actions/upload_to_play_store_internal_app_sharing/
|
8176
|
+
*/
|
8177
|
+
func uploadToPlayStoreInternalAppSharing(packageName: String,
|
8178
|
+
jsonKey: String? = nil,
|
8179
|
+
jsonKeyData: String? = nil,
|
8180
|
+
apk: String? = nil,
|
8181
|
+
apkPaths: [String]? = nil,
|
8182
|
+
aab: String? = nil,
|
8183
|
+
aabPaths: [String]? = nil,
|
8184
|
+
rootUrl: String? = nil,
|
8185
|
+
timeout: Int = 300) {
|
8186
|
+
let command = RubyCommand(commandID: "", methodName: "upload_to_play_store_internal_app_sharing", className: nil, args: [RubyCommand.Argument(name: "package_name", value: packageName),
|
8187
|
+
RubyCommand.Argument(name: "json_key", value: jsonKey),
|
8188
|
+
RubyCommand.Argument(name: "json_key_data", value: jsonKeyData),
|
8189
|
+
RubyCommand.Argument(name: "apk", value: apk),
|
8190
|
+
RubyCommand.Argument(name: "apk_paths", value: apkPaths),
|
8191
|
+
RubyCommand.Argument(name: "aab", value: aab),
|
8192
|
+
RubyCommand.Argument(name: "aab_paths", value: aabPaths),
|
8193
|
+
RubyCommand.Argument(name: "root_url", value: rootUrl),
|
8194
|
+
RubyCommand.Argument(name: "timeout", value: timeout)])
|
8195
|
+
_ = runner.executeCommand(command)
|
8196
|
+
}
|
8197
|
+
|
7819
8198
|
/**
|
7820
8199
|
Upload new binary to App Store Connect for TestFlight beta testing (via _pilot_)
|
7821
8200
|
|
@@ -7833,7 +8212,7 @@ func uploadToPlayStore(packageName: String,
|
|
7833
8212
|
- localizedBuildInfo: Localized beta app test info for what's new
|
7834
8213
|
- 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
8214
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
7836
|
-
- skipWaitingForBuildProcessing:
|
8215
|
+
- 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
8216
|
- 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
8217
|
- 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
8218
|
- distributeExternal: Should the build be distributed to external testers?
|
@@ -8211,7 +8590,7 @@ func xcov(workspace: String? = nil,
|
|
8211
8590
|
coverallsServiceJobId: String? = nil,
|
8212
8591
|
coverallsRepoToken: String? = nil,
|
8213
8592
|
xcconfig: String? = nil,
|
8214
|
-
ideFoundationPath: String = "/Applications/Xcode-11.2.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
8593
|
+
ideFoundationPath: String = "/Applications/Xcode-11.2.1.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
8215
8594
|
legacySupport: Bool = false) {
|
8216
8595
|
let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
8217
8596
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -8356,4 +8735,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
|
|
8356
8735
|
|
8357
8736
|
// Please don't remove the lines below
|
8358
8737
|
// They are used to detect outdated files
|
8359
|
-
// FastlaneRunnerAPIVersion [0.9.
|
8738
|
+
// FastlaneRunnerAPIVersion [0.9.71]
|