fastlane 2.97.0 → 2.98.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +72 -72
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +1 -0
- data/fastlane/lib/fastlane/actions/carthage.rb +3 -3
- data/fastlane/lib/fastlane/actions/docs/build_ios_app.md +6 -6
- data/fastlane/lib/fastlane/actions/docs/check_app_store_metadata.md +8 -8
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +13 -5
- data/fastlane/lib/fastlane/actions/docs/get_provisioning_profile.md +54 -18
- data/fastlane/lib/fastlane/actions/docs/get_push_certificate.md +39 -21
- data/fastlane/lib/fastlane/actions/docs/run_tests.md +14 -8
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +5 -5
- data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +3 -1
- data/fastlane/lib/fastlane/actions/mailgun.rb +15 -2
- data/fastlane/lib/fastlane/actions/modify_services.rb +1 -1
- data/fastlane/lib/fastlane/actions/nexus_upload.rb +63 -15
- data/fastlane/lib/fastlane/actions/unlock_keychain.rb +1 -0
- data/fastlane/lib/fastlane/documentation/markdown_docs_generator.rb +26 -0
- data/fastlane/lib/fastlane/plugins/plugin_search.rb +1 -0
- data/fastlane/lib/fastlane/plugins/plugin_update_manager.rb +1 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +20 -10
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/pilot/lib/pilot/build_manager.rb +9 -0
- data/pilot/lib/pilot/options.rb +6 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +9 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -2
- data/spaceship/lib/spaceship/portal/app_service.rb +3 -0
- data/spaceship/lib/spaceship/test_flight/build.rb +5 -0
- data/supply/lib/supply/client.rb +1 -0
- metadata +19 -25
@@ -35,7 +35,9 @@ Check out this gif:
|
|
35
35
|
|
36
36
|
# Usage
|
37
37
|
|
38
|
-
|
38
|
+
```no-highlight
|
39
|
+
fastlane pem
|
40
|
+
```
|
39
41
|
|
40
42
|
Yes, that's the whole command!
|
41
43
|
|
@@ -50,27 +52,39 @@ Note that ``_pem_`` will never revoke your existing certificates. _pem_ can't do
|
|
50
52
|
|
51
53
|
If you already have a push certificate enabled, which is active for at least 30 more days, _pem_ will not create a new certificate. If you still want to create one, use the `force`:
|
52
54
|
|
53
|
-
|
55
|
+
```no-highlight
|
56
|
+
fastlane pem --force
|
57
|
+
```
|
54
58
|
|
55
59
|
You can pass parameters like this:
|
56
60
|
|
57
|
-
|
61
|
+
```no-highlight
|
62
|
+
fastlane pem -a com.krausefx.app -u username
|
63
|
+
```
|
58
64
|
|
59
65
|
If you want to generate a development certificate instead:
|
60
66
|
|
61
|
-
|
67
|
+
```no-highlight
|
68
|
+
fastlane pem --development
|
69
|
+
```
|
62
70
|
|
63
71
|
Set a password for your `p12` file:
|
64
72
|
|
65
|
-
|
73
|
+
```no-highlight
|
74
|
+
fastlane pem -p "MyPass"
|
75
|
+
```
|
66
76
|
|
67
77
|
You can specify a name for the output file:
|
68
78
|
|
69
|
-
|
79
|
+
```no-highlight
|
80
|
+
fastlane pem -o my.pem
|
81
|
+
```
|
70
82
|
|
71
83
|
To get a list of available options run:
|
72
84
|
|
73
|
-
|
85
|
+
```no-highlight
|
86
|
+
fastlane action pem
|
87
|
+
```
|
74
88
|
|
75
89
|
|
76
90
|
### Note about empty `p12` passwords and Keychain Access.app
|
@@ -80,23 +94,27 @@ While the file is valid, the Mac's Keychain Access will not allow you to open th
|
|
80
94
|
|
81
95
|
Instead, you may verify the file is valid using OpenSSL:
|
82
96
|
|
83
|
-
|
97
|
+
```no-highlight
|
98
|
+
openssl pkcs12 -info -in my.p12
|
99
|
+
```
|
84
100
|
|
85
101
|
If you need the `p12` in your keychain, perhaps to test push with an app like [Knuff](https://github.com/KnuffApp/Knuff) or [Pusher](https://github.com/noodlewerk/NWPusher), you can use `openssl` to export the `p12` to _pem_ and back to `p12`:
|
86
102
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
103
|
+
```no-highlight
|
104
|
+
% openssl pkcs12 -in my.p12 -out my.pem
|
105
|
+
Enter Import Password:
|
106
|
+
<hit enter: the p12 has no password>
|
107
|
+
MAC verified OK
|
108
|
+
Enter PEM pass phrase:
|
109
|
+
<enter a temporary password to encrypt the pem file>
|
110
|
+
|
111
|
+
% openssl pkcs12 -export -in my.pem -out my-with-passphrase.p12
|
112
|
+
Enter pass phrase for temp.pem:
|
113
|
+
<enter the temporary password to decrypt the pem file>
|
114
|
+
|
115
|
+
Enter Export Password:
|
116
|
+
<enter a password for encrypting the new p12 file>
|
117
|
+
```
|
100
118
|
|
101
119
|
## Environment Variables
|
102
120
|
|
@@ -71,15 +71,15 @@ _scan_ uses the latest APIs and tools to make running tests plain simple and off
|
|
71
71
|
🚠 | Sensible defaults: Automatically detect the project, schemes and more
|
72
72
|
📊 | Support for HTML, JSON and JUnit reports
|
73
73
|
🔎 | Xcode duplicated your simulators again? _scan_ will handle this for you
|
74
|
-
🔗
|
74
|
+
🔗 | Works perfectly with [_fastlane_](https://fastlane.tools) and other tools
|
75
75
|
🚅 | Don't remember any complicated build commands, just _scan_
|
76
|
-
🔧
|
76
|
+
🔧 | Easy and dynamic configuration using parameters and environment variables
|
77
77
|
📢 | Beautiful slack notifications of the test results
|
78
|
-
💾
|
78
|
+
💾 | Store common build settings in a `Scanfile`
|
79
79
|
📤 | The raw `xcodebuild` outputs are stored in `~/Library/Logs/scan`
|
80
80
|
💻 | Supports both iOS and Mac applications
|
81
|
-
👱
|
82
|
-
📖
|
81
|
+
👱 | Automatically switches to the [travis formatter](https://github.com/kattrali/xcpretty-travis-formatter) when running on Travis
|
82
|
+
📖 | Helps you resolve common test errors like simulator not responding
|
83
83
|
|
84
84
|
_scan_ uses a plain `xcodebuild` command, therefore keeping 100% compatible with `xcodebuild`. To generate the nice output, _scan_ uses [xcpretty](https://github.com/supermarin/xcpretty). You can alway access the raw output in `~/Library/Logs/scan`.
|
85
85
|
|
@@ -90,15 +90,21 @@ _scan_ uses a plain `xcodebuild` command, therefore keeping 100% compatible with
|
|
90
90
|
|
91
91
|
# Usage
|
92
92
|
|
93
|
-
|
93
|
+
```no-highlight
|
94
|
+
fastlane scan
|
95
|
+
```
|
94
96
|
|
95
97
|
That's all you need to run your tests. If you want more control, here are some available parameters:
|
96
98
|
|
97
|
-
|
99
|
+
```no-highlight
|
100
|
+
fastlane scan --workspace "Example.xcworkspace" --scheme "AppName" --device "iPhone 6" --clean
|
101
|
+
```
|
98
102
|
|
99
103
|
If you need to use a different xcode install, use `xcode-select` or define `DEVELOPER_DIR`:
|
100
104
|
|
101
|
-
|
105
|
+
```no-highlight
|
106
|
+
DEVELOPER_DIR="/Applications/Xcode6.2.app" scan
|
107
|
+
```
|
102
108
|
|
103
109
|
To run _scan_ on multiple devices via [_fastlane_](https://fastlane.tools), add this to your `Fastfile`:
|
104
110
|
|
@@ -32,8 +32,8 @@ To upload builds to TestFlight check out [_pilot_](/actions/pilot).
|
|
32
32
|
|
33
33
|
The guide will create all the necessary files for you, using the existing app metadata from iTunes Connect.
|
34
34
|
|
35
|
-
-
|
36
|
-
-
|
35
|
+
- `cd [your_project_folder]`
|
36
|
+
- `fastlane deliver init`
|
37
37
|
- Enter your iTunes Connect credentials
|
38
38
|
- Enter your app identifier
|
39
39
|
- Enjoy a good drink, while the computer does all the work for you
|
@@ -684,14 +684,14 @@ Detailed instructions about how to set up _deliver_ and _fastlane_ in `Jenkins`
|
|
684
684
|
|
685
685
|
_deliver_ uses the iTunes Transporter to upload metadata and binaries. In case you are behind a firewall, you can specify a different transporter protocol using
|
686
686
|
|
687
|
-
```
|
687
|
+
```no-highlight
|
688
688
|
DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS="-t DAV" fastlane deliver
|
689
689
|
```
|
690
690
|
|
691
691
|
## HTTP Proxy
|
692
692
|
iTunes Transporter is a Java application bundled with Xcode. In addition to utilizing the `DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS="-t DAV"`, you need to configure the transporter application to use the proxy independently from the system proxy or any environment proxy settings. You can find the configuration file within Xcode:
|
693
693
|
|
694
|
-
```
|
694
|
+
```no-highlight
|
695
695
|
TOOLS_PATH=$( xcode-select -p )
|
696
696
|
REL_PATH='../Applications/Application Loader.app/Contents/itms/java/lib/net.properties'
|
697
697
|
echo "$TOOLS_PATH/$REL_PATH"
|
@@ -701,7 +701,7 @@ Add necessary proxy configuration values to the net.properties according to [Jav
|
|
701
701
|
|
702
702
|
As an alternative to editing the properties files, proxy configuration can be specified on the command line directly:
|
703
703
|
|
704
|
-
```
|
704
|
+
```no-highlight
|
705
705
|
DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS="-t DAV -Dhttp.proxyHost=myproxy.com -Dhttp.proxyPort=8080"
|
706
706
|
```
|
707
707
|
|
@@ -192,7 +192,9 @@ fastlane pilot import -c ~/Desktop/testers.csv
|
|
192
192
|
|
193
193
|
If you run into any issues you can use the `verbose` mode to get a more detailed output:
|
194
194
|
|
195
|
-
|
195
|
+
```no-highlight
|
196
|
+
fastlane pilot upload --verbose
|
197
|
+
```
|
196
198
|
|
197
199
|
## Firewall Issues
|
198
200
|
|
@@ -91,8 +91,14 @@ module Fastlane
|
|
91
91
|
env_name: "MAILGUN_ATTACHMENT",
|
92
92
|
description: "Mail Attachment filenames, either an array or just one string",
|
93
93
|
optional: true,
|
94
|
-
is_string: false)
|
95
|
-
|
94
|
+
is_string: false),
|
95
|
+
FastlaneCore::ConfigItem.new(key: :custom_placeholders,
|
96
|
+
short_option: "-p",
|
97
|
+
env_name: "MAILGUN_CUSTOM_PLACEHOLDERS",
|
98
|
+
description: "Placeholders for template given as a hash",
|
99
|
+
default_value: {},
|
100
|
+
is_string: false,
|
101
|
+
type: Hash)
|
96
102
|
]
|
97
103
|
end
|
98
104
|
|
@@ -140,6 +146,9 @@ module Fastlane
|
|
140
146
|
hash[:success] = options[:success]
|
141
147
|
hash[:ci_build_link] = options[:ci_build_link]
|
142
148
|
|
149
|
+
# concatenate with custom placeholders passed by user
|
150
|
+
hash = hash.merge(options[:custom_placeholders])
|
151
|
+
|
143
152
|
# grabs module
|
144
153
|
eth = Fastlane::ErbTemplateHelper
|
145
154
|
|
@@ -171,6 +180,10 @@ module Fastlane
|
|
171
180
|
app_link: "http://www.myapplink.com",
|
172
181
|
ci_build_link: "http://www.mycibuildlink.com",
|
173
182
|
template_path: "HTML_TEMPLATE_PATH",
|
183
|
+
custom_placeholders: {
|
184
|
+
:var1 => 123,
|
185
|
+
:var2 => "string"
|
186
|
+
},
|
174
187
|
attachment: "dirname/filename.ext"
|
175
188
|
)'
|
176
189
|
]
|
@@ -14,7 +14,23 @@ module Fastlane
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.upload_url(params)
|
17
|
-
"#{params[:endpoint]}#{params[:mount_path]}
|
17
|
+
url = "#{params[:endpoint]}#{params[:mount_path]}"
|
18
|
+
|
19
|
+
if params[:nexus_version] == 2
|
20
|
+
url << "/service/local/artifact/maven/content"
|
21
|
+
else
|
22
|
+
file_extension = File.extname(params[:file]).shellescape
|
23
|
+
|
24
|
+
url << "/repository/#{params[:repo_id]}"
|
25
|
+
url << "/#{params[:repo_group_id].gsub('.', '/')}"
|
26
|
+
url << "/#{params[:repo_project_name]}"
|
27
|
+
url << "/#{params[:repo_project_version]}"
|
28
|
+
url << "/#{params[:repo_project_name]}-#{params[:repo_project_version]}"
|
29
|
+
url << "-#{params[:repo_classifier]}" if params[:repo_classifier]
|
30
|
+
url << file_extension.to_s
|
31
|
+
end
|
32
|
+
|
33
|
+
url.shellescape
|
18
34
|
end
|
19
35
|
|
20
36
|
def self.verbose(params)
|
@@ -26,19 +42,24 @@ module Fastlane
|
|
26
42
|
file_extension = file_path.split('.').last.shellescape
|
27
43
|
|
28
44
|
options = []
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
45
|
+
if params[:nexus_version] == 2
|
46
|
+
options << "-F p=zip"
|
47
|
+
options << "-F hasPom=false"
|
48
|
+
options << "-F r=#{params[:repo_id].shellescape}"
|
49
|
+
options << "-F g=#{params[:repo_group_id].shellescape}"
|
50
|
+
options << "-F a=#{params[:repo_project_name].shellescape}"
|
51
|
+
options << "-F v=#{params[:repo_project_version].shellescape}"
|
52
|
+
|
53
|
+
if params[:repo_classifier]
|
54
|
+
options << "-F c=#{params[:repo_classifier].shellescape}"
|
55
|
+
end
|
56
|
+
|
57
|
+
options << "-F e=#{file_extension}"
|
58
|
+
options << "-F file=@#{file_path}"
|
59
|
+
else
|
60
|
+
options << "--upload-file #{file_path}"
|
38
61
|
end
|
39
62
|
|
40
|
-
options << "-F e=#{file_extension}"
|
41
|
-
options << "-F file=@#{file_path}"
|
42
63
|
options << "-u #{params[:username].shellescape}:#{params[:password].shellescape}"
|
43
64
|
|
44
65
|
options
|
@@ -107,7 +128,7 @@ module Fastlane
|
|
107
128
|
optional: false),
|
108
129
|
FastlaneCore::ConfigItem.new(key: :mount_path,
|
109
130
|
env_name: "FL_NEXUS_MOUNT_PATH",
|
110
|
-
description: "Nexus mount path",
|
131
|
+
description: "Nexus mount path (Nexus 3 instances have this configured as empty by default)",
|
111
132
|
default_value: "/nexus",
|
112
133
|
optional: true),
|
113
134
|
FastlaneCore::ConfigItem.new(key: :username,
|
@@ -124,6 +145,18 @@ module Fastlane
|
|
124
145
|
is_string: false,
|
125
146
|
default_value: true,
|
126
147
|
optional: true),
|
148
|
+
FastlaneCore::ConfigItem.new(key: :nexus_version,
|
149
|
+
env_name: "FL_NEXUS_MAJOR_VERSION",
|
150
|
+
description: "Nexus major version",
|
151
|
+
type: Integer,
|
152
|
+
default_value: 2,
|
153
|
+
optional: true,
|
154
|
+
verify_block: proc do |value|
|
155
|
+
min_version = 2
|
156
|
+
max_version = 3
|
157
|
+
UI.user_error!("Unsupported version (#{value}) min. supported version: #{min_version}") unless value >= min_version
|
158
|
+
UI.user_error!("Unsupported version (#{value}) max. supported version: #{max_version}") unless value <= max_version
|
159
|
+
end),
|
127
160
|
FastlaneCore::ConfigItem.new(key: :verbose,
|
128
161
|
env_name: "FL_NEXUS_VERBOSE",
|
129
162
|
description: "Make detailed output",
|
@@ -151,7 +184,7 @@ module Fastlane
|
|
151
184
|
end
|
152
185
|
|
153
186
|
def self.authors
|
154
|
-
["xfreebird"]
|
187
|
+
["xfreebird", "mdio"]
|
155
188
|
end
|
156
189
|
|
157
190
|
def self.is_supported?(platform)
|
@@ -160,7 +193,22 @@ module Fastlane
|
|
160
193
|
|
161
194
|
def self.example_code
|
162
195
|
[
|
163
|
-
'
|
196
|
+
'# for Nexus 2
|
197
|
+
nexus_upload(
|
198
|
+
file: "/path/to/file.ipa",
|
199
|
+
repo_id: "artefacts",
|
200
|
+
repo_group_id: "com.fastlane",
|
201
|
+
repo_project_name: "ipa",
|
202
|
+
repo_project_version: "1.13",
|
203
|
+
repo_classifier: "dSYM", # Optional
|
204
|
+
endpoint: "http://localhost:8081",
|
205
|
+
username: "admin",
|
206
|
+
password: "admin123"
|
207
|
+
)',
|
208
|
+
'# for Nexus 3
|
209
|
+
nexus_upload(
|
210
|
+
nexus_version: 3,
|
211
|
+
mount_path: "",
|
164
212
|
file: "/path/to/file.ipa",
|
165
213
|
repo_id: "artefacts",
|
166
214
|
repo_group_id: "com.fastlane",
|
@@ -72,6 +72,7 @@ module Fastlane
|
|
72
72
|
FastlaneCore::ConfigItem.new(key: :path,
|
73
73
|
env_name: "FL_UNLOCK_KEYCHAIN_PATH",
|
74
74
|
description: "Path to the keychain file",
|
75
|
+
default_value: "login",
|
75
76
|
optional: false),
|
76
77
|
FastlaneCore::ConfigItem.new(key: :password,
|
77
78
|
env_name: "FL_UNLOCK_KEYCHAIN_PASSWORD",
|
@@ -104,6 +104,32 @@ module Fastlane
|
|
104
104
|
return nil
|
105
105
|
end
|
106
106
|
|
107
|
+
def actions_md_contents
|
108
|
+
action_mds = {}
|
109
|
+
|
110
|
+
ActionsList.all_actions do |action|
|
111
|
+
@action = action
|
112
|
+
@action_filename = filename_for_action(action)
|
113
|
+
|
114
|
+
unless @action_filename
|
115
|
+
next
|
116
|
+
end
|
117
|
+
|
118
|
+
@custom_content = load_custom_action_md(action)
|
119
|
+
|
120
|
+
if action.superclass != Fastlane::Action
|
121
|
+
@custom_content ||= load_custom_action_md(action.superclass)
|
122
|
+
end
|
123
|
+
|
124
|
+
template = File.join(Fastlane::ROOT, "lib/assets/ActionDetails.md.erb")
|
125
|
+
result = ERB.new(File.read(template), 0, '-').result(binding)
|
126
|
+
|
127
|
+
action_mds[action.action_name] = result
|
128
|
+
end
|
129
|
+
|
130
|
+
return action_mds
|
131
|
+
end
|
132
|
+
|
107
133
|
def generate!(target_path: nil)
|
108
134
|
require 'yaml'
|
109
135
|
FileUtils.mkdir_p(target_path)
|
@@ -2033,7 +2033,8 @@ func mailgun(mailgunSandboxDomain: String? = nil,
|
|
2033
2033
|
ciBuildLink: String? = nil,
|
2034
2034
|
templatePath: String? = nil,
|
2035
2035
|
replyTo: String? = nil,
|
2036
|
-
attachment: String? = nil
|
2036
|
+
attachment: String? = nil,
|
2037
|
+
customPlaceholders: [String : Any] = [:]) {
|
2037
2038
|
let command = RubyCommand(commandID: "", methodName: "mailgun", className: nil, args: [RubyCommand.Argument(name: "mailgun_sandbox_domain", value: mailgunSandboxDomain),
|
2038
2039
|
RubyCommand.Argument(name: "mailgun_sandbox_postmaster", value: mailgunSandboxPostmaster),
|
2039
2040
|
RubyCommand.Argument(name: "mailgun_apikey", value: mailgunApikey),
|
@@ -2048,7 +2049,8 @@ func mailgun(mailgunSandboxDomain: String? = nil,
|
|
2048
2049
|
RubyCommand.Argument(name: "ci_build_link", value: ciBuildLink),
|
2049
2050
|
RubyCommand.Argument(name: "template_path", value: templatePath),
|
2050
2051
|
RubyCommand.Argument(name: "reply_to", value: replyTo),
|
2051
|
-
RubyCommand.Argument(name: "attachment", value: attachment)
|
2052
|
+
RubyCommand.Argument(name: "attachment", value: attachment),
|
2053
|
+
RubyCommand.Argument(name: "custom_placeholders", value: customPlaceholders)])
|
2052
2054
|
_ = runner.executeCommand(command)
|
2053
2055
|
}
|
2054
2056
|
func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
@@ -2130,6 +2132,7 @@ func nexusUpload(file: String,
|
|
2130
2132
|
username: String,
|
2131
2133
|
password: String,
|
2132
2134
|
sslVerify: Bool = true,
|
2135
|
+
nexusVersion: Int = 2,
|
2133
2136
|
verbose: Bool = false,
|
2134
2137
|
proxyUsername: String? = nil,
|
2135
2138
|
proxyPassword: String? = nil,
|
@@ -2146,6 +2149,7 @@ func nexusUpload(file: String,
|
|
2146
2149
|
RubyCommand.Argument(name: "username", value: username),
|
2147
2150
|
RubyCommand.Argument(name: "password", value: password),
|
2148
2151
|
RubyCommand.Argument(name: "ssl_verify", value: sslVerify),
|
2152
|
+
RubyCommand.Argument(name: "nexus_version", value: nexusVersion),
|
2149
2153
|
RubyCommand.Argument(name: "verbose", value: verbose),
|
2150
2154
|
RubyCommand.Argument(name: "proxy_username", value: proxyUsername),
|
2151
2155
|
RubyCommand.Argument(name: "proxy_password", value: proxyPassword),
|
@@ -2295,7 +2299,8 @@ func pilot(username: String,
|
|
2295
2299
|
devPortalTeamId: String? = nil,
|
2296
2300
|
itcProvider: String? = nil,
|
2297
2301
|
groups: [String]? = nil,
|
2298
|
-
waitForUploadedBuild: Bool = false
|
2302
|
+
waitForUploadedBuild: Bool = false,
|
2303
|
+
rejectBuildWaitingForReview: Bool = false) {
|
2299
2304
|
let command = RubyCommand(commandID: "", methodName: "pilot", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
|
2300
2305
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
2301
2306
|
RubyCommand.Argument(name: "app_platform", value: appPlatform),
|
@@ -2320,7 +2325,8 @@ func pilot(username: String,
|
|
2320
2325
|
RubyCommand.Argument(name: "dev_portal_team_id", value: devPortalTeamId),
|
2321
2326
|
RubyCommand.Argument(name: "itc_provider", value: itcProvider),
|
2322
2327
|
RubyCommand.Argument(name: "groups", value: groups),
|
2323
|
-
RubyCommand.Argument(name: "wait_for_uploaded_build", value: waitForUploadedBuild)
|
2328
|
+
RubyCommand.Argument(name: "wait_for_uploaded_build", value: waitForUploadedBuild),
|
2329
|
+
RubyCommand.Argument(name: "reject_build_waiting_for_review", value: rejectBuildWaitingForReview)])
|
2324
2330
|
_ = runner.executeCommand(command)
|
2325
2331
|
}
|
2326
2332
|
func pluginScores(outputPath: String,
|
@@ -3403,7 +3409,8 @@ func testflight(username: String,
|
|
3403
3409
|
devPortalTeamId: String? = nil,
|
3404
3410
|
itcProvider: String? = nil,
|
3405
3411
|
groups: [String]? = nil,
|
3406
|
-
waitForUploadedBuild: Bool = false
|
3412
|
+
waitForUploadedBuild: Bool = false,
|
3413
|
+
rejectBuildWaitingForReview: Bool = false) {
|
3407
3414
|
let command = RubyCommand(commandID: "", methodName: "testflight", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
|
3408
3415
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
3409
3416
|
RubyCommand.Argument(name: "app_platform", value: appPlatform),
|
@@ -3428,7 +3435,8 @@ func testflight(username: String,
|
|
3428
3435
|
RubyCommand.Argument(name: "dev_portal_team_id", value: devPortalTeamId),
|
3429
3436
|
RubyCommand.Argument(name: "itc_provider", value: itcProvider),
|
3430
3437
|
RubyCommand.Argument(name: "groups", value: groups),
|
3431
|
-
RubyCommand.Argument(name: "wait_for_uploaded_build", value: waitForUploadedBuild)
|
3438
|
+
RubyCommand.Argument(name: "wait_for_uploaded_build", value: waitForUploadedBuild),
|
3439
|
+
RubyCommand.Argument(name: "reject_build_waiting_for_review", value: rejectBuildWaitingForReview)])
|
3432
3440
|
_ = runner.executeCommand(command)
|
3433
3441
|
}
|
3434
3442
|
func tryouts(appId: String,
|
@@ -3463,7 +3471,7 @@ func typetalk() {
|
|
3463
3471
|
let command = RubyCommand(commandID: "", methodName: "typetalk", className: nil, args: [])
|
3464
3472
|
_ = runner.executeCommand(command)
|
3465
3473
|
}
|
3466
|
-
func unlockKeychain(path: String,
|
3474
|
+
func unlockKeychain(path: String = "login",
|
3467
3475
|
password: String,
|
3468
3476
|
addToSearchList: Bool = true,
|
3469
3477
|
setDefault: Bool = false) {
|
@@ -3787,7 +3795,8 @@ func uploadToTestflight(username: String,
|
|
3787
3795
|
devPortalTeamId: String? = nil,
|
3788
3796
|
itcProvider: String? = nil,
|
3789
3797
|
groups: [String]? = nil,
|
3790
|
-
waitForUploadedBuild: Bool = false
|
3798
|
+
waitForUploadedBuild: Bool = false,
|
3799
|
+
rejectBuildWaitingForReview: Bool = false) {
|
3791
3800
|
let command = RubyCommand(commandID: "", methodName: "upload_to_testflight", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
|
3792
3801
|
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
3793
3802
|
RubyCommand.Argument(name: "app_platform", value: appPlatform),
|
@@ -3812,7 +3821,8 @@ func uploadToTestflight(username: String,
|
|
3812
3821
|
RubyCommand.Argument(name: "dev_portal_team_id", value: devPortalTeamId),
|
3813
3822
|
RubyCommand.Argument(name: "itc_provider", value: itcProvider),
|
3814
3823
|
RubyCommand.Argument(name: "groups", value: groups),
|
3815
|
-
RubyCommand.Argument(name: "wait_for_uploaded_build", value: waitForUploadedBuild)
|
3824
|
+
RubyCommand.Argument(name: "wait_for_uploaded_build", value: waitForUploadedBuild),
|
3825
|
+
RubyCommand.Argument(name: "reject_build_waiting_for_review", value: rejectBuildWaitingForReview)])
|
3816
3826
|
_ = runner.executeCommand(command)
|
3817
3827
|
}
|
3818
3828
|
func verifyBuild(provisioningType: String? = nil,
|
@@ -4041,4 +4051,4 @@ let screengrabfile: Screengrabfile = Screengrabfile()
|
|
4041
4051
|
let snapshotfile: Snapshotfile = Snapshotfile()
|
4042
4052
|
// Please don't remove the lines below
|
4043
4053
|
// They are used to detect outdated files
|
4044
|
-
// FastlaneRunnerAPIVersion [0.9.
|
4054
|
+
// FastlaneRunnerAPIVersion [0.9.21]
|