jenkins_pipeline_builder 0.15.4 → 0.16.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.
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