jenkins_pipeline_builder 0.15.4 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +5 -13
  2. data/example/pipeline/Example-Pipeline.yaml +21 -21
  3. data/example/pipeline/Example-Promotion.yaml +32 -0
  4. data/example/pipeline/Example-Release.yaml +2 -0
  5. data/example/pipeline/project.yaml +2 -0
  6. data/jenkins_pipeline_builder.gemspec +1 -0
  7. data/lib/jenkins_pipeline_builder.rb +5 -0
  8. data/lib/jenkins_pipeline_builder/cli/describe.rb +5 -3
  9. data/lib/jenkins_pipeline_builder/custom_errors.rb +20 -0
  10. data/lib/jenkins_pipeline_builder/extension_dsl.rb +2 -2
  11. data/lib/jenkins_pipeline_builder/extension_set.rb +12 -5
  12. data/lib/jenkins_pipeline_builder/extensions.rb +7 -6
  13. data/lib/jenkins_pipeline_builder/extensions/build_steps.rb +93 -0
  14. data/lib/jenkins_pipeline_builder/extensions/helpers/build_steps/triggered_job.rb +36 -0
  15. data/lib/jenkins_pipeline_builder/extensions/helpers/builders/blocking_downstream_helper.rb +2 -2
  16. data/lib/jenkins_pipeline_builder/extensions/helpers/builders/maven3_helper.rb +2 -2
  17. data/lib/jenkins_pipeline_builder/extensions/helpers/extension_helper.rb +7 -7
  18. data/lib/jenkins_pipeline_builder/extensions/helpers/triggers/upstream_helper.rb +2 -2
  19. data/lib/jenkins_pipeline_builder/extensions/job_attributes.rb +60 -1
  20. data/lib/jenkins_pipeline_builder/extensions/promotion_conditions.rb +80 -0
  21. data/lib/jenkins_pipeline_builder/generator.rb +65 -57
  22. data/lib/jenkins_pipeline_builder/job.rb +1 -7
  23. data/lib/jenkins_pipeline_builder/job_collection.rb +16 -14
  24. data/lib/jenkins_pipeline_builder/module_registry.rb +4 -4
  25. data/lib/jenkins_pipeline_builder/promotion.rb +82 -0
  26. data/lib/jenkins_pipeline_builder/utils.rb +6 -0
  27. data/lib/jenkins_pipeline_builder/version.rb +1 -1
  28. data/lib/jenkins_pipeline_builder/view.rb +1 -4
  29. data/spec/lib/jenkins_pipeline_builder/extensions/build_steps_spec.rb +198 -0
  30. data/spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb +1 -3
  31. data/spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb +63 -0
  32. data/spec/lib/jenkins_pipeline_builder/extensions/promotion_conditions_spec.rb +281 -0
  33. data/spec/lib/jenkins_pipeline_builder/extensions/registered_spec.rb +11 -3
  34. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-30-Release.yaml +3 -1
  35. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-40-Promotion.yaml +31 -0
  36. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/project.yaml +3 -1
  37. data/spec/lib/jenkins_pipeline_builder/fixtures/promotions_test/sample_promotion.yaml +31 -0
  38. data/spec/lib/jenkins_pipeline_builder/generator_spec.rb +2 -2
  39. data/spec/lib/jenkins_pipeline_builder/job_spec.rb +1 -19
  40. data/spec/lib/jenkins_pipeline_builder/promotion_spec.rb +88 -0
  41. data/spec/lib/jenkins_pipeline_builder/spec_helper.rb +6 -0
  42. metadata +86 -59
  43. data/lib/jenkins_pipeline_builder/project.rb +0 -26
@@ -10,6 +10,7 @@ WRAPPERS = {
10
10
  timestamp: ['0'],
11
11
  xvfb: ['0']
12
12
  }.freeze
13
+
13
14
  PUBLISHERS = {
14
15
  archive_artifact: ['0'],
15
16
  brakeman: ['0'],
@@ -31,6 +32,7 @@ PUBLISHERS = {
31
32
  sonar_result: ['0'],
32
33
  xunit: ['0']
33
34
  }.freeze
35
+
34
36
  BUILDERS = {
35
37
  blocking_downstream: ['0'],
36
38
  copy_artifact: ['0'],
@@ -42,14 +44,15 @@ BUILDERS = {
42
44
  checkmarx_scan: ['0'],
43
45
  system_groovy: ['0'],
44
46
  sonar_standalone: ['0']
45
-
46
47
  }.freeze
48
+
47
49
  TRIGGERS = {
48
50
  git_push: ['0'],
49
51
  periodic_build: ['0'],
50
52
  scm_polling: ['0'],
51
53
  upstream: ['0']
52
54
  }.freeze
55
+
53
56
  JOB_ATTRIBUTES = {
54
57
  concurrent_build: ['0'],
55
58
  description: ['0'],
@@ -63,7 +66,12 @@ JOB_ATTRIBUTES = {
63
66
  priority: ['0'],
64
67
  promoted_builds: ['0'],
65
68
  scm_params: ['0', '2.0'],
66
- throttle: ['0']
69
+ throttle: ['0'],
70
+ promotion_description: ['0'],
71
+ block_when_downstream_building: ['0'],
72
+ block_when_upstream_building: ['0'],
73
+ is_visible: ['0'],
74
+ promotion_icon: ['0']
67
75
  }.freeze
68
76
 
69
77
  describe 'built in extensions' do
@@ -102,7 +110,7 @@ describe 'built in extensions' do
102
110
 
103
111
  context 'job_attributes' do
104
112
  it 'has the correct number' do
105
- expect(@registry[:job].size - 4).to eq JOB_ATTRIBUTES.size
113
+ expect(@registry[:job].size - JenkinsPipelineBuilder.registry.entries.size).to eq JOB_ATTRIBUTES.size
106
114
  end
107
115
 
108
116
  JOB_ATTRIBUTES.each do |job_attribute, versions|
@@ -1,3 +1,5 @@
1
1
  - job:
2
2
  name: '{{name}}-30-Release'
3
- description: '{{description}}'
3
+ description: '{{description}}'
4
+ promoted_builds:
5
+ - '{{name}} Stage Promotion'
@@ -0,0 +1,31 @@
1
+ - promotion:
2
+ name: '{{name}} Stage Promotion'
3
+ promotion_description: 'Describe the promotion process in play'
4
+ block_when_downstream_building: false # unless defined? false
5
+ block_when_upstream_building: false # unless defined? false
6
+ icon: 'Gold star' # || 'Silver star'
7
+ promotion_conditions: # follow parameters
8
+ - manual:
9
+ users: 'authorized' # || ''
10
+ - self_promotion:
11
+ even_if_unstable: true # unless defined? false
12
+ - parameterized_self_promotion:
13
+ parameter_name: 'SOME_ENV_VAR'
14
+ parameter_value: true
15
+ even_if_unstable: true # unless defined? false
16
+ - downstream_pass:
17
+ jobs: '{{name}}-10-Commit'
18
+ even_if_unstable: true # unless defined? false
19
+ - upstream_promotion:
20
+ promotion_name: '{{name}} Staging Promotion'
21
+ build_steps: # follow builders
22
+ - triggered_job:
23
+ name: '{{name}}-30-Release' # maps to <projects>
24
+ block_condition: # included in xml only if checked on UI
25
+ build_step_failure_threshold: 'FAILURE' # 'FAILURE' # %s(never FAILURE UNSTABLE SUCCESS)
26
+ failure_threshold: 'FAILURE' # || # %s(never FAILURE UNSTABLE SUCCESS)
27
+ unstable_threshold: 'UNSTABLE' # || # %s(never FAILURE UNSTABLE SUCCESS)
28
+ build_parameters:
29
+ current: true # unless defined? false
30
+ - keep_builds_forever:
31
+ value: true
@@ -9,4 +9,6 @@
9
9
  - '{{name}}-20-Acceptance'
10
10
  - '{{name}}-30-Release'
11
11
  views:
12
- - '{{name}} View'
12
+ - '{{name}} View'
13
+ promotions:
14
+ - '{{name}} Stage Promotion'
@@ -0,0 +1,31 @@
1
+ - promotion:
2
+ name: '01. Stage Promotion'
3
+ description: 'Describe the promotion process in play'
4
+ job_type: promotion
5
+ block_when_downstream_building: false # unless defined? false
6
+ block_when_upstream_building: false # unless defined? false
7
+ icon: 'Gold star' # || 'Silver star'
8
+ promotion_conditions: # follow parameters
9
+ - manual:
10
+ users: 'authorized' # || ''
11
+ - self_promotion:
12
+ even_if_unstable: true # unless defined? false
13
+ - parameterized_self_promotion:
14
+ parameter_name: 'SOME_ENV_VAR'
15
+ parameter_value: true
16
+ even_if_unstable: true # unless defined? false
17
+ - downstream_pass:
18
+ jobs: '{{Example}}-Commit'
19
+ even_if_unstable: true # unless defined? false
20
+ - upstream_promotion:
21
+ promotion_name: '01. Staging Promotion'
22
+ build_steps: # follow builders
23
+ - triggered_job:
24
+ name: '{{name}}-Release' # maps to <projects>
25
+ block_condition: # included in xml only if checked on UI
26
+ build_step_failure_threshold: 'FAILURE' # 'FAILURE' # %s(never FAILURE UNSTABLE SUCCESS)
27
+ failure_threshold: 'FAILURE' # || # %s(never FAILURE UNSTABLE SUCCESS)
28
+ unstable_threshold: 'UNSTABLE' # || # %s(never FAILURE UNSTABLE SUCCESS)
29
+ use_current_build_params: true # unless defined? false
30
+ - keep_builds_forever:
31
+ value: true
@@ -219,13 +219,13 @@ describe JenkinsPipelineBuilder::Generator do
219
219
  it 'errors when reading a bad yaml file' do
220
220
  path = File.expand_path('../fixtures/generator_tests/test_bad_yaml_files', __FILE__)
221
221
  expect { @generator.job_collection.load_from_path path }.to raise_error(
222
- RuntimeError, /There was an error while parsing a file/
222
+ CustomErrors::ParseError, /There was an error while parsing a file/
223
223
  )
224
224
  end
225
225
  it 'errors when reading a bad json file' do
226
226
  path = File.expand_path('../fixtures/generator_tests/test_bad_json_files', __FILE__)
227
227
  expect { @generator.job_collection.load_from_path path }.to raise_error(
228
- RuntimeError, /There was an error while parsing a file/
228
+ CustomErrors::ParseError, /There was an error while parsing a file/
229
229
  )
230
230
  end
231
231
  end
@@ -50,24 +50,6 @@ describe JenkinsPipelineBuilder::Job do
50
50
  expect(JenkinsPipelineBuilder.client.job).to_not receive(:exists?)
51
51
  job.create_or_update
52
52
  end
53
-
54
- it 'creates if the job does not exist' do
55
- expect(JenkinsPipelineBuilder).to receive(:debug).and_return false
56
- expect(JenkinsPipelineBuilder).to receive(:file_mode).and_return false
57
- expect(job).to receive(:to_xml).and_return [true, '']
58
- expect(@job_double).to receive(:exists?).with('asdf').and_return false
59
- expect(@job_double).to receive(:create).and_return true
60
- job.create_or_update
61
- end
62
-
63
- it 'updates if the job exists' do
64
- expect(JenkinsPipelineBuilder).to receive(:debug).and_return false
65
- expect(JenkinsPipelineBuilder).to receive(:file_mode).and_return false
66
- expect(job).to receive(:to_xml).and_return [true, '']
67
- expect(@job_double).to receive(:exists?).with('asdf').and_return true
68
- expect(@job_double).to receive(:update).and_return true
69
- job.create_or_update
70
- end
71
53
  end
72
54
 
73
55
  context '#to_xml' do
@@ -133,7 +115,7 @@ describe JenkinsPipelineBuilder::Job do
133
115
  end
134
116
 
135
117
  it 'fails on an unknown type' do
136
- job = described_class.new job_type: 'unknonw', name: 'asdf'
118
+ job = described_class.new job_type: 'unknown', name: 'asdf'
137
119
 
138
120
  success, _payload = job.to_xml
139
121
  expect(success).to be false
@@ -0,0 +1,88 @@
1
+ require File.expand_path('../spec_helper', __FILE__)
2
+
3
+ describe JenkinsPipelineBuilder::Promotion do
4
+ before :all do
5
+ JenkinsPipelineBuilder.credentials = {
6
+ server_ip: '127.0.0.1',
7
+ server_port: 8080,
8
+ username: 'username',
9
+ password: 'password',
10
+ log_location: '/dev/null'
11
+ }
12
+ generator = JenkinsPipelineBuilder.generator
13
+ @promotions = JenkinsPipelineBuilder::Promotion.new(generator)
14
+ end
15
+
16
+ before :each do
17
+ allow(JenkinsPipelineBuilder).to receive(:logger).and_return double(
18
+ debug: true,
19
+ info: true,
20
+ warn: true,
21
+ error: true,
22
+ fatal: true
23
+ )
24
+ end
25
+
26
+ describe '#create' do
27
+ before :each do
28
+ allow(JenkinsPipelineBuilder.client).to receive(:plugin).and_return double(
29
+ list_installed: { 'promoted-builds' => '2.31', 'parameterized-trigger' => '20.0' }
30
+ )
31
+ condition = Nokogiri::XML::Builder.new { |xml| xml.conditions }
32
+ @n_xml = condition.doc
33
+ end
34
+
35
+ it 'generates correct xml given parameters' do
36
+ params = { name: 'SamplePipeline Stage Promotion',
37
+ promotion_description: 'Describe the promotion process in play',
38
+ block_when_downstream_building: false,
39
+ block_when_upstream_building: false,
40
+ icon: 'Gold star',
41
+ conditions: [
42
+ { manual: { users: 'authorized' } },
43
+ { self_promotion: { even_if_unstable: true } },
44
+ { parameterized_self_promotion: {
45
+ parameter_name: 'SOME_ENV_VAR', parameter_value: true, even_if_unstable: true
46
+ } },
47
+ { downstream_pass: { jobs: 'SamplePipeline-10-Commit', even_if_unstable: true } },
48
+ { upstream_promotion: { promotion_name: 'SamplePipeline Staging Promotion' } }
49
+ ],
50
+ build_steps: [
51
+ { triggered_job: {
52
+ name: 'SamplePipeline-30-Release',
53
+ block_condition: { build_step_failure_threshold: 'FAILURE',
54
+ failure_threshold: 'FAILURE',
55
+ unstable_threshold: 'UNSTABLE' },
56
+ build_parameters: { current: true }
57
+ } },
58
+ { keep_builds_forever: { value: true } }
59
+ ] }
60
+
61
+ @n_xml = @promotions.create(params, 'Random associated job name')
62
+
63
+ expect(@n_xml).to include 'conditions'
64
+ expect(@n_xml).to include 'buildSteps'
65
+ expect(@n_xml).to include 'hudson.plugins.promoted__builds.PromotionProcess plugin="promoted-builds@2.27"'
66
+ expect(@n_xml).to include 'hudson.plugins.parameterizedtrigger.TriggerBuilder plugin="parameterized-trigger@2.31"'
67
+ expect(@n_xml).to include 'hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig'
68
+ expect(@n_xml).to include 'configs'
69
+ expect(@n_xml).to include 'projects'
70
+ expect(@n_xml).to include 'triggerWithNoParameters'
71
+ expect(@n_xml).to include 'block'
72
+ expect(@n_xml).to include 'buildStepFailureThreshold'
73
+ expect(@n_xml).to include 'name'
74
+ expect(@n_xml).to include 'ordinal'
75
+ expect(@n_xml).to include 'color'
76
+ expect(@n_xml).to include 'completeBuild'
77
+ expect(@n_xml).to include 'unstableThreshold'
78
+ expect(@n_xml).to include 'failureThreshold'
79
+ expect(@n_xml).to include 'buildAllNodesWithLabel'
80
+ expect(@n_xml).to include 'hudson.plugins.promoted__builds.KeepBuildForeverAction'
81
+ end
82
+
83
+ it 'fails if prom_to_xml fails' do
84
+ expect(@promotions).to receive(:prom_to_xml).ordered.and_return [false, 'FAILURE']
85
+ expect(@promotions.create('', '')).to eq [false, 'FAILURE']
86
+ end
87
+ end
88
+ end
@@ -1,8 +1,10 @@
1
1
  require 'rspec'
2
+ require 'rspec/matchers'
2
3
 
3
4
  require 'simplecov'
4
5
  require 'simplecov-rcov'
5
6
  require 'webmock/rspec'
7
+ require 'equivalent-xml'
6
8
 
7
9
  require File.expand_path('../../../../lib/jenkins_pipeline_builder', __FILE__)
8
10
 
@@ -35,3 +37,7 @@ RSpec::Matchers.define :have_registered_versions do |versions|
35
37
  "Expected #{@set.name} to have registered versions #{versions}. Got #{@registered_versions}"
36
38
  end
37
39
  end
40
+
41
+ def parse_expectation_xml(xml_string)
42
+ Nokogiri::XML.parse(xml_string, &:noblanks)
43
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jenkins_pipeline_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.4
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Moochnick
@@ -9,286 +9,300 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-07-01 00:00:00.000000000 Z
12
+ date: 2016-10-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: 1.6.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: 1.6.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: jenkins_api_client
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: 1.0.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: 1.0.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: thor
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ! '>='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
48
  version: 0.18.0
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ! '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: 0.18.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: activesupport
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: 4.2.6
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: 4.2.6
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: archive-tar-minitar
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ! '>='
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ! '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: bundler
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ~>
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
90
  version: '1.3'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ~>
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: '1.3'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: rake
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ! '>='
102
+ - - ">="
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ! '>='
109
+ - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: rspec
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ~>
116
+ - - "~>"
117
117
  - !ruby/object:Gem::Version
118
118
  version: '3.0'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - ~>
123
+ - - "~>"
124
124
  - !ruby/object:Gem::Version
125
125
  version: '3.0'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: bump
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - ! '>='
130
+ - - ">="
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - ! '>='
137
+ - - ">="
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: json
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - ! '>='
144
+ - - ">="
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
147
  type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - ! '>='
151
+ - - ">="
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: gem-release
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
- - - ! '>='
158
+ - - ">="
159
159
  - !ruby/object:Gem::Version
160
160
  version: '0'
161
161
  type: :development
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - ! '>='
165
+ - - ">="
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: byebug
170
170
  requirement: !ruby/object:Gem::Requirement
171
171
  requirements:
172
- - - ! '>='
172
+ - - ">="
173
173
  - !ruby/object:Gem::Version
174
174
  version: '0'
175
175
  type: :development
176
176
  prerelease: false
177
177
  version_requirements: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - ! '>='
179
+ - - ">="
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
182
  - !ruby/object:Gem::Dependency
183
183
  name: simplecov
184
184
  requirement: !ruby/object:Gem::Requirement
185
185
  requirements:
186
- - - ! '>='
186
+ - - ">="
187
187
  - !ruby/object:Gem::Version
188
188
  version: '0'
189
189
  type: :development
190
190
  prerelease: false
191
191
  version_requirements: !ruby/object:Gem::Requirement
192
192
  requirements:
193
- - - ! '>='
193
+ - - ">="
194
194
  - !ruby/object:Gem::Version
195
195
  version: '0'
196
196
  - !ruby/object:Gem::Dependency
197
197
  name: simplecov-rcov
198
198
  requirement: !ruby/object:Gem::Requirement
199
199
  requirements:
200
- - - ! '>='
200
+ - - ">="
201
201
  - !ruby/object:Gem::Version
202
202
  version: '0'
203
203
  type: :development
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
- - - ! '>='
207
+ - - ">="
208
208
  - !ruby/object:Gem::Version
209
209
  version: '0'
210
210
  - !ruby/object:Gem::Dependency
211
211
  name: kwalify
212
212
  requirement: !ruby/object:Gem::Requirement
213
213
  requirements:
214
- - - ! '>='
214
+ - - ">="
215
215
  - !ruby/object:Gem::Version
216
216
  version: '0'
217
217
  type: :development
218
218
  prerelease: false
219
219
  version_requirements: !ruby/object:Gem::Requirement
220
220
  requirements:
221
- - - ! '>='
221
+ - - ">="
222
222
  - !ruby/object:Gem::Version
223
223
  version: '0'
224
224
  - !ruby/object:Gem::Dependency
225
225
  name: equivalent-xml
226
226
  requirement: !ruby/object:Gem::Requirement
227
227
  requirements:
228
- - - ! '>='
228
+ - - ">="
229
229
  - !ruby/object:Gem::Version
230
230
  version: '0'
231
231
  type: :development
232
232
  prerelease: false
233
233
  version_requirements: !ruby/object:Gem::Requirement
234
234
  requirements:
235
- - - ! '>='
235
+ - - ">="
236
236
  - !ruby/object:Gem::Version
237
237
  version: '0'
238
238
  - !ruby/object:Gem::Dependency
239
239
  name: yard-thor
240
240
  requirement: !ruby/object:Gem::Requirement
241
241
  requirements:
242
- - - ! '>='
242
+ - - ">="
243
243
  - !ruby/object:Gem::Version
244
244
  version: '0'
245
245
  type: :development
246
246
  prerelease: false
247
247
  version_requirements: !ruby/object:Gem::Requirement
248
248
  requirements:
249
- - - ! '>='
249
+ - - ">="
250
250
  - !ruby/object:Gem::Version
251
251
  version: '0'
252
252
  - !ruby/object:Gem::Dependency
253
253
  name: yard
254
254
  requirement: !ruby/object:Gem::Requirement
255
255
  requirements:
256
- - - ! '>='
256
+ - - ">="
257
257
  - !ruby/object:Gem::Version
258
258
  version: '0'
259
259
  type: :development
260
260
  prerelease: false
261
261
  version_requirements: !ruby/object:Gem::Requirement
262
262
  requirements:
263
- - - ! '>='
263
+ - - ">="
264
+ - !ruby/object:Gem::Version
265
+ version: '0'
266
+ - !ruby/object:Gem::Dependency
267
+ name: pry
268
+ requirement: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - ">="
271
+ - !ruby/object:Gem::Version
272
+ version: '0'
273
+ type: :development
274
+ prerelease: false
275
+ version_requirements: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - ">="
264
278
  - !ruby/object:Gem::Version
265
279
  version: '0'
266
280
  - !ruby/object:Gem::Dependency
267
281
  name: rspec_junit_formatter
268
282
  requirement: !ruby/object:Gem::Requirement
269
283
  requirements:
270
- - - ! '>='
284
+ - - ">="
271
285
  - !ruby/object:Gem::Version
272
286
  version: '0'
273
287
  type: :development
274
288
  prerelease: false
275
289
  version_requirements: !ruby/object:Gem::Requirement
276
290
  requirements:
277
- - - ! '>='
291
+ - - ">="
278
292
  - !ruby/object:Gem::Version
279
293
  version: '0'
280
294
  - !ruby/object:Gem::Dependency
281
295
  name: webmock
282
296
  requirement: !ruby/object:Gem::Requirement
283
297
  requirements:
284
- - - ~>
298
+ - - "~>"
285
299
  - !ruby/object:Gem::Version
286
300
  version: '1.0'
287
301
  type: :development
288
302
  prerelease: false
289
303
  version_requirements: !ruby/object:Gem::Requirement
290
304
  requirements:
291
- - - ~>
305
+ - - "~>"
292
306
  - !ruby/object:Gem::Version
293
307
  version: '1.0'
294
308
  - !ruby/object:Gem::Dependency
@@ -305,11 +319,9 @@ dependencies:
305
319
  - - '='
306
320
  - !ruby/object:Gem::Version
307
321
  version: 0.40.0
308
- description: ! 'This is a simple and easy-to-use Jenkins Pipeline generator with features
309
- focused on
310
-
311
- automating Job & Pipeline creation from the YAML files checked-in with your application
312
- source code'
322
+ description: |-
323
+ This is a simple and easy-to-use Jenkins Pipeline generator with features focused on
324
+ automating Job & Pipeline creation from the YAML files checked-in with your application source code
313
325
  email:
314
326
  - igor.moochnick@gmail.com
315
327
  - crimsonknave@gmail.com
@@ -318,14 +330,14 @@ executables:
318
330
  extensions: []
319
331
  extra_rdoc_files: []
320
332
  files:
321
- - .ackrc
322
- - .gitignore
323
- - .rspec
324
- - .rubocop.yml
325
- - .ruby-gemset
326
- - .ruby-version
327
- - .simplecov
328
- - .travis.yml
333
+ - ".ackrc"
334
+ - ".gitignore"
335
+ - ".rspec"
336
+ - ".rubocop.yml"
337
+ - ".ruby-gemset"
338
+ - ".ruby-version"
339
+ - ".simplecov"
340
+ - ".travis.yml"
329
341
  - Gemfile
330
342
  - LICENSE
331
343
  - README.md
@@ -338,6 +350,7 @@ files:
338
350
  - example/pipeline/Example-Commit.yaml
339
351
  - example/pipeline/Example-Pipeline.yaml
340
352
  - example/pipeline/Example-PipelineGenerator.yaml
353
+ - example/pipeline/Example-Promotion.yaml
341
354
  - example/pipeline/Example-Release.yaml
342
355
  - example/pipeline/Example-Upgrade.yaml
343
356
  - example/pipeline/project.yaml
@@ -351,10 +364,13 @@ files:
351
364
  - lib/jenkins_pipeline_builder/cli/pipeline.rb
352
365
  - lib/jenkins_pipeline_builder/cli/view.rb
353
366
  - lib/jenkins_pipeline_builder/compiler.rb
367
+ - lib/jenkins_pipeline_builder/custom_errors.rb
354
368
  - lib/jenkins_pipeline_builder/extension_dsl.rb
355
369
  - lib/jenkins_pipeline_builder/extension_set.rb
356
370
  - lib/jenkins_pipeline_builder/extensions.rb
371
+ - lib/jenkins_pipeline_builder/extensions/build_steps.rb
357
372
  - lib/jenkins_pipeline_builder/extensions/builders.rb
373
+ - lib/jenkins_pipeline_builder/extensions/helpers/build_steps/triggered_job.rb
358
374
  - lib/jenkins_pipeline_builder/extensions/helpers/builders/blocking_downstream_helper.rb
359
375
  - lib/jenkins_pipeline_builder/extensions/helpers/builders/maven3_helper.rb
360
376
  - lib/jenkins_pipeline_builder/extensions/helpers/extension_helper.rb
@@ -363,6 +379,7 @@ files:
363
379
  - lib/jenkins_pipeline_builder/extensions/helpers/publishers/email_ext_helper.rb
364
380
  - lib/jenkins_pipeline_builder/extensions/helpers/triggers/upstream_helper.rb
365
381
  - lib/jenkins_pipeline_builder/extensions/job_attributes.rb
382
+ - lib/jenkins_pipeline_builder/extensions/promotion_conditions.rb
366
383
  - lib/jenkins_pipeline_builder/extensions/publishers.rb
367
384
  - lib/jenkins_pipeline_builder/extensions/triggers.rb
368
385
  - lib/jenkins_pipeline_builder/extensions/wrappers.rb
@@ -370,7 +387,7 @@ files:
370
387
  - lib/jenkins_pipeline_builder/job.rb
371
388
  - lib/jenkins_pipeline_builder/job_collection.rb
372
389
  - lib/jenkins_pipeline_builder/module_registry.rb
373
- - lib/jenkins_pipeline_builder/project.rb
390
+ - lib/jenkins_pipeline_builder/promotion.rb
374
391
  - lib/jenkins_pipeline_builder/pull_request_generator.rb
375
392
  - lib/jenkins_pipeline_builder/remote_dependencies.rb
376
393
  - lib/jenkins_pipeline_builder/utils.rb
@@ -383,8 +400,10 @@ files:
383
400
  - spec/lib/jenkins_pipeline_builder/compiler_spec.rb
384
401
  - spec/lib/jenkins_pipeline_builder/extension_dsl_spec.rb
385
402
  - spec/lib/jenkins_pipeline_builder/extension_set_spec.rb
403
+ - spec/lib/jenkins_pipeline_builder/extensions/build_steps_spec.rb
386
404
  - spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb
387
405
  - spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb
406
+ - spec/lib/jenkins_pipeline_builder/extensions/promotion_conditions_spec.rb
388
407
  - spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb
389
408
  - spec/lib/jenkins_pipeline_builder/extensions/registered_spec.rb
390
409
  - spec/lib/jenkins_pipeline_builder/extensions/triggers_spec.rb
@@ -407,6 +426,7 @@ files:
407
426
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-10-Commit.yaml
408
427
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-20-Acceptance.yaml
409
428
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-30-Release.yaml
429
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-40-Promotion.yaml
410
430
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/project.yaml
411
431
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/view.yaml
412
432
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/jobs.tar.gz
@@ -426,6 +446,7 @@ files:
426
446
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_yaml_files/view.yaml
427
447
  - spec/lib/jenkins_pipeline_builder/fixtures/job_collection/extensions/extension.rb
428
448
  - spec/lib/jenkins_pipeline_builder/fixtures/job_collection/extensions/helpers/my_test_thing_helper.rb
449
+ - spec/lib/jenkins_pipeline_builder/fixtures/promotions_test/sample_promotion.yaml
429
450
  - spec/lib/jenkins_pipeline_builder/fixtures/sample_creds.json
430
451
  - spec/lib/jenkins_pipeline_builder/fixtures/sample_creds.rb
431
452
  - spec/lib/jenkins_pipeline_builder/fixtures/sample_creds.yaml
@@ -437,6 +458,7 @@ files:
437
458
  - spec/lib/jenkins_pipeline_builder/job_collection_spec.rb
438
459
  - spec/lib/jenkins_pipeline_builder/job_spec.rb
439
460
  - spec/lib/jenkins_pipeline_builder/module_registry_spec.rb
461
+ - spec/lib/jenkins_pipeline_builder/promotion_spec.rb
440
462
  - spec/lib/jenkins_pipeline_builder/pull_request_generator_spec.rb
441
463
  - spec/lib/jenkins_pipeline_builder/spec_helper.rb
442
464
  - spec/lib/jenkins_pipeline_builder/utils_spec.rb
@@ -452,17 +474,17 @@ require_paths:
452
474
  - lib
453
475
  required_ruby_version: !ruby/object:Gem::Requirement
454
476
  requirements:
455
- - - ! '>='
477
+ - - ">="
456
478
  - !ruby/object:Gem::Version
457
479
  version: '0'
458
480
  required_rubygems_version: !ruby/object:Gem::Requirement
459
481
  requirements:
460
- - - ! '>='
482
+ - - ">="
461
483
  - !ruby/object:Gem::Version
462
484
  version: '0'
463
485
  requirements: []
464
486
  rubyforge_project:
465
- rubygems_version: 2.5.1
487
+ rubygems_version: 2.6.6
466
488
  signing_key:
467
489
  specification_version: 4
468
490
  summary: This gem is will boostrap your Jenkins pipelines
@@ -471,8 +493,10 @@ test_files:
471
493
  - spec/lib/jenkins_pipeline_builder/compiler_spec.rb
472
494
  - spec/lib/jenkins_pipeline_builder/extension_dsl_spec.rb
473
495
  - spec/lib/jenkins_pipeline_builder/extension_set_spec.rb
496
+ - spec/lib/jenkins_pipeline_builder/extensions/build_steps_spec.rb
474
497
  - spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb
475
498
  - spec/lib/jenkins_pipeline_builder/extensions/job_attributes_spec.rb
499
+ - spec/lib/jenkins_pipeline_builder/extensions/promotion_conditions_spec.rb
476
500
  - spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb
477
501
  - spec/lib/jenkins_pipeline_builder/extensions/registered_spec.rb
478
502
  - spec/lib/jenkins_pipeline_builder/extensions/triggers_spec.rb
@@ -495,6 +519,7 @@ test_files:
495
519
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-10-Commit.yaml
496
520
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-20-Acceptance.yaml
497
521
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-30-Release.yaml
522
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-40-Promotion.yaml
498
523
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/project.yaml
499
524
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/view.yaml
500
525
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/jobs.tar.gz
@@ -514,6 +539,7 @@ test_files:
514
539
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_yaml_files/view.yaml
515
540
  - spec/lib/jenkins_pipeline_builder/fixtures/job_collection/extensions/extension.rb
516
541
  - spec/lib/jenkins_pipeline_builder/fixtures/job_collection/extensions/helpers/my_test_thing_helper.rb
542
+ - spec/lib/jenkins_pipeline_builder/fixtures/promotions_test/sample_promotion.yaml
517
543
  - spec/lib/jenkins_pipeline_builder/fixtures/sample_creds.json
518
544
  - spec/lib/jenkins_pipeline_builder/fixtures/sample_creds.rb
519
545
  - spec/lib/jenkins_pipeline_builder/fixtures/sample_creds.yaml
@@ -525,6 +551,7 @@ test_files:
525
551
  - spec/lib/jenkins_pipeline_builder/job_collection_spec.rb
526
552
  - spec/lib/jenkins_pipeline_builder/job_spec.rb
527
553
  - spec/lib/jenkins_pipeline_builder/module_registry_spec.rb
554
+ - spec/lib/jenkins_pipeline_builder/promotion_spec.rb
528
555
  - spec/lib/jenkins_pipeline_builder/pull_request_generator_spec.rb
529
556
  - spec/lib/jenkins_pipeline_builder/spec_helper.rb
530
557
  - spec/lib/jenkins_pipeline_builder/utils_spec.rb