jenkins_pipeline_builder 1.6.0 → 1.10.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/.rubocop.yml +22 -3
- data/.rubocop_todo.yml +0 -6
- data/.travis.yml +0 -1
- data/Dockerfile +30 -0
- data/README.md +1 -0
- data/jenkins_pipeline_builder.gemspec +5 -8
- data/lib/jenkins_pipeline_builder.rb +2 -2
- data/lib/jenkins_pipeline_builder/cli/describe.rb +0 -2
- data/lib/jenkins_pipeline_builder/cli/helper.rb +3 -2
- data/lib/jenkins_pipeline_builder/cli/list.rb +2 -1
- data/lib/jenkins_pipeline_builder/cli/pipeline.rb +5 -4
- data/lib/jenkins_pipeline_builder/compiler.rb +15 -2
- data/lib/jenkins_pipeline_builder/extension_set.rb +5 -1
- data/lib/jenkins_pipeline_builder/extensions.rb +6 -2
- data/lib/jenkins_pipeline_builder/extensions/build_steps.rb +1 -1
- data/lib/jenkins_pipeline_builder/extensions/helpers/job_attributes/parameters_helper.rb +2 -2
- data/lib/jenkins_pipeline_builder/extensions/helpers/publishers/cobertura_report_helper.rb +1 -0
- data/lib/jenkins_pipeline_builder/extensions/job_attributes.rb +24 -0
- data/lib/jenkins_pipeline_builder/extensions/publishers.rb +26 -1
- data/lib/jenkins_pipeline_builder/extensions/wrappers.rb +2 -1
- data/lib/jenkins_pipeline_builder/generator.rb +7 -2
- data/lib/jenkins_pipeline_builder/job.rb +3 -0
- data/lib/jenkins_pipeline_builder/job_collection.rb +5 -3
- data/lib/jenkins_pipeline_builder/module_registry.rb +4 -0
- data/lib/jenkins_pipeline_builder/promotion.rb +1 -0
- data/lib/jenkins_pipeline_builder/pull_request_generator.rb +12 -11
- data/lib/jenkins_pipeline_builder/remote_dependencies.rb +2 -2
- data/lib/jenkins_pipeline_builder/utils.rb +12 -7
- data/lib/jenkins_pipeline_builder/version.rb +1 -1
- data/lib/jenkins_pipeline_builder/view.rb +3 -1
- data/spec/lib/jenkins_pipeline_builder/cli/helper_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/compiler_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extension_dsl_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extension_set_spec.rb +3 -3
- data/spec/lib/jenkins_pipeline_builder/extensions/build_steps_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb +6 -6
- data/spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/promotion_conditions_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb +28 -11
- data/spec/lib/jenkins_pipeline_builder/extensions/registered_spec.rb +3 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/triggers_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/wrappers_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/extensions_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/project.yaml +1 -0
- data/spec/lib/jenkins_pipeline_builder/generator_spec.rb +90 -36
- data/spec/lib/jenkins_pipeline_builder/job_collection_spec.rb +2 -2
- data/spec/lib/jenkins_pipeline_builder/job_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/module_registry_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/promotion_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/pull_request_generator_spec.rb +16 -16
- data/spec/lib/jenkins_pipeline_builder/spec_helper.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/utils_spec.rb +1 -1
- data/spec/lib/jenkins_pipeline_builder/view_spec.rb +2 -2
- data/spec/requests/pipeline_spec.rb +1 -1
- metadata +20 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13ad923ce7eec2fe757816e9885e1d4128268aaecd27bc6f87e4154159f16dc2
|
4
|
+
data.tar.gz: ab8cea9c820c7ae1007689ddcd01d207e15702cefc33495c38dda717ea22ed14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa3a1eaafe161c5a24897e3301951ffc80def639ed5f67dd6f832122906c2ace7925f8db2d1d68fffcec78fabbd4b7f2b19731b126ef3dd41e838efa7031f728
|
7
|
+
data.tar.gz: b5371cf6bb0a81c55f7f8b12107a73971f4b7564ad97e01760529fc19ea2ac910f283d6c5df6d5727b70a22f1378492e9949e0e4595ebc514cdfb048478e442b
|
data/.rubocop.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
AllCops:
|
2
|
-
TargetRubyVersion: 2.
|
2
|
+
TargetRubyVersion: 2.3.3
|
3
3
|
|
4
4
|
inherit_from: .rubocop_todo.yml
|
5
5
|
|
@@ -15,7 +15,7 @@ Metrics/ClassLength:
|
|
15
15
|
#######
|
16
16
|
# Finalized settings
|
17
17
|
|
18
|
-
|
18
|
+
Layout/LineLength:
|
19
19
|
Max: 120
|
20
20
|
Exclude:
|
21
21
|
- 'spec/lib/jenkins_pipeline_builder/compiler_spec.rb'
|
@@ -32,7 +32,7 @@ Style/Next:
|
|
32
32
|
- 'lib/jenkins_pipeline_builder/extensions/**/*'
|
33
33
|
|
34
34
|
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
35
|
-
|
35
|
+
Naming/VariableName:
|
36
36
|
Exclude:
|
37
37
|
- 'lib/jenkins_pipeline_builder/extensions/**/*'
|
38
38
|
|
@@ -41,3 +41,22 @@ Style/SymbolProc:
|
|
41
41
|
|
42
42
|
Style/FrozenStringLiteralComment:
|
43
43
|
Enabled: false
|
44
|
+
|
45
|
+
Style/SafeNavigation:
|
46
|
+
Enabled: false
|
47
|
+
|
48
|
+
Lint/RaiseException:
|
49
|
+
Enabled: true
|
50
|
+
|
51
|
+
Lint/StructNewOverride:
|
52
|
+
Enabled: true
|
53
|
+
|
54
|
+
Style/HashEachMethods:
|
55
|
+
Enabled: true
|
56
|
+
|
57
|
+
Style/HashTransformKeys:
|
58
|
+
Enabled: true
|
59
|
+
|
60
|
+
Style/HashTransformValues:
|
61
|
+
Enabled: true
|
62
|
+
|
data/.rubocop_todo.yml
CHANGED
@@ -24,12 +24,6 @@ Metrics/BlockLength:
|
|
24
24
|
# Offense count: 5
|
25
25
|
# Cop supports --auto-correct.
|
26
26
|
# Configuration parameters: AutoCorrect.
|
27
|
-
Performance/HashEachMethods:
|
28
|
-
Exclude:
|
29
|
-
- 'lib/jenkins_pipeline_builder/cli/list.rb'
|
30
|
-
- 'lib/jenkins_pipeline_builder/compiler.rb'
|
31
|
-
- 'lib/jenkins_pipeline_builder/extensions.rb'
|
32
|
-
- 'lib/jenkins_pipeline_builder/utils.rb'
|
33
27
|
|
34
28
|
# Offense count: 1
|
35
29
|
# Configuration parameters: MinBodyLength.
|
data/.travis.yml
CHANGED
data/Dockerfile
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
FROM centos:centos7
|
2
|
+
|
3
|
+
ENV RUBY_DIR /ruby
|
4
|
+
ENV RUBY_VERSION 2.3.3
|
5
|
+
ENV RUBY_INSTALL $RUBY_DIR/$RUBY_VERSION
|
6
|
+
ENV BUNDLER_VERSION 1.13.3
|
7
|
+
|
8
|
+
RUN yum update -y && \
|
9
|
+
yum install -y make gcc-c++ which wget tar git mysql-devel \
|
10
|
+
gcc patch readline-devel zlib-devel \
|
11
|
+
libyaml-devel libffi-devel openssl-devel \
|
12
|
+
gdbm-devel ncurses-devel libxml-devel bzip2 libxml2-devel
|
13
|
+
|
14
|
+
RUN cd /usr/src && \
|
15
|
+
git clone https://github.com/rbenv/ruby-build.git && \
|
16
|
+
./ruby-build/install.sh && \
|
17
|
+
mkdir -p $RUBY_INSTALL && \
|
18
|
+
/usr/local/bin/ruby-build $RUBY_VERSION $RUBY_INSTALL && \
|
19
|
+
$RUBY_INSTALL/bin/gem install bundler -v $BUNDLER_VERSION && \
|
20
|
+
rm -rf /usr/src/ruby-build
|
21
|
+
|
22
|
+
ENV PATH $RUBY_INSTALL/bin:$PATH
|
23
|
+
|
24
|
+
WORKDIR /src
|
25
|
+
|
26
|
+
RUN gem install jenkins_pipeline_builder
|
27
|
+
|
28
|
+
RUN mkdir -p /srv
|
29
|
+
WORKDIR /srv
|
30
|
+
ENTRYPOINT ["/bin/bash", "-l" ]
|
data/README.md
CHANGED
@@ -247,6 +247,7 @@ A number of the DSL options rely on Jenkins plugins, including:
|
|
247
247
|
* ansicolor - "AnsiColor"
|
248
248
|
* (view) type: 'categorizedView' - "categorized-view"
|
249
249
|
* hipchat - "HipChat Plugin"
|
250
|
+
* google_chat - "google-chat-notification-plugin"
|
250
251
|
* inject_env_vars - "Environment Injector Plugin"
|
251
252
|
* priority - "Priority Sorter plugin"
|
252
253
|
* downstream - "Parameterized Trigger plugin"
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'jenkins_pipeline_builder/version'
|
5
4
|
|
@@ -19,8 +18,6 @@ automating Job & Pipeline creation from the YAML files checked-in with your appl
|
|
19
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
19
|
spec.require_paths = ['lib']
|
21
20
|
|
22
|
-
ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES'] = 'true'
|
23
|
-
|
24
21
|
spec.add_dependency 'activesupport', '~> 4.2.6'
|
25
22
|
spec.add_dependency 'jenkins_api_client', '~> 1.0.0'
|
26
23
|
spec.add_dependency 'minitar'
|
@@ -29,8 +26,8 @@ automating Job & Pipeline creation from the YAML files checked-in with your appl
|
|
29
26
|
spec.add_dependency 'thor', '>= 0.18.0'
|
30
27
|
|
31
28
|
spec.add_development_dependency 'bump'
|
32
|
-
spec.add_development_dependency 'byebug'
|
33
|
-
spec.add_development_dependency 'equivalent-xml'
|
29
|
+
spec.add_development_dependency 'byebug', '= 11.0.1' # last version with compatibility with ruby 2.3.x
|
30
|
+
spec.add_development_dependency 'equivalent-xml', '= 0.6.0' # last version with compatibility with ruby 2.3.x
|
34
31
|
spec.add_development_dependency 'gem-release'
|
35
32
|
spec.add_development_dependency 'json'
|
36
33
|
spec.add_development_dependency 'kwalify'
|
@@ -38,8 +35,8 @@ automating Job & Pipeline creation from the YAML files checked-in with your appl
|
|
38
35
|
spec.add_development_dependency 'rake'
|
39
36
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
40
37
|
spec.add_development_dependency 'rspec_junit_formatter'
|
41
|
-
spec.add_development_dependency 'rubocop'
|
42
|
-
spec.add_development_dependency 'simplecov'
|
38
|
+
spec.add_development_dependency 'rubocop', '= 0.81' # last version with compatibility with ruby 2.3.x
|
39
|
+
spec.add_development_dependency 'simplecov', '= 0.17.1' # last version with compatibility with ruby 2.3.x
|
43
40
|
spec.add_development_dependency 'simplecov-rcov'
|
44
41
|
spec.add_development_dependency 'webmock', '~> 1.0'
|
45
42
|
spec.add_development_dependency 'yard'
|
@@ -41,7 +41,7 @@ module JenkinsPipelineBuilder
|
|
41
41
|
attr_reader :client, :credentials, :debug, :file_mode
|
42
42
|
attr_writer :logger
|
43
43
|
def generator
|
44
|
-
@
|
44
|
+
@generator ||= Generator.new
|
45
45
|
end
|
46
46
|
|
47
47
|
def file_mode!
|
@@ -83,7 +83,7 @@ require 'jenkins_pipeline_builder/extensions'
|
|
83
83
|
require 'jenkins_pipeline_builder/extension_dsl'
|
84
84
|
require 'jenkins_pipeline_builder/extension_set'
|
85
85
|
require 'jenkins_pipeline_builder/extensions/helpers/extension_helper'
|
86
|
-
Dir[File.join(File.dirname(__FILE__), 'jenkins_pipeline_builder/extensions/helpers/**/*.rb')].each do |file|
|
86
|
+
Dir[File.join(File.dirname(__FILE__), 'jenkins_pipeline_builder/extensions/helpers/**/*.rb')].sort.each do |file|
|
87
87
|
require file
|
88
88
|
end
|
89
89
|
|
@@ -26,7 +26,6 @@ module JenkinsPipelineBuilder
|
|
26
26
|
entries << :job_attributes
|
27
27
|
entries.try(:each) do |entry|
|
28
28
|
klass_name = entry.to_s.classify
|
29
|
-
# rubocop:disable Style/AccessModifierIndentation
|
30
29
|
klass = Class.new(Thor) do
|
31
30
|
extensions = if entry == :job_attributes
|
32
31
|
JenkinsPipelineBuilder.registry.registry[:job].select { |_, x| x.is_a? ExtensionSet }
|
@@ -49,7 +48,6 @@ module JenkinsPipelineBuilder
|
|
49
48
|
puts "#{ext.name}: #{ext.description}"
|
50
49
|
end
|
51
50
|
end
|
52
|
-
# rubocop:enable Style/AccessModifierIndentation
|
53
51
|
Module.const_set(klass_name, klass)
|
54
52
|
end
|
55
53
|
|
@@ -80,6 +80,7 @@ module JenkinsPipelineBuilder
|
|
80
80
|
def self.process_creds_file(file)
|
81
81
|
return load File.expand_path(file) if file.end_with? 'rb'
|
82
82
|
return self.jenkins_api_creds = JSON.parse(IO.read(File.expand_path(file))) if file.end_with? 'json'
|
83
|
+
|
83
84
|
self.jenkins_api_creds = YAML.load_file(File.expand_path(file))
|
84
85
|
end
|
85
86
|
|
@@ -97,14 +98,13 @@ module JenkinsPipelineBuilder
|
|
97
98
|
end
|
98
99
|
end
|
99
100
|
|
100
|
-
private_class_method
|
101
|
-
|
102
101
|
def self.find_default_file
|
103
102
|
default_file_name = "#{ENV['HOME']}/.jenkins_api_client/login"
|
104
103
|
|
105
104
|
found_suffix = nil
|
106
105
|
DEFAULT_FILE_FORMATS.each do |suffix|
|
107
106
|
next unless File.exist?("#{default_file_name}.#{suffix}")
|
107
|
+
|
108
108
|
if !found_suffix
|
109
109
|
found_suffix = suffix
|
110
110
|
else
|
@@ -118,6 +118,7 @@ module JenkinsPipelineBuilder
|
|
118
118
|
def self.logger
|
119
119
|
JenkinsPipelineBuilder.logger
|
120
120
|
end
|
121
|
+
private_class_method :find_default_file, :logger
|
121
122
|
end
|
122
123
|
end
|
123
124
|
end
|
@@ -23,7 +23,7 @@
|
|
23
23
|
module JenkinsPipelineBuilder
|
24
24
|
module CLI
|
25
25
|
class List < Thor
|
26
|
-
JenkinsPipelineBuilder.registry.entries.
|
26
|
+
JenkinsPipelineBuilder.registry.entries.each_key do |entry|
|
27
27
|
desc entry, "List all #{entry}"
|
28
28
|
define_method(entry) do
|
29
29
|
entries = JenkinsPipelineBuilder.registry.registry[:job][entry]
|
@@ -39,6 +39,7 @@ module JenkinsPipelineBuilder
|
|
39
39
|
entries = JenkinsPipelineBuilder.registry.registry[:job]
|
40
40
|
entries.each do |name, set|
|
41
41
|
next unless set.is_a? ExtensionSet
|
42
|
+
|
42
43
|
ext = set.extensions.first
|
43
44
|
display_module(name, ext)
|
44
45
|
end
|
@@ -31,7 +31,7 @@ module JenkinsPipelineBuilder
|
|
31
31
|
Helper.setup(parent_options).dump(job_name)
|
32
32
|
end
|
33
33
|
|
34
|
-
desc 'bootstrap Path', 'Generates pipeline from folder or a file'
|
34
|
+
desc 'bootstrap Path [ProjectName]', 'Generates pipeline from folder or a file'
|
35
35
|
def bootstrap(path, project_name = nil)
|
36
36
|
failed = Helper.setup(parent_options).bootstrap(path, project_name)
|
37
37
|
exit(0) if failed.empty? # weird ordering, but rubocop decrees
|
@@ -39,12 +39,13 @@ module JenkinsPipelineBuilder
|
|
39
39
|
exit(1)
|
40
40
|
end
|
41
41
|
|
42
|
-
|
42
|
+
option :base_branch_only, type: :boolean
|
43
|
+
desc 'pull_request Path [ProjectName] [--base_branch_only]', 'Generates jenkins jobs based on a git pull request.'
|
43
44
|
def pull_request(path, project_name = nil)
|
44
|
-
Helper.setup(parent_options).pull_request(path, project_name)
|
45
|
+
Helper.setup(parent_options).pull_request(path, project_name, options[:base_branch_only])
|
45
46
|
end
|
46
47
|
|
47
|
-
desc 'file Path', 'Does the same thing as bootstrap but doesn\'t actually create jobs on the server'
|
48
|
+
desc 'file Path [ProjectName]', 'Does the same thing as bootstrap but doesn\'t actually create jobs on the server'
|
48
49
|
def file(path, project_name = nil)
|
49
50
|
Helper.setup(parent_options).file(path, project_name)
|
50
51
|
end
|
@@ -33,11 +33,14 @@ module JenkinsPipelineBuilder
|
|
33
33
|
item = item_bag[:value]
|
34
34
|
bag = {}
|
35
35
|
return unless item.is_a?(Hash)
|
36
|
-
|
36
|
+
|
37
|
+
item.each_key do |k|
|
37
38
|
val = item[k]
|
38
39
|
next unless val.is_a? String
|
40
|
+
|
39
41
|
new_value = resolve_value(val, settings_bag)
|
40
42
|
return nil if new_value.nil?
|
43
|
+
|
41
44
|
bag[k] = new_value
|
42
45
|
end
|
43
46
|
my_settings_bag = settings_bag.clone
|
@@ -48,7 +51,7 @@ module JenkinsPipelineBuilder
|
|
48
51
|
new_item = compile(item, settings)
|
49
52
|
[true, new_item]
|
50
53
|
rescue StandardError => e
|
51
|
-
|
54
|
+
[false, [e.message]]
|
52
55
|
end
|
53
56
|
|
54
57
|
def compile(item, settings = {})
|
@@ -67,10 +70,12 @@ module JenkinsPipelineBuilder
|
|
67
70
|
|
68
71
|
def handle_enable(item, settings)
|
69
72
|
return item unless item.is_a? Hash
|
73
|
+
|
70
74
|
if enable_block_present? item
|
71
75
|
enabled_switch = resolve_value(item[:enabled], settings)
|
72
76
|
return {} if enabled_switch == 'false'
|
73
77
|
raise "Invalid value for #{item[:enabled]}: #{enabled_switch}" if enabled_switch != 'true'
|
78
|
+
|
74
79
|
if item[:parameters].is_a? Hash
|
75
80
|
item = item.merge item[:parameters]
|
76
81
|
item.delete :parameters
|
@@ -105,8 +110,10 @@ module JenkinsPipelineBuilder
|
|
105
110
|
|
106
111
|
def compile_array_item(item, settings, array)
|
107
112
|
raise "Found a nil value when processing following array:\n #{array.inspect}" if item.nil?
|
113
|
+
|
108
114
|
payload = compile(item, settings)
|
109
115
|
raise "Failed to resolve:\n===>item #{item}\n\n===>of list: #{array.inspect}" if payload.nil?
|
116
|
+
|
110
117
|
payload
|
111
118
|
end
|
112
119
|
|
@@ -114,8 +121,10 @@ module JenkinsPipelineBuilder
|
|
114
121
|
if value.nil?
|
115
122
|
raise "key: #{key} has a nil value, this is often a yaml syntax error. Skipping children and siblings"
|
116
123
|
end
|
124
|
+
|
117
125
|
payload = compile(value, settings)
|
118
126
|
raise "Failed to resolve:\n===>key: #{key}\n\n===>value: #{value} payload" if payload.nil?
|
127
|
+
|
119
128
|
payload
|
120
129
|
end
|
121
130
|
|
@@ -135,6 +144,7 @@ module JenkinsPipelineBuilder
|
|
135
144
|
pull_job = value.to_s.match(/{{pull@(.*)}}/)
|
136
145
|
if pull_job
|
137
146
|
return pull_job[1] unless settings[:pull_request_number]
|
147
|
+
|
138
148
|
value = pull_job[1]
|
139
149
|
end
|
140
150
|
|
@@ -151,16 +161,19 @@ module JenkinsPipelineBuilder
|
|
151
161
|
vars.select! do |var|
|
152
162
|
var_val = settings[var]
|
153
163
|
raise "Could not find defined substitution variable: #{var}" if var_val.nil?
|
164
|
+
|
154
165
|
value_s.gsub!("{{#{var}}}", var_val.to_s)
|
155
166
|
var_val.nil?
|
156
167
|
end
|
157
168
|
return nil if vars.count != 0
|
169
|
+
|
158
170
|
value_s
|
159
171
|
end
|
160
172
|
|
161
173
|
def correct_job_names!(value)
|
162
174
|
vars = value.scan(/{{job@(.*)}}/).flatten
|
163
175
|
return unless vars.count > 0
|
176
|
+
|
164
177
|
vars.select! do |var|
|
165
178
|
var_val = job_collection[var.to_s]
|
166
179
|
value.gsub!("{{job@#{var}}}", var_val[:value][:name]) unless var_val.nil?
|
@@ -12,6 +12,7 @@ module JenkinsPipelineBuilder
|
|
12
12
|
SET_METHODS.each do |method_name|
|
13
13
|
define_method method_name do |value = nil|
|
14
14
|
return settings[method_name] if value.nil?
|
15
|
+
|
15
16
|
settings[method_name] = value
|
16
17
|
end
|
17
18
|
end
|
@@ -35,7 +36,6 @@ module JenkinsPipelineBuilder
|
|
35
36
|
end
|
36
37
|
|
37
38
|
def installed_version=(version)
|
38
|
-
version = version.match(/\d+\.\d+(\.\d+)?/)
|
39
39
|
@version = Gem::Version.new version
|
40
40
|
end
|
41
41
|
|
@@ -53,9 +53,11 @@ module JenkinsPipelineBuilder
|
|
53
53
|
|
54
54
|
def installed_version
|
55
55
|
return @version if @version
|
56
|
+
|
56
57
|
reg = JenkinsPipelineBuilder.registry
|
57
58
|
version = reg.versions[settings[:plugin_id]]
|
58
59
|
raise "Plugin #{settings[:name]} is not installed (plugin_id: #{settings[:plugin_id]})" if version.nil?
|
60
|
+
|
59
61
|
self.installed_version = version
|
60
62
|
@version
|
61
63
|
end
|
@@ -103,6 +105,7 @@ module JenkinsPipelineBuilder
|
|
103
105
|
end
|
104
106
|
unless block
|
105
107
|
raise "no block found for version #{version}" unless blocks.key version
|
108
|
+
|
106
109
|
return blocks[version][:block]
|
107
110
|
end
|
108
111
|
store_xml version, block, path
|
@@ -122,6 +125,7 @@ module JenkinsPipelineBuilder
|
|
122
125
|
end
|
123
126
|
|
124
127
|
return instance_variable_get(method_name) unless block
|
128
|
+
|
125
129
|
blocks[version] = {} unless blocks[version]
|
126
130
|
blocks[version][method_name] = block
|
127
131
|
end
|
@@ -37,9 +37,10 @@ module JenkinsPipelineBuilder
|
|
37
37
|
parameters: []
|
38
38
|
}.freeze
|
39
39
|
|
40
|
-
EXT_METHODS.
|
40
|
+
EXT_METHODS.each_key do |method_name|
|
41
41
|
define_method method_name do |value = nil|
|
42
42
|
return instance_variable_get("@#{method_name}") if value.nil?
|
43
|
+
|
43
44
|
instance_variable_set("@#{method_name}", value)
|
44
45
|
end
|
45
46
|
end
|
@@ -59,6 +60,7 @@ module JenkinsPipelineBuilder
|
|
59
60
|
def execute(value, n_xml)
|
60
61
|
errors = check_parameters value
|
61
62
|
raise ArgumentError, errors.join("\n") if errors.any?
|
63
|
+
|
62
64
|
unless path
|
63
65
|
raise ArgumentError, %(Extension #{name} has no valid path
|
64
66
|
Check ModuleRegistry#entries and the definition of the extension
|
@@ -76,9 +78,11 @@ module JenkinsPipelineBuilder
|
|
76
78
|
def check_parameters(value)
|
77
79
|
return [] if parameters && parameters.empty?
|
78
80
|
return [] unless value.is_a? Hash
|
81
|
+
|
79
82
|
errors = []
|
80
83
|
value.each_key do |key|
|
81
84
|
next if parameters && parameters.include?(key)
|
85
|
+
|
82
86
|
errors << "Extension #{name} does not support parameter #{key}"
|
83
87
|
end
|
84
88
|
errors
|
@@ -86,7 +90,7 @@ module JenkinsPipelineBuilder
|
|
86
90
|
|
87
91
|
def errors
|
88
92
|
errors = {}
|
89
|
-
EXT_METHODS.
|
93
|
+
EXT_METHODS.each_key do |name|
|
90
94
|
errors[name] = 'Must be set' if send(name).nil?
|
91
95
|
end
|
92
96
|
errors
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class ParametersHelper < ExtensionHelper
|
2
|
-
# rubocop:disable CyclomaticComplexity
|
2
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
3
3
|
def param_type(param)
|
4
4
|
case param[:type]
|
5
5
|
when 'string'
|
@@ -18,5 +18,5 @@ class ParametersHelper < ExtensionHelper
|
|
18
18
|
'hudson.model.StringParameterDefinition'
|
19
19
|
end
|
20
20
|
end
|
21
|
-
# rubocop:enable CyclomaticComplexity
|
21
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
22
22
|
end
|