Class: JenkinsPipelineBuilder::Generator
- Inherits:
-
Object
- Object
- JenkinsPipelineBuilder::Generator
- Defined in:
- lib/jenkins_pipeline_builder/generator.rb
Instance Attribute Summary collapse
-
#job_collection ⇒ Object
Returns the value of attribute job_collection.
-
#job_templates ⇒ Object
Returns the value of attribute job_templates.
-
#module_registry ⇒ Object
Returns the value of attribute module_registry.
-
#no_files ⇒ Object
Returns the value of attribute no_files.
Instance Method Summary collapse
- #bootstrap(path, project_name = nil) ⇒ Object
- #client ⇒ Object
- #dump(job_name) ⇒ Object
-
#file(path, project_name) ⇒ Object
rubocop:enable Metrics/AbcSize.
-
#initialize ⇒ Generator
constructor
A new instance of Generator.
- #logger ⇒ Object
- #projects(path) ⇒ Object
-
#pull_request(path, project_name, base_branch_only = false) ⇒ Object
rubocop:disable Metrics/AbcSize.
-
#resolve_job_by_name(name, settings = {}) ⇒ Object
(also: #resolve_section_by_name)
Works for jobs, views, and promotions.
- #resolve_project(project) ⇒ Object
- #view ⇒ Object
Constructor Details
#initialize ⇒ Generator
Returns a new instance of Generator.
29 30 31 32 33 34 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 29 def initialize @job_templates = {} @extensions = {} @module_registry = ModuleRegistry.new @job_collection = JobCollection.new end |
Instance Attribute Details
#job_collection ⇒ Object
Returns the value of attribute job_collection.
27 28 29 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 27 def job_collection @job_collection end |
#job_templates ⇒ Object
Returns the value of attribute job_templates.
27 28 29 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 27 def job_templates @job_templates end |
#module_registry ⇒ Object
Returns the value of attribute module_registry.
27 28 29 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 27 def module_registry @module_registry end |
#no_files ⇒ Object
Returns the value of attribute no_files.
27 28 29 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 27 def no_files @no_files end |
Instance Method Details
#bootstrap(path, project_name = nil) ⇒ Object
53 54 55 56 57 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 53 def bootstrap(path, project_name = nil) logger.info "Bootstrapping pipeline from path #{path}" load_job_collection path unless job_collection.loaded? publish(project_name || job_collection.projects.first[:name]) end |
#client ⇒ Object
40 41 42 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 40 def client JenkinsPipelineBuilder.client end |
#dump(job_name) ⇒ Object
84 85 86 87 88 89 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 84 def dump(job_name) logger.info "Debug #{JenkinsPipelineBuilder.debug}" logger.info "Dumping #{job_name} into #{job_name}.xml" xml = client.job.get_config(job_name) File.open(job_name + '.xml', 'w') { |f| f.write xml } end |
#file(path, project_name) ⇒ Object
rubocop:enable Metrics/AbcSize
78 79 80 81 82 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 78 def file(path, project_name) logger.info "Generating files from path #{path}" JenkinsPipelineBuilder.file_mode! bootstrap(path, project_name) end |
#logger ⇒ Object
36 37 38 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 36 def logger JenkinsPipelineBuilder.logger end |
#projects(path) ⇒ Object
48 49 50 51 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 48 def projects(path) load_job_collection path unless job_collection.loaded? job_collection.projects.map { |p| p[:name] } end |
#pull_request(path, project_name, base_branch_only = false) ⇒ Object
rubocop:disable Metrics/AbcSize
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 60 def pull_request(path, project_name, base_branch_only = false) logger.info "Pull Request Generator Running from path #{path}" load_job_collection path unless job_collection.loaded? defaults = job_collection.defaults[:value] pr_generator = PullRequestGenerator.new defaults pr_generator.delete_closed_prs errors = [] pr_generator.open_prs.each do |pr| next if base_branch_only && defaults[:git_branch] != pr[:base] pr_generator.convert! job_collection, pr[:number] error = publish(project_name) errors << error unless error.empty? end errors.empty? end |
#resolve_job_by_name(name, settings = {}) ⇒ Object Also known as: resolve_section_by_name
Works for jobs, views, and promotions
106 107 108 109 110 111 112 113 114 115 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 106 def resolve_job_by_name(name, settings = {}) job = job_collection.get_item(name) raise "Failed to locate job by name '#{name}'" if job.nil? job_value = job[:value] logger.debug "Compiling job #{name}" compiler = JenkinsPipelineBuilder::Compiler.new self success, payload = compiler.compile_job(job_value, settings) [success, payload] end |
#resolve_project(project) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 91 def resolve_project(project) defaults = job_collection.defaults settings = defaults.nil? ? {} : defaults[:value] || {} compiler = JenkinsPipelineBuilder::Compiler.new self project[:settings] = compiler.get_settings_bag(project, settings) errors = process_project project print_project_errors errors return false, 'Encountered errors exiting' unless errors.empty? [true, project] end |
#view ⇒ Object
44 45 46 |
# File 'lib/jenkins_pipeline_builder/generator.rb', line 44 def view JenkinsPipelineBuilder::View.new(self) end |