fastlane 1.86.1 → 1.87.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/fastlane/actions/build_and_upload_to_appetize.rb +3 -3
- data/lib/fastlane/actions/crashlytics.rb +1 -2
- data/lib/fastlane/actions/device_grid/README.md +2 -2
- data/lib/fastlane/actions/device_grid/device_grid.rb +6 -2
- data/lib/fastlane/actions/get_github_release.rb +3 -0
- data/lib/fastlane/actions/get_version_number.rb +46 -10
- data/lib/fastlane/actions/jira.rb +89 -0
- data/lib/fastlane/commands_generator.rb +35 -20
- data/lib/fastlane/fastlane_folder.rb +5 -3
- data/lib/fastlane/helper/crashlytics_helper.rb +4 -1
- data/lib/fastlane/lane_manager.rb +1 -1
- data/lib/fastlane/version.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a5d72bde2814ab63746e584edd4778f24f155374
|
|
4
|
+
data.tar.gz: 32e8447fd23c2d17be8661d2ef014d96467f9ae3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 05ebe99710027c088db55eb78c211ec65ebded3bc4866946855584d60ad6c5fb1e47d7088caaae3bc5c2e052bf6edfba0ff1dd72c272ab32629534e90e9d6cfb
|
|
7
|
+
data.tar.gz: 40b65c9bcbce9d7396d32aaf758e071f35dcc8c099310dc035899c2aef3d679370bef641dbb2b3edc88fa257d1793d5727cdbc5c04488e3ab5401b7b5a5652dc
|
|
@@ -14,10 +14,10 @@ module Fastlane
|
|
|
14
14
|
app_path = Dir[File.join(tmp_path, "**", "*.app")].last
|
|
15
15
|
UI.user_error!("Couldn't find app") unless app_path
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
zipped_bundle = Actions::ZipAction.run(path: app_path,
|
|
18
|
+
output_path: File.join(tmp_path, "Result.zip"))
|
|
19
19
|
|
|
20
|
-
Actions::AppetizeAction.run(path:
|
|
20
|
+
Actions::AppetizeAction.run(path: zipped_bundle,
|
|
21
21
|
api_token: params[:api_token])
|
|
22
22
|
|
|
23
23
|
public_key = Actions.lane_context[SharedValues::APPETIZE_PUBLIC_KEY]
|
|
@@ -61,11 +61,10 @@ module Fastlane
|
|
|
61
61
|
def self.available_options
|
|
62
62
|
platform = Actions.lane_context[Actions::SharedValues::PLATFORM_NAME]
|
|
63
63
|
|
|
64
|
-
ipa_path_default = nil
|
|
65
64
|
if platform == :ios or platform.nil?
|
|
66
65
|
ipa_path_default = Dir["*.ipa"].last
|
|
67
66
|
end
|
|
68
|
-
|
|
67
|
+
|
|
69
68
|
if platform == :android
|
|
70
69
|
apk_path_default = Dir["*.apk"].last || Dir[File.join("app", "build", "outputs", "apk", "app-release.apk")].last
|
|
71
70
|
end
|
|
@@ -139,10 +139,10 @@ xcodebuild(
|
|
|
139
139
|
app_path = Dir[File.join(tmp_path, "**", "*.app")].last
|
|
140
140
|
UI.user_error!("Couldn't find app") unless app_path
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
zipped_bundle = zip(path: app_path, output_path: File.join(tmp_path, "Result.zip"))
|
|
143
143
|
|
|
144
144
|
appetize(
|
|
145
|
-
path:
|
|
145
|
+
path: zipped_bundle,
|
|
146
146
|
api_token: 'yourapitoken' # get it from https://appetize.io/docs#request-api-token
|
|
147
147
|
)
|
|
148
148
|
|
|
@@ -19,8 +19,12 @@ module Danger
|
|
|
19
19
|
|
|
20
20
|
devices ||= %w(iphone4s iphone5s iphone6s iphone6splus ipadair)
|
|
21
21
|
languages ||= ["en"]
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
prefix_command ||= ""
|
|
24
|
+
prefix_command += " bundle exec " if File.exist?("Gemfile")
|
|
25
|
+
|
|
26
|
+
# To use the local fastlane intead of bundle
|
|
27
|
+
prefix_command = "./bin/" if FastlaneCore::Helper.test?
|
|
24
28
|
|
|
25
29
|
deep_link_matches = pr_body.match(/:link:\s(.*)/) # :link: emoji
|
|
26
30
|
deep_link = deep_link_matches[1] if deep_link_matches
|
|
@@ -42,7 +46,7 @@ module Danger
|
|
|
42
46
|
}
|
|
43
47
|
params[:launch_url] = deep_link if deep_link
|
|
44
48
|
params_str = params.collect { |k, v| "#{k}:\"#{v}\"" }.join(" ")
|
|
45
|
-
url =
|
|
49
|
+
url = Fastlane::Helper.backticks("#{prefix_command}fastlane run appetize_viewing_url_generator #{params_str}")
|
|
46
50
|
url = url.match(%r{Result:.*(https\:\/\/.*)})[1].strip
|
|
47
51
|
|
|
48
52
|
markdown("<a href='#{url}'>")
|
|
@@ -10,6 +10,9 @@ module Fastlane
|
|
|
10
10
|
require 'excon'
|
|
11
11
|
require 'base64'
|
|
12
12
|
|
|
13
|
+
# To still get the data when a repo has been moved
|
|
14
|
+
Excon.defaults[:middlewares] << Excon::Middleware::RedirectFollower
|
|
15
|
+
|
|
13
16
|
server_url = params[:server_url]
|
|
14
17
|
server_url = server_url[0..-2] if server_url.end_with? '/'
|
|
15
18
|
|
|
@@ -24,29 +24,57 @@ module Fastlane
|
|
|
24
24
|
|
|
25
25
|
line = ""
|
|
26
26
|
scheme = params[:scheme] || ""
|
|
27
|
+
target = params[:target] || ""
|
|
27
28
|
results = []
|
|
28
29
|
|
|
29
30
|
if Helper.test?
|
|
30
31
|
results = [
|
|
31
|
-
'
|
|
32
|
-
'"SampleProject.xcodeproj/../
|
|
33
|
-
'"SampleProject.xcodeproj/../
|
|
34
|
-
'"SampleProject.xcodeproj/../
|
|
32
|
+
'$(date +%s)n /usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "${plist}"n',
|
|
33
|
+
'"SampleProject.xcodeproj/../TargetA/TargetA-Info.plist"=4.3.2',
|
|
34
|
+
'"SampleProject.xcodeproj/../TargetATests/Info.plist"=4.3.2',
|
|
35
|
+
'"SampleProject.xcodeproj/../TargetB/TargetB-Info.plist"=5.4.3',
|
|
36
|
+
'"SampleProject.xcodeproj/../TargetBTests/Info.plist"=5.4.3',
|
|
37
|
+
'"SampleProject.xcodeproj/../SampleProject/supporting_files/TargetC_internal-Info.plist"=7.5.2',
|
|
38
|
+
'"SampleProject.xcodeproj/../SampleProject/supporting_files/TargetC_production-Info.plist"=6.4.9',
|
|
39
|
+
'"SampleProject.xcodeproj/../SampleProject_tests/Info.plist"=1.0'
|
|
35
40
|
]
|
|
36
41
|
else
|
|
37
42
|
results = (Actions.sh command).split("\n")
|
|
38
43
|
end
|
|
39
44
|
|
|
40
|
-
if scheme.empty?
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
if target.empty? && scheme.empty?
|
|
46
|
+
# Sometimes the results array contains nonsense as the first element
|
|
47
|
+
# This iteration finds the first 'real' result and returns that
|
|
48
|
+
# emulating the actual behavior or the -terse1 flag correctly
|
|
49
|
+
project_string = ".xcodeproj"
|
|
44
50
|
results.any? do |result|
|
|
45
|
-
if result.include?
|
|
51
|
+
if result.include? project_string
|
|
46
52
|
line = result
|
|
47
53
|
break
|
|
48
54
|
end
|
|
49
55
|
end
|
|
56
|
+
else
|
|
57
|
+
# This iteration finds the first folder structure or info plist
|
|
58
|
+
# matching the specified target
|
|
59
|
+
scheme_string = "/#{scheme}"
|
|
60
|
+
target_string = "/#{target}/"
|
|
61
|
+
plist_target_string = "/#{target}-"
|
|
62
|
+
results.any? do |result|
|
|
63
|
+
if !target.empty?
|
|
64
|
+
if result.include? target_string
|
|
65
|
+
line = result
|
|
66
|
+
break
|
|
67
|
+
elsif result.include? plist_target_string
|
|
68
|
+
line = result
|
|
69
|
+
break
|
|
70
|
+
end
|
|
71
|
+
else
|
|
72
|
+
if result.include? scheme_string
|
|
73
|
+
line = result
|
|
74
|
+
break
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
50
78
|
end
|
|
51
79
|
|
|
52
80
|
version_number = line.partition('=').last
|
|
@@ -87,7 +115,15 @@ module Fastlane
|
|
|
87
115
|
end),
|
|
88
116
|
FastlaneCore::ConfigItem.new(key: :scheme,
|
|
89
117
|
env_name: "FL_VERSION_NUMBER_SCHEME",
|
|
90
|
-
description: "Specify a specific scheme if you have multiple per project, optional
|
|
118
|
+
description: "Specify a specific scheme if you have multiple per project, optional.
|
|
119
|
+
This parameter is deprecated and will be removed in a future release.
|
|
120
|
+
Please use the 'target' parameter instead. The behavior of this parameter
|
|
121
|
+
is currently undefined if your scheme name doesn't match your target name",
|
|
122
|
+
optional: true,
|
|
123
|
+
deprecated: true),
|
|
124
|
+
FastlaneCore::ConfigItem.new(key: :target,
|
|
125
|
+
env_name: "FL_VERSION_NUMBER_TARGET",
|
|
126
|
+
description: "Specify a specific target if you have multiple per project, optional",
|
|
91
127
|
optional: true)
|
|
92
128
|
]
|
|
93
129
|
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
module Fastlane
|
|
2
|
+
module Actions
|
|
3
|
+
class JiraAction < Action
|
|
4
|
+
|
|
5
|
+
def self.run(params)
|
|
6
|
+
Actions.verify_gem!('jira')
|
|
7
|
+
require 'jira'
|
|
8
|
+
|
|
9
|
+
site = params[:url]
|
|
10
|
+
context_path = ""
|
|
11
|
+
auth_type = :basic
|
|
12
|
+
username = params[:username]
|
|
13
|
+
password = params[:password]
|
|
14
|
+
ticket_id = params[:ticket_id]
|
|
15
|
+
comment_text = params[:comment_text]
|
|
16
|
+
|
|
17
|
+
options = {
|
|
18
|
+
site: site,
|
|
19
|
+
context_path: context_path,
|
|
20
|
+
auth_type: auth_type,
|
|
21
|
+
username: username,
|
|
22
|
+
password: password
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
client = JIRA::Client.new(options)
|
|
26
|
+
issue = client.Issue.find(ticket_id)
|
|
27
|
+
comment = issue.comments.build
|
|
28
|
+
comment.save({ 'body' => comment_text })
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
#####################################################
|
|
32
|
+
# @!group Documentation
|
|
33
|
+
#####################################################
|
|
34
|
+
|
|
35
|
+
def self.description
|
|
36
|
+
"Leave a comment on JIRA tickets"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.available_options
|
|
40
|
+
[
|
|
41
|
+
FastlaneCore::ConfigItem.new(key: :url,
|
|
42
|
+
env_name: "FL_JIRA_SITE",
|
|
43
|
+
description: "URL for Jira instance",
|
|
44
|
+
verify_block: proc do |value|
|
|
45
|
+
UI.user_error!("No url for Jira given, pass using `url: 'url'`") if value.to_s.length == 0
|
|
46
|
+
end),
|
|
47
|
+
FastlaneCore::ConfigItem.new(key: :username,
|
|
48
|
+
env_name: "FL_JIRA_USERNAME",
|
|
49
|
+
description: "Username for JIRA instance",
|
|
50
|
+
verify_block: proc do |value|
|
|
51
|
+
UI.user_error!("No username") if value.to_s.length == 0
|
|
52
|
+
end),
|
|
53
|
+
FastlaneCore::ConfigItem.new(key: :password,
|
|
54
|
+
env_name: "FL_JIRA_PASSWORD",
|
|
55
|
+
description: "Password for Jira",
|
|
56
|
+
verify_block: proc do |value|
|
|
57
|
+
UI.user_error!("No password") if value.to_s.length == 0
|
|
58
|
+
end),
|
|
59
|
+
FastlaneCore::ConfigItem.new(key: :ticket_id,
|
|
60
|
+
env_name: "FL_JIRA_TICKET_ID",
|
|
61
|
+
description: "Ticket ID for Jira, i.e. IOS-123",
|
|
62
|
+
verify_block: proc do |value|
|
|
63
|
+
UI.user_error!("No Ticket specified") if value.to_s.length == 0
|
|
64
|
+
end),
|
|
65
|
+
FastlaneCore::ConfigItem.new(key: :comment_text,
|
|
66
|
+
env_name: "FL_JIRA_COMMENT_TEXT",
|
|
67
|
+
description: "Text to add to the ticket as a comment",
|
|
68
|
+
verify_block: proc do |value|
|
|
69
|
+
UI.user_error!("No comment specified") if value.to_s.length == 0
|
|
70
|
+
end)
|
|
71
|
+
]
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def self.output
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def self.return_value
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def self.authors
|
|
81
|
+
["iAmChrisTruman"]
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def self.is_supported?(platform)
|
|
85
|
+
true
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -34,15 +34,12 @@ module Fastlane
|
|
|
34
34
|
|
|
35
35
|
command :trigger do |c|
|
|
36
36
|
c.syntax = 'fastlane [lane]'
|
|
37
|
-
c.description = '
|
|
37
|
+
c.description = 'Run a sepcific lane. Pass the lane name and optionally the platform first.'
|
|
38
38
|
c.option '--env STRING', String, 'Add environment to use with `dotenv`'
|
|
39
39
|
|
|
40
40
|
c.action do |args, options|
|
|
41
|
-
if
|
|
41
|
+
if ensure_fastfile
|
|
42
42
|
Fastlane::CommandLineHandler.handle(args, options)
|
|
43
|
-
else
|
|
44
|
-
create = agree('Could not find fastlane in current directory. Would you like to set it up? (y/n)'.yellow, true)
|
|
45
|
-
Fastlane::Setup.new.run if create
|
|
46
43
|
end
|
|
47
44
|
end
|
|
48
45
|
end
|
|
@@ -73,13 +70,15 @@ module Fastlane
|
|
|
73
70
|
c.option "-j", "--json", "Output the lanes in JSON instead of text"
|
|
74
71
|
|
|
75
72
|
c.action do |args, options|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
73
|
+
if ensure_fastfile
|
|
74
|
+
require 'fastlane/lane_list'
|
|
75
|
+
path = File.join(Fastlane::FastlaneFolder.fastfile_path)
|
|
76
|
+
|
|
77
|
+
if options.json
|
|
78
|
+
Fastlane::LaneList.output_json(path)
|
|
79
|
+
else
|
|
80
|
+
Fastlane::LaneList.output(path)
|
|
81
|
+
end
|
|
83
82
|
end
|
|
84
83
|
end
|
|
85
84
|
end
|
|
@@ -88,12 +87,14 @@ module Fastlane
|
|
|
88
87
|
c.syntax = 'fastlane list'
|
|
89
88
|
c.description = 'Lists all available lanes without description'
|
|
90
89
|
c.action do |args, options|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
if ensure_fastfile
|
|
91
|
+
ff = Fastlane::FastFile.new(Fastlane::FastlaneFolder.fastfile_path)
|
|
92
|
+
UI.message "Available lanes:"
|
|
93
|
+
ff.runner.available_lanes.each do |lane|
|
|
94
|
+
UI.message "- #{lane}"
|
|
95
|
+
end
|
|
96
|
+
UI.important "Execute using `fastlane [lane_name]`"
|
|
95
97
|
end
|
|
96
|
-
UI.important "Execute using `fastlane [lane_name]`"
|
|
97
98
|
end
|
|
98
99
|
end
|
|
99
100
|
|
|
@@ -103,9 +104,11 @@ module Fastlane
|
|
|
103
104
|
c.option '-f', '--force', 'Overwrite the existing README.md in the ./fastlane folder'
|
|
104
105
|
|
|
105
106
|
c.action do |args, options|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
if ensure_fastfile
|
|
108
|
+
ff = Fastlane::FastFile.new(File.join(Fastlane::FastlaneFolder.path || '.', 'Fastfile'))
|
|
109
|
+
UI.message "You don't need to run `fastlane docs` manually any more, this will be done automatically for you."
|
|
110
|
+
Fastlane::DocsGenerator.run(ff)
|
|
111
|
+
end
|
|
109
112
|
end
|
|
110
113
|
end
|
|
111
114
|
|
|
@@ -172,6 +175,18 @@ module Fastlane
|
|
|
172
175
|
run!
|
|
173
176
|
end
|
|
174
177
|
|
|
178
|
+
# Makes sure a Fastfile is available
|
|
179
|
+
# Shows an appropriate message to the user
|
|
180
|
+
# if that's not the case
|
|
181
|
+
# return true if the Fastfile is available
|
|
182
|
+
def ensure_fastfile
|
|
183
|
+
return true if Fastlane::FastlaneFolder.setup?
|
|
184
|
+
|
|
185
|
+
create = UI.confirm('Could not find fastlane in current directory. Would you like to set it up?')
|
|
186
|
+
Fastlane::Setup.new.run if create
|
|
187
|
+
return false
|
|
188
|
+
end
|
|
189
|
+
|
|
175
190
|
# rubocop:enable Metrics/AbcSize
|
|
176
191
|
# rubocop:enable Metrics/MethodLength
|
|
177
192
|
end
|
|
@@ -13,14 +13,16 @@ module Fastlane
|
|
|
13
13
|
return value
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
+
# Path to the Fastfile inside the fastlane folder. This is nil when none is available
|
|
16
17
|
def self.fastfile_path
|
|
17
|
-
|
|
18
|
-
File.
|
|
18
|
+
path = File.join(self.path || '.', 'Fastfile')
|
|
19
|
+
return path if File.exist?(path)
|
|
20
|
+
return nil
|
|
19
21
|
end
|
|
20
22
|
|
|
21
23
|
# Does a fastlane configuration already exist?
|
|
22
24
|
def self.setup?
|
|
23
|
-
return false unless
|
|
25
|
+
return false unless self.fastfile_path
|
|
24
26
|
File.exist?(self.fastfile_path)
|
|
25
27
|
end
|
|
26
28
|
|
|
@@ -3,7 +3,10 @@ module Fastlane
|
|
|
3
3
|
class CrashlyticsHelper
|
|
4
4
|
class << self
|
|
5
5
|
def generate_ios_command(params)
|
|
6
|
-
|
|
6
|
+
unless params[:crashlytics_path]
|
|
7
|
+
params[:crashlytics_path] = Dir["./Pods/iOS/Crashlytics/Crashlytics.framework"].last || Dir["./**/Crashlytics.framework"].last
|
|
8
|
+
end
|
|
9
|
+
|
|
7
10
|
UI.user_error!("No value found for 'crashlytics_path'") unless params[:crashlytics_path]
|
|
8
11
|
submit_binary = Dir[File.join(params[:crashlytics_path], '**', 'submit')].last
|
|
9
12
|
submit_binary ||= "Crashlytics.framework/submit" if Helper.test?
|
|
@@ -9,7 +9,7 @@ module Fastlane
|
|
|
9
9
|
UI.user_error!("platform must be a string") unless platform.kind_of?(String) or platform.nil?
|
|
10
10
|
UI.user_error!("parameters must be a hash") unless parameters.kind_of?(Hash) or parameters.nil?
|
|
11
11
|
|
|
12
|
-
ff = Fastlane::FastFile.new(
|
|
12
|
+
ff = Fastlane::FastFile.new(Fastlane::FastlaneFolder.fastfile_path)
|
|
13
13
|
|
|
14
14
|
is_platform = false
|
|
15
15
|
begin
|
data/lib/fastlane/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fastlane
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.87.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Felix Krause
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-05-
|
|
11
|
+
date: 2016-05-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: krausefx-shenzhen
|
|
@@ -268,7 +268,7 @@ dependencies:
|
|
|
268
268
|
requirements:
|
|
269
269
|
- - ">="
|
|
270
270
|
- !ruby/object:Gem::Version
|
|
271
|
-
version: 1.3.
|
|
271
|
+
version: 1.3.1
|
|
272
272
|
- - "<"
|
|
273
273
|
- !ruby/object:Gem::Version
|
|
274
274
|
version: 2.0.0
|
|
@@ -278,7 +278,7 @@ dependencies:
|
|
|
278
278
|
requirements:
|
|
279
279
|
- - ">="
|
|
280
280
|
- !ruby/object:Gem::Version
|
|
281
|
-
version: 1.3.
|
|
281
|
+
version: 1.3.1
|
|
282
282
|
- - "<"
|
|
283
283
|
- !ruby/object:Gem::Version
|
|
284
284
|
version: 2.0.0
|
|
@@ -348,7 +348,7 @@ dependencies:
|
|
|
348
348
|
requirements:
|
|
349
349
|
- - ">="
|
|
350
350
|
- !ruby/object:Gem::Version
|
|
351
|
-
version: 1.6.
|
|
351
|
+
version: 1.6.3
|
|
352
352
|
- - "<"
|
|
353
353
|
- !ruby/object:Gem::Version
|
|
354
354
|
version: 2.0.0
|
|
@@ -358,7 +358,7 @@ dependencies:
|
|
|
358
358
|
requirements:
|
|
359
359
|
- - ">="
|
|
360
360
|
- !ruby/object:Gem::Version
|
|
361
|
-
version: 1.6.
|
|
361
|
+
version: 1.6.3
|
|
362
362
|
- - "<"
|
|
363
363
|
- !ruby/object:Gem::Version
|
|
364
364
|
version: 2.0.0
|
|
@@ -765,6 +765,7 @@ files:
|
|
|
765
765
|
- lib/fastlane/actions/ipa.rb
|
|
766
766
|
- lib/fastlane/actions/is_ci.rb
|
|
767
767
|
- lib/fastlane/actions/jazzy.rb
|
|
768
|
+
- lib/fastlane/actions/jira.rb
|
|
768
769
|
- lib/fastlane/actions/lane_context.rb
|
|
769
770
|
- lib/fastlane/actions/last_git_commit.rb
|
|
770
771
|
- lib/fastlane/actions/last_git_tag.rb
|
|
@@ -907,9 +908,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
907
908
|
version: '0'
|
|
908
909
|
requirements: []
|
|
909
910
|
rubyforge_project:
|
|
910
|
-
rubygems_version: 2.
|
|
911
|
+
rubygems_version: 2.5.1
|
|
911
912
|
signing_key:
|
|
912
913
|
specification_version: 4
|
|
913
914
|
summary: The easiest way to automate building and releasing your iOS and Android apps
|
|
914
915
|
test_files: []
|
|
915
|
-
has_rdoc:
|