fastlane 1.66.0 → 1.67.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/README.md +37 -38
- data/lib/assets/AppfileTemplate +1 -1
- data/lib/assets/DefaultFastfileTemplate +2 -2
- data/lib/assets/FastfileTemplateAndroid +2 -2
- data/lib/assets/custom_action_template.rb +1 -1
- data/lib/fastlane/actions/actions_helper.rb +2 -2
- data/lib/fastlane/actions/appetize.rb +15 -16
- data/lib/fastlane/actions/appium.rb +1 -1
- data/lib/fastlane/actions/appledoc.rb +3 -3
- data/lib/fastlane/actions/artifactory.rb +7 -7
- data/lib/fastlane/actions/backup_file.rb +1 -1
- data/lib/fastlane/actions/backup_xcarchive.rb +1 -1
- data/lib/fastlane/actions/bundle_install.rb +2 -2
- data/lib/fastlane/actions/cert.rb +1 -1
- data/lib/fastlane/actions/changelog_from_git_commits.rb +2 -2
- data/lib/fastlane/actions/chatwork.rb +2 -2
- data/lib/fastlane/actions/clean_build_artifacts.rb +3 -2
- data/lib/fastlane/actions/clean_cocoapods_cache.rb +1 -1
- data/lib/fastlane/actions/clear_derived_data.rb +2 -2
- data/lib/fastlane/actions/clipboard.rb +1 -1
- data/lib/fastlane/actions/commit_version_bump.rb +3 -3
- data/lib/fastlane/actions/copy_artifacts.rb +2 -2
- data/lib/fastlane/actions/crashlytics.rb +6 -6
- data/lib/fastlane/actions/create_pull_request.rb +3 -3
- data/lib/fastlane/actions/deploygate.rb +6 -6
- data/lib/fastlane/actions/dotgpg_environment.rb +1 -1
- data/lib/fastlane/actions/download.rb +1 -1
- data/lib/fastlane/actions/download_dsyms.rb +117 -0
- data/lib/fastlane/actions/ensure_git_branch.rb +1 -1
- data/lib/fastlane/actions/ensure_git_status_clean.rb +1 -1
- data/lib/fastlane/actions/ensure_no_debug_code.rb +26 -12
- data/lib/fastlane/actions/ensure_xcode_version.rb +3 -3
- data/lib/fastlane/actions/erb.rb +1 -1
- data/lib/fastlane/actions/fastlane_version.rb +1 -1
- data/lib/fastlane/actions/frameit.rb +1 -1
- data/lib/fastlane/actions/gcovr.rb +2 -2
- data/lib/fastlane/actions/get_build_number.rb +1 -1
- data/lib/fastlane/actions/get_github_release.rb +6 -6
- data/lib/fastlane/actions/get_info_plist_value.rb +2 -2
- data/lib/fastlane/actions/get_ipa_info_plist_value.rb +2 -2
- data/lib/fastlane/actions/get_version_number.rb +1 -1
- data/lib/fastlane/actions/git_add.rb +1 -1
- data/lib/fastlane/actions/git_commit.rb +1 -1
- data/lib/fastlane/actions/gradle.rb +2 -2
- data/lib/fastlane/actions/gym.rb +1 -1
- data/lib/fastlane/actions/hg_add_tag.rb +1 -1
- data/lib/fastlane/actions/hg_commit_version_bump.rb +3 -3
- data/lib/fastlane/actions/hg_ensure_clean_status.rb +1 -1
- data/lib/fastlane/actions/hg_push.rb +1 -1
- data/lib/fastlane/actions/hipchat.rb +4 -6
- data/lib/fastlane/actions/hockey.rb +4 -4
- data/lib/fastlane/actions/ifttt.rb +74 -0
- data/lib/fastlane/actions/increment_build_number.rb +1 -1
- data/lib/fastlane/actions/increment_version_number.rb +3 -3
- data/lib/fastlane/actions/install_on_device.rb +1 -1
- data/lib/fastlane/actions/install_xcode_plugin.rb +2 -2
- data/lib/fastlane/actions/installr.rb +2 -2
- data/lib/fastlane/actions/ipa.rb +8 -8
- data/lib/fastlane/actions/latest_testflight_build_number.rb +3 -3
- data/lib/fastlane/actions/lcov.rb +1 -1
- data/lib/fastlane/actions/mailgun.rb +1 -1
- data/lib/fastlane/actions/match.rb +2 -2
- data/lib/fastlane/actions/notify.rb +1 -1
- data/lib/fastlane/actions/oclint.rb +2 -2
- data/lib/fastlane/actions/onesignal.rb +3 -3
- data/lib/fastlane/actions/opt_out_usage.rb +1 -1
- data/lib/fastlane/actions/pilot.rb +1 -1
- data/lib/fastlane/actions/pod_push.rb +2 -2
- data/lib/fastlane/actions/produce.rb +1 -1
- data/lib/fastlane/actions/prompt.rb +3 -3
- data/lib/fastlane/actions/push_git_tags.rb +1 -1
- data/lib/fastlane/actions/push_to_git_remote.rb +1 -1
- data/lib/fastlane/actions/read_podspec.rb +1 -1
- data/lib/fastlane/actions/recreate_schemes.rb +1 -1
- data/lib/fastlane/actions/register_devices.rb +2 -2
- data/lib/fastlane/actions/reset_git_repo.rb +3 -3
- data/lib/fastlane/actions/resign.rb +7 -2
- data/lib/fastlane/actions/restore_file.rb +1 -1
- data/lib/fastlane/actions/rocket.rb +64 -0
- data/lib/fastlane/actions/s3.rb +33 -101
- data/lib/fastlane/actions/scan.rb +1 -1
- data/lib/fastlane/actions/scp.rb +2 -2
- data/lib/fastlane/actions/set_changelog.rb +12 -12
- data/lib/fastlane/actions/set_github_release.rb +14 -14
- data/lib/fastlane/actions/set_info_plist_value.rb +2 -2
- data/lib/fastlane/actions/sigh.rb +1 -1
- data/lib/fastlane/actions/slack.rb +2 -2
- data/lib/fastlane/actions/ssh.rb +4 -4
- data/lib/fastlane/actions/supply.rb +1 -1
- data/lib/fastlane/actions/team_id.rb +1 -1
- data/lib/fastlane/actions/team_name.rb +1 -1
- data/lib/fastlane/actions/testfairy.rb +4 -4
- data/lib/fastlane/actions/testmunk.rb +3 -3
- data/lib/fastlane/actions/tryouts.rb +3 -3
- data/lib/fastlane/actions/twitter.rb +1 -1
- data/lib/fastlane/actions/typetalk.rb +1 -1
- data/lib/fastlane/actions/update_app_group_identifiers.rb +4 -4
- data/lib/fastlane/actions/update_app_identifier.rb +4 -4
- data/lib/fastlane/actions/update_fastlane.rb +22 -13
- data/lib/fastlane/actions/update_info_plist.rb +4 -4
- data/lib/fastlane/actions/update_project_code_signing.rb +5 -5
- data/lib/fastlane/actions/update_project_provisioning.rb +10 -10
- data/lib/fastlane/actions/update_project_team.rb +2 -2
- data/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +104 -0
- data/lib/fastlane/actions/upload_symbols_to_sentry.rb +119 -0
- data/lib/fastlane/actions/verify_pod_keys.rb +2 -2
- data/lib/fastlane/actions/verify_xcode.rb +10 -10
- data/lib/fastlane/actions/xcode_install.rb +2 -2
- data/lib/fastlane/actions/xcode_select.rb +1 -1
- data/lib/fastlane/actions/xcode_server_get_assets.rb +8 -8
- data/lib/fastlane/actions/xcodebuild.rb +7 -7
- data/lib/fastlane/actions/xcov.rb +6 -0
- data/lib/fastlane/actions/xctool.rb +2 -2
- data/lib/fastlane/command_line_handler.rb +1 -1
- data/lib/fastlane/configuration_helper.rb +2 -2
- data/lib/fastlane/core_ext/bundler_monkey_patch.rb +14 -0
- data/lib/fastlane/core_ext/string.rb +4 -4
- data/lib/fastlane/documentation/actions_list.rb +2 -2
- data/lib/fastlane/documentation/docs_generator.rb +3 -3
- data/lib/fastlane/fast_file.rb +6 -6
- data/lib/fastlane/helper/crashlytics_helper.rb +1 -1
- data/lib/fastlane/helper/git_helper.rb +2 -2
- data/lib/fastlane/one_off.rb +1 -1
- data/lib/fastlane/runner.rb +1 -1
- data/lib/fastlane/setup/setup.rb +7 -7
- data/lib/fastlane/setup/setup_android.rb +13 -13
- data/lib/fastlane/setup/setup_ios.rb +24 -27
- data/lib/fastlane/version.rb +1 -1
- metadata +66 -32
@@ -3,7 +3,7 @@ module Fastlane
|
|
3
3
|
class NotifyAction < Action
|
4
4
|
def self.run(params)
|
5
5
|
require 'terminal-notifier'
|
6
|
-
|
6
|
+
UI.important("It's recommended to use the new 'notification' method instead of 'notify'")
|
7
7
|
|
8
8
|
text = params.join(' ')
|
9
9
|
TerminalNotifier.notify(text, title: 'fastlane')
|
@@ -16,7 +16,7 @@ module Fastlane
|
|
16
16
|
raise "Could not find json compilation database at path '#{compile_commands}'".red unless File.exist?(compile_commands)
|
17
17
|
|
18
18
|
if params[:select_reqex]
|
19
|
-
|
19
|
+
UI.important("'select_reqex' paramter is deprecated. Please use 'select_regex' instead.")
|
20
20
|
select_regex = params[:select_reqex]
|
21
21
|
end
|
22
22
|
|
@@ -46,7 +46,7 @@ module Fastlane
|
|
46
46
|
oclint_args << "-list-enabled-rules" if params[:list_enabled_rules]
|
47
47
|
|
48
48
|
if params[:rc]
|
49
|
-
|
49
|
+
UI.important("It's recommended to use 'thresholds' instead of deprecated 'rc' parameter")
|
50
50
|
oclint_args << "-rc=#{params[:rc]}" if params[:rc] # Deprecated
|
51
51
|
end
|
52
52
|
|
@@ -11,7 +11,7 @@ module Fastlane
|
|
11
11
|
require 'uri'
|
12
12
|
require 'base64'
|
13
13
|
|
14
|
-
|
14
|
+
UI.message("Parameter App name: #{params[:app_name]}")
|
15
15
|
auth_token = params[:auth_token]
|
16
16
|
app_name = params[:app_name]
|
17
17
|
apns_p12_password = params[:apns_p12_password]
|
@@ -70,7 +70,7 @@ module Fastlane
|
|
70
70
|
description: "OneSignal Authorization Key",
|
71
71
|
verify_block: proc do |value|
|
72
72
|
unless value.to_s.length > 0
|
73
|
-
|
73
|
+
UI.error("Please add 'ENV[\"ONE_SIGNAL_AUTH_KEY\"] = \"your token\"' to your Fastfile's `before_all` section.")
|
74
74
|
raise 'No ONE_SIGNAL_AUTH_KEY given.'.red
|
75
75
|
end
|
76
76
|
end),
|
@@ -80,7 +80,7 @@ module Fastlane
|
|
80
80
|
description: "OneSignal App Name",
|
81
81
|
verify_block: proc do |value|
|
82
82
|
unless value.to_s.length > 0
|
83
|
-
|
83
|
+
UI.error("Please add 'ENV[\"ONE_SIGNAL_APP_NAME\"] = \"Your app name\"' to your Fastfile's `before_all` section.")
|
84
84
|
raise 'No ONE_SIGNAL_APP_NAME given.'.red
|
85
85
|
end
|
86
86
|
end),
|
@@ -31,7 +31,7 @@ module Fastlane
|
|
31
31
|
|
32
32
|
def self.details
|
33
33
|
[
|
34
|
-
"More details can be found on https://github.com/fastlane/pilot",
|
34
|
+
"More details can be found on https://github.com/fastlane/fastlane/tree/master/pilot",
|
35
35
|
"This integration will only do the TestFlight upload"
|
36
36
|
].join("\n")
|
37
37
|
end
|
@@ -22,8 +22,8 @@ module Fastlane
|
|
22
22
|
command << " --allow-warnings"
|
23
23
|
end
|
24
24
|
|
25
|
-
result = Actions.sh(
|
26
|
-
|
25
|
+
result = Actions.sh(command.to_s)
|
26
|
+
UI.success("Successfully pushed Podspec ⬆️ ")
|
27
27
|
return result
|
28
28
|
end
|
29
29
|
|
@@ -3,21 +3,21 @@ module Fastlane
|
|
3
3
|
class PromptAction < Action
|
4
4
|
def self.run(params)
|
5
5
|
params[:text] += " (y/n)" if params[:boolean]
|
6
|
-
|
6
|
+
UI.message(params[:text])
|
7
7
|
|
8
8
|
return params[:ci_input] if Helper.is_ci?
|
9
9
|
|
10
10
|
if params[:multi_line_end_keyword]
|
11
11
|
# Multi line
|
12
12
|
end_tag = params[:multi_line_end_keyword]
|
13
|
-
|
13
|
+
UI.important("Submit inputs using \"#{params[:multi_line_end_keyword]}\"")
|
14
14
|
user_input = STDIN.gets(end_tag).chomp.gsub(end_tag, "").strip
|
15
15
|
else
|
16
16
|
# Standard one line input
|
17
17
|
user_input = STDIN.gets.chomp.strip while (user_input || "").length == 0
|
18
18
|
end
|
19
19
|
|
20
|
-
user_input =
|
20
|
+
user_input = user_input.casecmp('y').zero? if params[:boolean]
|
21
21
|
return user_input
|
22
22
|
end
|
23
23
|
|
@@ -13,7 +13,7 @@ module Fastlane
|
|
13
13
|
require 'cocoapods-core'
|
14
14
|
spec = Pod::Spec.from_file(path).to_hash
|
15
15
|
|
16
|
-
|
16
|
+
UI.success("Reading podspec from file #{path}")
|
17
17
|
|
18
18
|
Actions.lane_context[SharedValues::READ_PODSPEC_JSON] = spec
|
19
19
|
return spec
|
@@ -4,7 +4,7 @@ module Fastlane
|
|
4
4
|
def self.run(params)
|
5
5
|
require 'xcodeproj'
|
6
6
|
|
7
|
-
|
7
|
+
UI.message("Recreate schemes for project: #{params[:project]}")
|
8
8
|
|
9
9
|
project = Xcodeproj::Project.open(params[:project])
|
10
10
|
project.recreate_user_schemes
|
@@ -31,7 +31,7 @@ module Fastlane
|
|
31
31
|
devices_file = CSV.read(File.expand_path(File.join(devices_file)), col_sep: "\t")
|
32
32
|
raise 'Please provide a file according to the Apple Sample UDID file (https://devimages.apple.com.edgekey.net/downloads/devices/Multiple-Upload-Samples.zip)'.red unless devices_file.first == ['Device ID', 'Device Name']
|
33
33
|
|
34
|
-
|
34
|
+
UI.message("Fetching list of currently registered devices...")
|
35
35
|
existing_devices = Spaceship::Device.all
|
36
36
|
|
37
37
|
device_objs = devices_file.drop(1).map do |device|
|
@@ -46,7 +46,7 @@ module Fastlane
|
|
46
46
|
raise 'You must pass either a valid `devices` or `devices_file`. Please check the readme.'.red
|
47
47
|
end
|
48
48
|
|
49
|
-
|
49
|
+
UI.success("Successfully registered new devices.")
|
50
50
|
return device_objs
|
51
51
|
end
|
52
52
|
|
@@ -27,13 +27,13 @@ module Fastlane
|
|
27
27
|
|
28
28
|
Actions.sh(clean_command) unless params[:skip_clean]
|
29
29
|
|
30
|
-
|
30
|
+
UI.success('Git repo was reset and cleaned back to a pristine state.')
|
31
31
|
else
|
32
32
|
paths.each do |path|
|
33
|
-
|
33
|
+
UI.important("Couldn't find file at path '#{path}'") unless File.exist?(path)
|
34
34
|
Actions.sh("git checkout -- '#{path}'")
|
35
35
|
end
|
36
|
-
|
36
|
+
UI.success("Git cleaned up #{paths.count} files.")
|
37
37
|
end
|
38
38
|
else
|
39
39
|
raise 'This is a destructive and potentially dangerous action. To protect from data loss, please add the `ensure_git_status_clean` action to the beginning of your lane, or if you\'re absolutely sure of what you\'re doing then call this action with the :force option.'.red
|
@@ -6,8 +6,8 @@ module Fastlane
|
|
6
6
|
require 'sigh'
|
7
7
|
|
8
8
|
# try to resign the ipa
|
9
|
-
if Sigh::Resign.resign(params[:ipa], params[:signing_identity], params[:provisioning_profile], params[:entitlements], params[:version])
|
10
|
-
|
9
|
+
if Sigh::Resign.resign(params[:ipa], params[:signing_identity], params[:provisioning_profile], params[:entitlements], params[:version], params[:display_name])
|
10
|
+
UI.success('Successfully re-signed .ipa 🔏.')
|
11
11
|
else
|
12
12
|
raise 'Failed to re-sign .ipa'.red
|
13
13
|
end
|
@@ -67,6 +67,11 @@ module Fastlane
|
|
67
67
|
env_name: "FL_RESIGN_VERSION",
|
68
68
|
description: "Version number to force resigned ipa to use",
|
69
69
|
is_string: true,
|
70
|
+
optional: true),
|
71
|
+
FastlaneCore::ConfigItem.new(key: :display_name,
|
72
|
+
env_name: "FL_DISPLAY_NAME",
|
73
|
+
description: "Display name to force resigned ipa to use",
|
74
|
+
is_string: true,
|
70
75
|
optional: true)
|
71
76
|
]
|
72
77
|
end
|
@@ -7,7 +7,7 @@ module Fastlane
|
|
7
7
|
raise "Could not find file '#{backup_path}'" unless File.exist? backup_path
|
8
8
|
FileUtils.cp(backup_path, path, {preserve: true})
|
9
9
|
FileUtils.rm(backup_path)
|
10
|
-
|
10
|
+
UI.message("Successfully restored backup 📤")
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.description
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class RocketAction < Action
|
4
|
+
def self.run(params)
|
5
|
+
puts "
|
6
|
+
____
|
7
|
+
/ \\
|
8
|
+
| |
|
9
|
+
| |
|
10
|
+
| |
|
11
|
+
\\____/
|
12
|
+
| |
|
13
|
+
| |
|
14
|
+
| |
|
15
|
+
|____|
|
16
|
+
{| |}
|
17
|
+
| |
|
18
|
+
| |
|
19
|
+
| F |
|
20
|
+
| A |
|
21
|
+
| S |
|
22
|
+
| T |
|
23
|
+
| L |
|
24
|
+
| A |
|
25
|
+
/| N |\\
|
26
|
+
|| E ||
|
27
|
+
|| ||
|
28
|
+
\\|____|/
|
29
|
+
/_\\/_\\
|
30
|
+
######
|
31
|
+
########
|
32
|
+
######
|
33
|
+
####
|
34
|
+
####
|
35
|
+
##
|
36
|
+
##
|
37
|
+
##
|
38
|
+
##
|
39
|
+
"
|
40
|
+
end
|
41
|
+
|
42
|
+
#####################################################
|
43
|
+
# @!group Documentation
|
44
|
+
#####################################################
|
45
|
+
|
46
|
+
def self.description
|
47
|
+
"Outputs ascii-art for a rocket 🚀"
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.available_options
|
51
|
+
[
|
52
|
+
]
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.authors
|
56
|
+
["JaviSoto", "radex"]
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.is_supported?(platform)
|
60
|
+
true
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/fastlane/actions/s3.rb
CHANGED
@@ -26,7 +26,6 @@ module Fastlane
|
|
26
26
|
|
27
27
|
class S3Action < Action
|
28
28
|
def self.run(config)
|
29
|
-
require 'shenzhen'
|
30
29
|
# Calling fetch on config so that default values will be used
|
31
30
|
params = {}
|
32
31
|
params[:ipa] = config[:ipa]
|
@@ -45,9 +44,6 @@ module Fastlane
|
|
45
44
|
params[:version_template_path] = config[:version_template_path]
|
46
45
|
params[:version_file_name] = config[:version_file_name]
|
47
46
|
|
48
|
-
# Maps nice developer build parameters to Shenzhen args
|
49
|
-
build_args = params_to_build_args(params)
|
50
|
-
|
51
47
|
# Pulling parameters for other uses
|
52
48
|
s3_region = params[:region]
|
53
49
|
s3_subdomain = params[:region] ? "s3-#{params[:region]}" : "s3"
|
@@ -69,21 +65,16 @@ module Fastlane
|
|
69
65
|
version_template_path = params[:version_template_path]
|
70
66
|
version_file_name = params[:version_file_name]
|
71
67
|
|
72
|
-
|
73
|
-
|
74
|
-
end
|
68
|
+
s3_client = self.s3_client(s3_access_key, s3_secret_access_key, s3_region)
|
69
|
+
bucket = s3_client.buckets[s3_bucket]
|
75
70
|
|
76
|
-
|
77
|
-
build_args = build_args.join(' ')
|
71
|
+
url_part = self.expand_path_with_substitutions_from_ipa_plist(ipa_file, s3_path)
|
78
72
|
|
79
|
-
|
80
|
-
|
81
|
-
|
73
|
+
ipa_file_basename = File.basename(ipa_file)
|
74
|
+
ipa_file_name = "#{url_part}#{ipa_file_basename}"
|
75
|
+
ipa_file_data = File.open(ipa_file, 'rb')
|
82
76
|
|
83
|
-
|
84
|
-
url_part = expand_path_with_substitutions_from_ipa_plist( ipa_file, s3_path )
|
85
|
-
ipa_file_name = File.basename(ipa_file)
|
86
|
-
ipa_url = "https://#{s3_subdomain}.amazonaws.com/#{s3_bucket}/#{url_part}#{ipa_file_name}"
|
77
|
+
ipa_url = self.upload_file(bucket, ipa_file_name, ipa_file_data)
|
87
78
|
|
88
79
|
# Setting action and environment variables
|
89
80
|
Actions.lane_context[SharedValues::S3_IPA_OUTPUT_PATH] = ipa_url
|
@@ -94,14 +85,11 @@ module Fastlane
|
|
94
85
|
dsym_file_name = "#{url_part}#{dsym_file_basename}"
|
95
86
|
dsym_file_data = File.open(dsym_file, 'rb')
|
96
87
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
dsym_file_name,
|
103
|
-
dsym_file_data
|
104
|
-
)
|
88
|
+
dsym_url = self.upload_file(bucket, dsym_file_name, dsym_file_data)
|
89
|
+
|
90
|
+
# Setting action and environment variables
|
91
|
+
Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH] = dsym_url
|
92
|
+
ENV[SharedValues::S3_DSYM_OUTPUT_PATH.to_s] = dsym_url
|
105
93
|
|
106
94
|
end
|
107
95
|
|
@@ -187,82 +175,26 @@ module Fastlane
|
|
187
175
|
#
|
188
176
|
#####################################
|
189
177
|
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
s3_bucket,
|
194
|
-
s3_region,
|
195
|
-
plist_file_name,
|
196
|
-
plist_render,
|
197
|
-
html_file_name,
|
198
|
-
html_render,
|
199
|
-
version_file_name,
|
200
|
-
version_render
|
201
|
-
)
|
202
|
-
|
203
|
-
return true
|
204
|
-
end
|
205
|
-
|
206
|
-
def self.params_to_build_args(params)
|
207
|
-
# Remove nil value params unless :clean or :archive
|
208
|
-
params = params.delete_if { |k, v| (k != :clean && k != :archive ) && v.nil? }
|
209
|
-
|
210
|
-
# Maps nice developer param names to Shenzhen's `ipa build` arguments
|
211
|
-
params.collect do |k, v|
|
212
|
-
v ||= ''
|
213
|
-
if S3_ARGS_MAP[k]
|
214
|
-
value = (v.to_s.length > 0 ? "\"#{v}\"" : "")
|
215
|
-
"#{S3_ARGS_MAP[k]} #{value}".strip
|
216
|
-
end
|
217
|
-
end.compact
|
218
|
-
end
|
219
|
-
|
220
|
-
def self.upload_plist_and_html_to_s3(s3_access_key, s3_secret_access_key, s3_bucket, s3_region, plist_file_name, plist_render, html_file_name, html_render, version_file_name, version_render)
|
221
|
-
Actions.verify_gem!('aws-sdk')
|
222
|
-
require 'aws-sdk'
|
223
|
-
if s3_region
|
224
|
-
s3_client = AWS::S3.new(
|
225
|
-
access_key_id: s3_access_key,
|
226
|
-
secret_access_key: s3_secret_access_key,
|
227
|
-
region: s3_region
|
228
|
-
)
|
229
|
-
else
|
230
|
-
s3_client = AWS::S3.new(
|
231
|
-
access_key_id: s3_access_key,
|
232
|
-
secret_access_key: s3_secret_access_key
|
233
|
-
)
|
234
|
-
end
|
235
|
-
|
236
|
-
bucket = s3_client.buckets[s3_bucket]
|
237
|
-
|
238
|
-
plist_obj = bucket.objects.create(plist_file_name, plist_render.to_s, acl: :public_read)
|
239
|
-
html_obj = bucket.objects.create(html_file_name, html_render.to_s, acl: :public_read)
|
240
|
-
version_obj = bucket.objects.create(version_file_name, version_render.to_s, acl: :public_read)
|
241
|
-
|
242
|
-
# When you enable versioning on a S3 bucket,
|
243
|
-
# writing to an object will create an object version
|
244
|
-
# instead of replacing the existing object.
|
245
|
-
# http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/ObjectVersion.html
|
246
|
-
if plist_obj.kind_of? AWS::S3::ObjectVersion
|
247
|
-
plist_obj = plist_obj.object
|
248
|
-
html_obj = html_obj.object
|
249
|
-
version_obj = version_obj.object
|
250
|
-
end
|
178
|
+
plist_url = self.upload_file(bucket, plist_file_name, plist_render)
|
179
|
+
html_url = self.upload_file(bucket, html_file_name, html_render)
|
180
|
+
version_url = self.upload_file(bucket, version_file_name, version_render)
|
251
181
|
|
252
182
|
# Setting action and environment variables
|
253
|
-
Actions.lane_context[SharedValues::S3_PLIST_OUTPUT_PATH] =
|
254
|
-
ENV[SharedValues::S3_PLIST_OUTPUT_PATH.to_s] =
|
183
|
+
Actions.lane_context[SharedValues::S3_PLIST_OUTPUT_PATH] = plist_url
|
184
|
+
ENV[SharedValues::S3_PLIST_OUTPUT_PATH.to_s] = plist_url
|
185
|
+
|
186
|
+
Actions.lane_context[SharedValues::S3_HTML_OUTPUT_PATH] = html_url
|
187
|
+
ENV[SharedValues::S3_HTML_OUTPUT_PATH.to_s] = html_url
|
255
188
|
|
256
|
-
Actions.lane_context[SharedValues::
|
257
|
-
ENV[SharedValues::
|
189
|
+
Actions.lane_context[SharedValues::S3_VERSION_OUTPUT_PATH] = version_url
|
190
|
+
ENV[SharedValues::S3_VERSION_OUTPUT_PATH.to_s] = version_url
|
258
191
|
|
259
|
-
Actions.lane_context[SharedValues::
|
260
|
-
ENV[SharedValues::S3_VERSION_OUTPUT_PATH.to_s] = version_obj.public_url.to_s
|
192
|
+
UI.success("Successfully uploaded ipa file to '#{Actions.lane_context[SharedValues::S3_IPA_OUTPUT_PATH]}'")
|
261
193
|
|
262
|
-
|
194
|
+
return true
|
263
195
|
end
|
264
196
|
|
265
|
-
def self.
|
197
|
+
def self.s3_client(s3_access_key, s3_secret_access_key, s3_region)
|
266
198
|
Actions.verify_gem!('aws-sdk')
|
267
199
|
require 'aws-sdk'
|
268
200
|
if s3_region
|
@@ -277,22 +209,22 @@ module Fastlane
|
|
277
209
|
secret_access_key: s3_secret_access_key
|
278
210
|
)
|
279
211
|
end
|
212
|
+
s3_client
|
213
|
+
end
|
280
214
|
|
281
|
-
|
282
|
-
|
283
|
-
dsym_obj = bucket.objects.create(dsym_file_name, dsym_file_data, acl: :public_read)
|
215
|
+
def self.upload_file(bucket, file_name, file_data)
|
216
|
+
obj = bucket.objects.create(file_name, file_data, acl: :public_read)
|
284
217
|
|
285
218
|
# When you enable versioning on a S3 bucket,
|
286
219
|
# writing to an object will create an object version
|
287
220
|
# instead of replacing the existing object.
|
288
221
|
# http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/ObjectVersion.html
|
289
|
-
if
|
290
|
-
|
222
|
+
if obj.kind_of? AWS::S3::ObjectVersion
|
223
|
+
obj = obj.object
|
291
224
|
end
|
292
225
|
|
293
|
-
#
|
294
|
-
|
295
|
-
ENV[SharedValues::S3_DSYM_OUTPUT_PATH.to_s] = dsym_obj.public_url.to_s
|
226
|
+
# Return public url
|
227
|
+
obj.public_url.to_s
|
296
228
|
end
|
297
229
|
|
298
230
|
#
|