Class: Fastlane::Actions::SetupCiAction
- Inherits:
-
Fastlane::Action
- Object
- Fastlane::Action
- Fastlane::Actions::SetupCiAction
- Defined in:
- fastlane/lib/fastlane/actions/setup_ci.rb
Constant Summary
Constants inherited from Fastlane::Action
Fastlane::Action::AVAILABLE_CATEGORIES, Fastlane::Action::RETURN_TYPES
Documentation collapse
- .authors ⇒ Object
- .available_options ⇒ Object
- .category ⇒ Object
- .description ⇒ Object
- .details ⇒ Object
- .example_code ⇒ Object
- .is_supported?(platform) ⇒ Boolean
Class Method Summary collapse
- .detect_provider(params) ⇒ Object
- .run(params) ⇒ Object
- .setup_keychain(params) ⇒ Object
- .setup_output_paths ⇒ Object
- .should_run?(params) ⇒ Boolean
Methods inherited from Fastlane::Action
action_name, author, deprecated_notes, lane_context, method_missing, other_action, output, return_type, return_value, sample_return_value, shell_out_should_use_bundle_exec?, step_text
Class Method Details
.authors ⇒ Object
120 121 122 |
# File 'fastlane/lib/fastlane/actions/setup_ci.rb', line 120 def self. ["mollyIV", "svenmuennich"] end |
.available_options ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'fastlane/lib/fastlane/actions/setup_ci.rb', line 90 def self. [ FastlaneCore::ConfigItem.new(key: :force, env_name: "FL_SETUP_CI_FORCE", description: "Force setup, even if not executed by CI", type: Boolean, default_value: false), FastlaneCore::ConfigItem.new(key: :provider, env_name: "FL_SETUP_CI_PROVIDER", description: "CI provider. If none is set, the provider is detected automatically", optional: true, verify_block: proc do |value| value = value.to_s # Validate both 'travis' and 'circleci' for backwards compatibility, even # though only the latter receives special treatment by this action UI.user_error!("A given CI provider '#{value}' is not supported. Available CI providers: 'travis', 'circleci'") unless ["travis", "circleci"].include?(value) end), FastlaneCore::ConfigItem.new(key: :timeout, env_name: "FL_SETUP_CI_TIMEOUT", description: "Set a custom timeout in seconds for keychain. Set `0` if you want to specify 'no time-out'", type: Integer, default_value: 3600), FastlaneCore::ConfigItem.new(key: :keychain_name, env_name: "FL_SETUP_CI_KEYCHAIN_NAME", description: "Set a custom keychain name", type: String, default_value: "fastlane_tmp_keychain") ] end |
.category ⇒ Object
145 146 147 |
# File 'fastlane/lib/fastlane/actions/setup_ci.rb', line 145 def self.category :misc end |
.description ⇒ Object
73 74 75 |
# File 'fastlane/lib/fastlane/actions/setup_ci.rb', line 73 def self.description "Setup the keychain and match to work with CI" end |
.details ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'fastlane/lib/fastlane/actions/setup_ci.rb', line 77 def self.details list = <<-LIST.markdown_list(true) Creates a new temporary keychain for use with match Switches match to `readonly` mode to not create new profiles/cert on CI Sets up log and test result paths to be easily collectible LIST [ list, "This action helps with CI integration. Add this to the top of your Fastfile if you use CI." ].join("\n") end |
.detect_provider(params) ⇒ Object
22 23 24 |
# File 'fastlane/lib/fastlane/actions/setup_ci.rb', line 22 def self.detect_provider(params) params[:provider] || (Helper.is_circle_ci? ? 'circleci' : nil) || (Helper.is_codebuild? ? 'codebuild' : nil) end |
.example_code ⇒ Object
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'fastlane/lib/fastlane/actions/setup_ci.rb', line 128 def self.example_code [ 'setup_ci( provider: "circleci" )', 'setup_ci( provider: "circleci", timeout: 0 )', 'setup_ci( provider: "circleci", timeout: 0, keychain_name: "custom_keychain_name" )' ] end |
.is_supported?(platform) ⇒ Boolean
124 125 126 |
# File 'fastlane/lib/fastlane/actions/setup_ci.rb', line 124 def self.is_supported?(platform) [:ios, :mac].include?(platform) end |
.run(params) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'fastlane/lib/fastlane/actions/setup_ci.rb', line 4 def self.run(params) unless should_run?(params) UI.("Not running on CI, skipping CI setup") return end case detect_provider(params) when 'circleci', 'codebuild' setup_output_paths end setup_keychain(params) end |
.setup_keychain(params) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'fastlane/lib/fastlane/actions/setup_ci.rb', line 26 def self.setup_keychain(params) unless Helper.mac? UI.("Skipping Keychain setup on non-macOS CI Agent") return end unless ENV["MATCH_KEYCHAIN_NAME"].nil? UI.("Skipping Keychain setup as a keychain was already specified") return end keychain_name = params[:keychain_name] ENV["MATCH_KEYCHAIN_NAME"] = keychain_name ENV["MATCH_KEYCHAIN_PASSWORD"] = "" UI.("Creating temporary keychain: \"#{keychain_name}\".") Actions::CreateKeychainAction.run( name: keychain_name, default_keychain: true, unlock: true, timeout: params[:timeout], lock_when_sleeps: true, password: "", add_to_search_list: true ) UI.("Enabling match readonly mode.") ENV["MATCH_READONLY"] = true.to_s end |
.setup_output_paths ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'fastlane/lib/fastlane/actions/setup_ci.rb', line 56 def self.setup_output_paths unless ENV["FL_OUTPUT_DIR"] UI.("Skipping Log Path setup as FL_OUTPUT_DIR is unset") return end root = Pathname.new(ENV["FL_OUTPUT_DIR"]) ENV["SCAN_OUTPUT_DIRECTORY"] = (root + "scan").to_s ENV["GYM_OUTPUT_DIRECTORY"] = (root + "gym").to_s ENV["FL_BUILDLOG_PATH"] = (root + "buildlogs").to_s ENV["SCAN_INCLUDE_SIMULATOR_LOGS"] = true.to_s end |