Class: Fastlane::Actions::CopyArtifactsAction
- Inherits:
-
Fastlane::Action
- Object
- Fastlane::Action
- Fastlane::Actions::CopyArtifactsAction
- Defined in:
- lib/fastlane/actions/copy_artifacts.rb
Constant Summary
Constants inherited from Fastlane::Action
Fastlane::Action::AVAILABLE_CATEGORIES
Documentation collapse
- .authors ⇒ Object
- .available_options ⇒ Object
- .category ⇒ Object
- .description ⇒ Object
- .details ⇒ Object
- .example_code ⇒ Object
- .is_supported?(platform) ⇒ Boolean
Class Method Summary collapse
Methods inherited from Fastlane::Action
action_name, author, lane_context, method_missing, other_action, output, return_value, sample_return_value, sh, step_text
Class Method Details
.authors ⇒ Object
81 82 83 |
# File 'lib/fastlane/actions/copy_artifacts.rb', line 81 def self. ["lmirosevic"] end |
.available_options ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/fastlane/actions/copy_artifacts.rb', line 56 def self. [ FastlaneCore::ConfigItem.new(key: :keep_original, description: "Set this to true if you want copy, rather than move, semantics", is_string: false, optional: true, default_value: true), FastlaneCore::ConfigItem.new(key: :target_path, description: "The directory in which you want your artifacts placed", is_string: false, optional: false, default_value: 'artifacts'), FastlaneCore::ConfigItem.new(key: :artifacts, description: "An array of file patterns of the files/folders you want to preserve", is_string: false, optional: false, default_value: []), FastlaneCore::ConfigItem.new(key: :fail_on_missing, description: "Fail when a source file isn't found", is_string: false, optional: true, default_value: false) ] end |
.category ⇒ Object
103 104 105 |
# File 'lib/fastlane/actions/copy_artifacts.rb', line 103 def self.category :misc end |
.description ⇒ Object
45 46 47 |
# File 'lib/fastlane/actions/copy_artifacts.rb', line 45 def self.description "Small action to save your build artifacts. Useful when you use reset_git_repo" end |
.details ⇒ Object
49 50 51 52 53 54 |
# File 'lib/fastlane/actions/copy_artifacts.rb', line 49 def self.details [ "This action copies artifacs to a target directory. It's useful if you have a CI that will pick up these artifacts and attach them to the build. Useful e.g. for storing your `.ipa`s, `.dSYM.zip`s, `.mobileprovision`s, `.cert`s", "Make sure your target_path is gitignored, and if you use `reset_git_repo`, make sure the artifacts are added to the exclude list" ].join("\n") end |
.example_code ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/fastlane/actions/copy_artifacts.rb', line 89 def self.example_code [ 'copy_artifacts( target_path: "artifacts", artifacts: ["*.cer", "*.mobileprovision", "*.ipa", "*.dSYM.zip"] ) # Reset the git repo to a clean state, but leave our artifacts in place reset_git_repo( exclude: "artifacts" )' ] end |
.is_supported?(platform) ⇒ Boolean
85 86 87 |
# File 'lib/fastlane/actions/copy_artifacts.rb', line 85 def self.is_supported?(platform) true end |
.run(params) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/fastlane/actions/copy_artifacts.rb', line 6 def self.run(params) # expand the path to make sure we can deal with relative paths target_path = File.(params[:target_path]) # we want to make sure that our target folder exist already FileUtils.mkdir_p(target_path) # Ensure that artifacts is an array artifacts_to_search = [params[:artifacts]].flatten # If any of the paths include "*", we assume that we are referring to the Unix entries # e.g /tmp/fastlane/* refers to all the files in /tmp/fastlane # We use Dir.glob to expand all those paths, this would create an array of arrays though, so flatten artifacts = artifacts_to_search.map { |f| f.include?("*") ? Dir.glob(f) : f }.flatten UI.verbose("Copying artifacts #{artifacts.join(', ')} to #{target_path}") UI.verbose(params[:keep_original] ? "Keeping original files" : "Not keeping original files") if params[:fail_on_missing] missing = artifacts.select { |a| !File.exist?(a) } UI.user_error! "Not all files were present in copy artifacts. Missing #{missing.join(', ')}" unless missing.empty? else # If we don't fail on non-existant files, don't try to copy non-existant files artifacts.reject! { |artifact| !File.exist?(artifact) } end if params[:keep_original] FileUtils.cp_r(artifacts, target_path, remove_destination: true) else FileUtils.mv(artifacts, target_path, force: true) end UI.success('Build artifacts successfully copied!') end |