jenkins_pipeline_builder 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +28 -43
  4. data/{spec/unit_tests/spec_helper.rb → .simplecov} +2 -15
  5. data/README.md +66 -11
  6. data/Rakefile +1 -25
  7. data/bin/generate +0 -1
  8. data/jenkins_pipeline_builder.gemspec +6 -6
  9. data/lib/jenkins_pipeline_builder.rb +14 -8
  10. data/lib/jenkins_pipeline_builder/builders.rb +207 -155
  11. data/lib/jenkins_pipeline_builder/cli/base.rb +1 -1
  12. data/lib/jenkins_pipeline_builder/cli/describe.rb +12 -8
  13. data/lib/jenkins_pipeline_builder/cli/list.rb +7 -7
  14. data/lib/jenkins_pipeline_builder/compiler.rb +62 -49
  15. data/lib/jenkins_pipeline_builder/extensions.rb +108 -0
  16. data/lib/jenkins_pipeline_builder/generator.rb +209 -160
  17. data/lib/jenkins_pipeline_builder/job_builder.rb +174 -105
  18. data/lib/jenkins_pipeline_builder/module_registry.rb +43 -59
  19. data/lib/jenkins_pipeline_builder/publishers.rb +166 -93
  20. data/lib/jenkins_pipeline_builder/pull_request.rb +7 -7
  21. data/lib/jenkins_pipeline_builder/triggers.rb +63 -40
  22. data/lib/jenkins_pipeline_builder/utils.rb +10 -10
  23. data/lib/jenkins_pipeline_builder/version.rb +1 -1
  24. data/lib/jenkins_pipeline_builder/view.rb +94 -123
  25. data/lib/jenkins_pipeline_builder/wrappers.rb +163 -96
  26. data/spec/lib/jenkins_pipeline_builder/compiler_spec.rb +31 -0
  27. data/spec/lib/jenkins_pipeline_builder/extensions_spec.rb +145 -0
  28. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-10-SampleJob.yaml +2 -0
  29. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-40-PullRequestGenerator.yaml +12 -0
  30. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/project.yaml +12 -0
  31. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-10-Commit.yaml +3 -0
  32. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-20-Acceptance.yaml +3 -0
  33. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-30-Release.yaml +3 -0
  34. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/project.yaml +12 -0
  35. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/view.yaml +5 -0
  36. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/jobs.tar.gz +0 -0
  37. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/project.yaml +15 -0
  38. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_job.xml +48 -0
  39. data/spec/lib/jenkins_pipeline_builder/fixtures/view_test/duplicate_view.yaml +4 -0
  40. data/spec/lib/jenkins_pipeline_builder/fixtures/view_test/parent_view.yaml +9 -0
  41. data/spec/lib/jenkins_pipeline_builder/fixtures/view_test/regular_view.yaml +5 -0
  42. data/spec/lib/jenkins_pipeline_builder/generator_spec.rb +165 -0
  43. data/spec/lib/jenkins_pipeline_builder/module_registry_spec.rb +147 -0
  44. data/spec/lib/jenkins_pipeline_builder/pull_request_spec.rb +47 -0
  45. data/spec/lib/jenkins_pipeline_builder/spec_helper.rb +25 -0
  46. data/spec/lib/jenkins_pipeline_builder/utils_spec.rb +22 -0
  47. data/spec/lib/jenkins_pipeline_builder/view_spec.rb +54 -0
  48. metadata +54 -136
  49. data/lib/jenkins_pipeline_builder/extendable.rb +0 -42
  50. data/lib/jenkins_pipeline_builder/xml_helper.rb +0 -40
  51. data/spec/func_tests/spec_helper.rb +0 -18
  52. data/spec/func_tests/view_spec.rb +0 -90
  53. data/spec/unit_tests/compiler_spec.rb +0 -20
  54. data/spec/unit_tests/fixtures/files/Job-Build-Flow.xml +0 -57
  55. data/spec/unit_tests/fixtures/files/Job-Build-Flow.yaml +0 -22
  56. data/spec/unit_tests/fixtures/files/Job-Build-Maven.xml +0 -129
  57. data/spec/unit_tests/fixtures/files/Job-Build-Maven.yaml +0 -31
  58. data/spec/unit_tests/fixtures/files/Job-DSL.yaml +0 -14
  59. data/spec/unit_tests/fixtures/files/Job-DSL1.xml +0 -27
  60. data/spec/unit_tests/fixtures/files/Job-DSL2.xml +0 -25
  61. data/spec/unit_tests/fixtures/files/Job-Gem-Build.xml +0 -142
  62. data/spec/unit_tests/fixtures/files/Job-Gem-Build.yaml +0 -43
  63. data/spec/unit_tests/fixtures/files/Job-Generate-From-Template.xml +0 -32
  64. data/spec/unit_tests/fixtures/files/Job-Generate-From-Template.yaml +0 -8
  65. data/spec/unit_tests/fixtures/files/Job-Multi-Project.xml +0 -134
  66. data/spec/unit_tests/fixtures/files/Job-Multi-Project.yaml +0 -49
  67. data/spec/unit_tests/fixtures/files/archive_artifact.xml +0 -23
  68. data/spec/unit_tests/fixtures/files/archive_artifact.yaml +0 -5
  69. data/spec/unit_tests/fixtures/files/choice_parameter.xml +0 -39
  70. data/spec/unit_tests/fixtures/files/choice_parameter.yaml +0 -14
  71. data/spec/unit_tests/fixtures/files/concurrent_build.xml +0 -17
  72. data/spec/unit_tests/fixtures/files/concurrent_build.yaml +0 -4
  73. data/spec/unit_tests/fixtures/files/copy_artifact.xml +0 -30
  74. data/spec/unit_tests/fixtures/files/copy_artifact.yaml +0 -14
  75. data/spec/unit_tests/fixtures/files/discard_old.xml +0 -17
  76. data/spec/unit_tests/fixtures/files/discard_old.yaml +0 -8
  77. data/spec/unit_tests/fixtures/files/downstream.xml +0 -36
  78. data/spec/unit_tests/fixtures/files/downstream.yaml +0 -13
  79. data/spec/unit_tests/fixtures/files/downstream_blocking.xml +0 -19
  80. data/spec/unit_tests/fixtures/files/downstream_blocking.yaml +0 -15
  81. data/spec/unit_tests/fixtures/files/git_include_exclude.xml +0 -53
  82. data/spec/unit_tests/fixtures/files/git_include_exclude.yaml +0 -8
  83. data/spec/unit_tests/fixtures/files/groovy_postbuild.xml +0 -29
  84. data/spec/unit_tests/fixtures/files/groovy_postbuild.yaml +0 -9
  85. data/spec/unit_tests/fixtures/files/periodic_build.xml +0 -21
  86. data/spec/unit_tests/fixtures/files/periodic_build.yaml +0 -5
  87. data/spec/unit_tests/fixtures/files/post_build_script.xml +0 -28
  88. data/spec/unit_tests/fixtures/files/post_build_script.yaml +0 -11
  89. data/spec/unit_tests/fixtures/files/prepare_environment.xml +0 -17
  90. data/spec/unit_tests/fixtures/files/prepare_environment.yaml +0 -7
  91. data/spec/unit_tests/fixtures/files/project.yaml +0 -15
  92. data/spec/unit_tests/fixtures/files/properties_file.xml +0 -27
  93. data/spec/unit_tests/fixtures/files/properties_file.yaml +0 -8
  94. data/spec/unit_tests/fixtures/files/remote_job.xml +0 -18
  95. data/spec/unit_tests/fixtures/files/remote_job.yaml +0 -19
  96. data/spec/unit_tests/fixtures/files/rvm05.xml +0 -26
  97. data/spec/unit_tests/fixtures/files/rvm05.yaml +0 -5
  98. data/spec/unit_tests/fixtures/files/specific_priority.xml +0 -22
  99. data/spec/unit_tests/fixtures/files/specific_priority.yaml +0 -6
  100. data/spec/unit_tests/fixtures/files/throttle.xml +0 -17
  101. data/spec/unit_tests/fixtures/files/throttle.yaml +0 -8
  102. data/spec/unit_tests/fixtures/files/upstream.xml +0 -17
  103. data/spec/unit_tests/fixtures/files/upstream.yaml +0 -7
  104. data/spec/unit_tests/fixtures/pull_request/00.yaml +0 -14
  105. data/spec/unit_tests/fixtures/pull_request/10.yaml +0 -7
  106. data/spec/unit_tests/fixtures/pull_request/11.yaml +0 -4
  107. data/spec/unit_tests/fixtures/pull_request/project.yaml +0 -11
  108. data/spec/unit_tests/fixtures/templates/external_job.yaml +0 -4
  109. data/spec/unit_tests/fixtures/templates/project_with_jobs.yaml +0 -25
  110. data/spec/unit_tests/generator_spec.rb +0 -94
  111. data/spec/unit_tests/module_registry_spec.rb +0 -16
  112. data/spec/unit_tests/resolve_dependencies_spec.rb +0 -266
@@ -0,0 +1,47 @@
1
+ require File.expand_path('../spec_helper', __FILE__)
2
+ require 'webmock/rspec'
3
+
4
+ describe JenkinsPipelineBuilder::PullRequestGenerator do
5
+ let(:pull_request_generator) { JenkinsPipelineBuilder::PullRequestGenerator }
6
+ let(:project) { { name: 'pull_req_test', type: :project, value: { name: 'pull_req_test', jobs: ['{{name}}-00', '{{name}}-10', '{{name}}-11'] } } }
7
+ let(:jobs) { { '{{name}}-10' => { name: '{{name}}-10', type: :'job-template', value: { name: '{{name}}-10', description: '{{description}}', publishers: [{ downstream: { project: '{{job@{{name}}-11}}' } }] } }, '{{name}}-11' => { name: '{{name}}-11', type: :'job-template', value: { name: '{{name}}-11', description: '{{description}}' } } } }
8
+ let(:create_jobs) { [{ name: 'pull_req_test-PR5', type: :project, value: { name: 'pull_req_test-PR5', jobs: ['{{name}}-10', '{{name}}-11'] } }, { name: 'pull_req_test-PR6', type: :project, value: { name: 'pull_req_test-PR6', jobs: ['{{name}}-10', '{{name}}-11'] } }] }
9
+ let(:pull_request) { { name: '{{name}}-00', type: :job, name: '{{name}}-00', job_type: 'pull_request_generator', git_url: 'https://www.github.com/', git_repo: 'jenkins_pipeline_builder', git_org: 'constantcontact', jobs: ['{{name}}-10', '{{name}}-11'], builders: [{ shell_command: 'generate -v || gem install jenkins_pipeline_builder\ngenerate pipeline -c config/{{login_config}} pull_request pipeline/ {{name}}\n' }] } }
10
+ before do
11
+ # Request to get current pull requests from github
12
+ stub_request(:any, 'https://www.github.com/api/v3/repos/constantcontact/jenkins_pipeline_builder/pulls').to_return(body: '[{"number": 5,"state": "open","title": "Update README again" },{"number": 6,"state": "open", "title": "Update README again2"}]')
13
+ stub_request(:any, 'http://username:password@127.0.0.1:8080/api/json').to_return(body: '{"assignedLabels":[{}],"mode":"NORMAL","nodeDescription":"the master Jenkins node","nodeName":"","numExecutors":2,"description":null,"jobs":[{"name":"PurgeTest-PR1","url":"http://localhost:8080/job/PurgeTest-PR1/","color":"notbuilt" },{"name":"PurgeTest-PR3","url":"http://localhost:8080/job/PurgeTest-PR3/","color":"notbuilt" },{"name":"PurgeTest-PR4","url":"http://localhost:8080/job/PurgeTest-PR4/","color":"notbuilt"}],"overallLoad":{},"primaryView":{"name":"All","url":"http://localhost:8080/" },"quietingDown":false,"slaveAgentPort":0,"unlabeledLoad":{},"useCrumbs":false,"useSecurity":true,"views":[{"name":"All","url":"http://localhost:8080/"}]}')
14
+ end
15
+ describe '#initialize' do
16
+ after(:all) do
17
+ FileUtils.rm_r 'pull_requests.csv'
18
+ end
19
+ it 'can work without a csv' do
20
+ pull = pull_request_generator.new(project, jobs, pull_request)
21
+ expect(pull.purge.count).to eq(0)
22
+ expect(pull.create).to eq(create_jobs)
23
+ end
24
+ it 'can work with a csv' do
25
+ pull = pull_request_generator.new(project, jobs, pull_request)
26
+ expect(pull.purge.count).to eq(0)
27
+ expect(pull.create).to eq(create_jobs)
28
+ end
29
+ end
30
+ end
31
+
32
+ describe JenkinsPipelineBuilder::PullRequest do
33
+ let(:pull_request_class) { JenkinsPipelineBuilder::PullRequest }
34
+ let(:project) { { name: 'pull_req_test', type: :project, value: { name: 'pull_req_test', jobs: ['{{name}}-00', '{{name}}-10', '{{name}}-11'] } } }
35
+ let(:pull_request) { { name: '{{name}}-00', type: :job, name: '{{name}}-00', job_type: 'pull_request_generator', git_url: 'https://www.github.com/', git_repo: 'jenkins_pipeline_builder', git_org: 'constantcontact', jobs: ['{{name}}-10', '{{name}}-11'], builders: [{ shell_command: 'generate -v || gem install jenkins_pipeline_builder\ngenerate pipeline -c config/{{login_config}} pull_request pipeline/ {{name}}\n' }] } }
36
+ let(:jobs) { { '{{name}}-10' => { name: '{{name}}-10', type: :'job-template', value: { name: '{{name}}-10', description: '{{description}}', publishers: [{ downstream: { project: '{{job@{{name}}-11}}' } }] } }, '{{name}}-11' => { name: '{{name}}-11', type: :'job-template', value: { name: '{{name}}-11', description: '{{description}}' } } } }
37
+ describe '#initialize' do
38
+ it 'process pull_request' do
39
+ pull = pull_request_class.new(project, 2, jobs, pull_request)
40
+ post_jobs = { '{{name}}-10' => { name: '{{name}}-10', type: :'job-template', value: { name: '{{name}}-10', description: '{{description}}', publishers: [{ downstream: { project: '{{job@{{name}}-11}}' } }], scm_branch: 'origin/pr/2/head', scm_params: { refspec: 'refs/pull/*:refs/remotes/origin/pr/*' } } }, '{{name}}-11' => { name: '{{name}}-11', type: :'job-template', value: { name: '{{name}}-11', description: '{{description}}', scm_branch: 'origin/pr/2/head', scm_params: { refspec: 'refs/pull/*:refs/remotes/origin/pr/*' } } } }
41
+ post_project = { name: 'pull_req_test-PR2', type: :project, value: { name: 'pull_req_test-PR2', jobs: ['{{name}}-00', '{{name}}-10', '{{name}}-11'] } }
42
+
43
+ expect(pull.project).to eq(post_project)
44
+ expect(pull.jobs).to eq(post_jobs)
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,25 @@
1
+ require 'rspec'
2
+
3
+ require 'simplecov'
4
+ require 'simplecov-rcov'
5
+ require 'webmock/rspec'
6
+
7
+ require File.expand_path('../../../../lib/jenkins_pipeline_builder', __FILE__)
8
+
9
+ RSpec::Matchers.define :have_min_version do |version|
10
+ match do |base|
11
+ @exts = base
12
+ !base.select { |ext| ext.min_version == version }.empty?
13
+ end
14
+
15
+ failure_message_for_should do
16
+ versions = @exts.map { |x| x.min_version }.join(', ')
17
+ "Expected to find extension #{@exts.first.name} with version #{version}, found #{versions} instead"
18
+ end
19
+ end
20
+
21
+ RSpec.configure do |config|
22
+ config.expect_with :rspec do |c|
23
+ c.syntax = :expect
24
+ end
25
+ end
@@ -0,0 +1,22 @@
1
+ require File.expand_path('../spec_helper', __FILE__)
2
+
3
+ describe JenkinsPipelineBuilder::Utils do
4
+ let(:utils) { JenkinsPipelineBuilder::Utils }
5
+ describe '#symbolize_keys_deep!' do
6
+ let(:string_hash) { { 'layer1' => { 'layer2' => { 'layer3' => 'value' } } } }
7
+ let(:string_hash_symbols) { { layer1: { layer2: { layer3: 'value' } } } }
8
+ it 'should symbolize the hash' do
9
+ utils.symbolize_keys_deep!(string_hash)
10
+ expect(string_hash).to eq(string_hash_symbols)
11
+ end
12
+ end
13
+ describe '#hash_merge!' do
14
+ let(:hash_with_array) { { name: 'withArray', value: { publishers: [{ downstream: true }, { other: true }] } } }
15
+ let(:hash_with_array2) { { name: 'withArray', value: { publishers: [{ downstream: false }] } } }
16
+ it 'deep merge two hashes' do
17
+ utils.hash_merge!(hash_with_array, hash_with_array2)
18
+ expect(hash_with_array[:value][:publishers].count).to eq(1)
19
+ expect(hash_with_array[:value][:publishers][0][:downstream]).to be_falsey
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,54 @@
1
+ require File.expand_path('../spec_helper', __FILE__)
2
+
3
+ describe JenkinsPipelineBuilder::View 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
+ @view = JenkinsPipelineBuilder::View.new(generator)
14
+ end
15
+ let(:path) { File.expand_path('../fixtures/view_test/', __FILE__) }
16
+ let(:view) { { name: 'view', parent_view: 'ParentView', type: 'categorizedView', description: 'ViewTest', regex: 'ViewTest.*', groupingRules: [{ groupRegex: 'ViewTest-1.*', namingRule: '1. Commit Stage' }] } }
17
+
18
+ describe '#generate' do
19
+ it 'calls create with the correct parameters' do
20
+ expect(@view).to receive(:create).with(view).exactly(1).times
21
+ @view.generate("#{path}/parent_view.yaml")
22
+ end
23
+ end
24
+
25
+ describe '#create' do
26
+ before do
27
+ stub_request(:any, 'http://username:password@127.0.0.1:8080/api/json').to_return(body: '{"assignedLabels":[{}],"mode":"NORMAL","nodeDescription":"the master Jenkins node","nodeName":"","numExecutors":2,"description":null,"jobs":[{"name":"PurgeTest-PR1","url":"http://localhost:8080/job/PurgeTest-PR1/","color":"notbuilt" },{"name":"PurgeTest-PR3","url":"http://localhost:8080/job/PurgeTest-PR3/","color":"notbuilt" },{"name":"PurgeTest-PR4","url":"http://localhost:8080/job/PurgeTest-PR4/","color":"notbuilt"}],"overallLoad":{},"primaryView":{"name":"All","url":"http://localhost:8080/" },"quietingDown":false,"slaveAgentPort":0,"unlabeledLoad":{},"useCrumbs":false,"useSecurity":true,"views":[{"name":"All","url":"http://localhost:8080/"}, {"name":"duplicate_view"}]}')
28
+ stub_request(:any, 'http://username:password@127.0.0.1:8080/view/ParentView/api/json').to_return(body: '{"assignedLabels":[{}],"mode":"NORMAL","nodeDescription":"the master Jenkins node","nodeName":"","numExecutors":2,"description":null,"jobs":[{"name":"PurgeTest-PR1","url":"http://localhost:8080/job/PurgeTest-PR1/","color":"notbuilt" },{"name":"PurgeTest-PR3","url":"http://localhost:8080/job/PurgeTest-PR3/","color":"notbuilt" },{"name":"PurgeTest-PR4","url":"http://localhost:8080/job/PurgeTest-PR4/","color":"notbuilt"}],"overallLoad":{},"primaryView":{"name":"All","url":"http://localhost:8080/" },"quietingDown":false,"slaveAgentPort":0,"unlabeledLoad":{},"useCrumbs":false,"useSecurity":true,"views":[{"name":"All","url":"http://localhost:8080/"}]}')
29
+ stub_request(:post, /.*/).to_return(status: 200) # Stop actual creating/deleting
30
+ end
31
+ context 'parent view is specified' do
32
+ it 'needs to create the parent view and view' do
33
+ expect(@view).to receive(:create_base_view).with('ParentView', 'nestedView').once
34
+ expect(@view).to receive(:create_base_view).with('view', 'categorizedView', 'ParentView').once
35
+ @view.generate("#{path}/parent_view.yaml")
36
+ end
37
+ it 'deletes a view if it already exists' do
38
+ stub_request(:any, 'http://username:password@127.0.0.1:8080/view/ParentView/api/json').to_return(body: '{"assignedLabels":[{}],"mode":"NORMAL","nodeDescription":"the master Jenkins node","nodeName":"","numExecutors":2,"description":null,"jobs":[{"name":"PurgeTest-PR1","url":"http://localhost:8080/job/PurgeTest-PR1/","color":"notbuilt" },{"name":"PurgeTest-PR3","url":"http://localhost:8080/job/PurgeTest-PR3/","color":"notbuilt" },{"name":"PurgeTest-PR4","url":"http://localhost:8080/job/PurgeTest-PR4/","color":"notbuilt"}],"overallLoad":{},"primaryView":{"name":"All","url":"http://localhost:8080/" },"quietingDown":false,"slaveAgentPort":0,"unlabeledLoad":{},"useCrumbs":false,"useSecurity":true,"views":[{"name":"All","url":"http://localhost:8080/"}, {"name":"view"}]}')
39
+ expect(@view).to receive(:delete).with('view', 'ParentView').once
40
+ @view.generate("#{path}/parent_view.yaml")
41
+ end
42
+ end
43
+ context 'no parent view' do
44
+ it 'creates the view' do
45
+ expect(@view).to receive(:create_base_view).with('RegularView', 'listview', nil).once
46
+ @view.generate("#{path}/regular_view.yaml")
47
+ end
48
+ it 'deletes a view if overwriting' do
49
+ expect(@view).to receive(:delete).with('duplicate_view').once
50
+ @view.generate("#{path}/duplicate_view.yaml")
51
+ end
52
+ end
53
+ end
54
+ 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.5.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Moochnick
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-26 00:00:00.000000000 Z
12
+ date: 2014-07-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -17,28 +17,28 @@ dependencies:
17
17
  requirements:
18
18
  - - ~>
19
19
  - !ruby/object:Gem::Version
20
- version: 1.5.0
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
- version: 1.5.0
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
- version: 0.14.1
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
- version: 0.14.1
41
+ version: 1.0.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: thor
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -115,14 +115,14 @@ dependencies:
115
115
  requirements:
116
116
  - - ~>
117
117
  - !ruby/object:Gem::Version
118
- version: '2.14'
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
- version: '2.14'
125
+ version: '3.0'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: bump
128
128
  requirement: !ruby/object:Gem::Requirement
@@ -322,6 +322,7 @@ files:
322
322
  - .rubocop.yml
323
323
  - .ruby-gemset
324
324
  - .ruby-version
325
+ - .simplecov
325
326
  - Gemfile
326
327
  - LICENSE
327
328
  - README.md
@@ -339,7 +340,7 @@ files:
339
340
  - lib/jenkins_pipeline_builder/cli/pipeline.rb
340
341
  - lib/jenkins_pipeline_builder/cli/view.rb
341
342
  - lib/jenkins_pipeline_builder/compiler.rb
342
- - lib/jenkins_pipeline_builder/extendable.rb
343
+ - lib/jenkins_pipeline_builder/extensions.rb
343
344
  - lib/jenkins_pipeline_builder/generator.rb
344
345
  - lib/jenkins_pipeline_builder/job_builder.rb
345
346
  - lib/jenkins_pipeline_builder/module_registry.rb
@@ -350,71 +351,29 @@ files:
350
351
  - lib/jenkins_pipeline_builder/version.rb
351
352
  - lib/jenkins_pipeline_builder/view.rb
352
353
  - lib/jenkins_pipeline_builder/wrappers.rb
353
- - lib/jenkins_pipeline_builder/xml_helper.rb
354
354
  - pipeline/Jenkins-Pipeline-Builder.yaml
355
- - spec/func_tests/spec_helper.rb
356
- - spec/func_tests/view_spec.rb
357
- - spec/unit_tests/compiler_spec.rb
358
- - spec/unit_tests/fixtures/files/Job-Build-Flow.xml
359
- - spec/unit_tests/fixtures/files/Job-Build-Flow.yaml
360
- - spec/unit_tests/fixtures/files/Job-Build-Maven.xml
361
- - spec/unit_tests/fixtures/files/Job-Build-Maven.yaml
362
- - spec/unit_tests/fixtures/files/Job-DSL.yaml
363
- - spec/unit_tests/fixtures/files/Job-DSL1.xml
364
- - spec/unit_tests/fixtures/files/Job-DSL2.xml
365
- - spec/unit_tests/fixtures/files/Job-Gem-Build.xml
366
- - spec/unit_tests/fixtures/files/Job-Gem-Build.yaml
367
- - spec/unit_tests/fixtures/files/Job-Generate-From-Template.xml
368
- - spec/unit_tests/fixtures/files/Job-Generate-From-Template.yaml
369
- - spec/unit_tests/fixtures/files/Job-Multi-Project.xml
370
- - spec/unit_tests/fixtures/files/Job-Multi-Project.yaml
371
- - spec/unit_tests/fixtures/files/archive_artifact.xml
372
- - spec/unit_tests/fixtures/files/archive_artifact.yaml
373
- - spec/unit_tests/fixtures/files/choice_parameter.xml
374
- - spec/unit_tests/fixtures/files/choice_parameter.yaml
375
- - spec/unit_tests/fixtures/files/concurrent_build.xml
376
- - spec/unit_tests/fixtures/files/concurrent_build.yaml
377
- - spec/unit_tests/fixtures/files/copy_artifact.xml
378
- - spec/unit_tests/fixtures/files/copy_artifact.yaml
379
- - spec/unit_tests/fixtures/files/discard_old.xml
380
- - spec/unit_tests/fixtures/files/discard_old.yaml
381
- - spec/unit_tests/fixtures/files/downstream.xml
382
- - spec/unit_tests/fixtures/files/downstream.yaml
383
- - spec/unit_tests/fixtures/files/downstream_blocking.xml
384
- - spec/unit_tests/fixtures/files/downstream_blocking.yaml
385
- - spec/unit_tests/fixtures/files/git_include_exclude.xml
386
- - spec/unit_tests/fixtures/files/git_include_exclude.yaml
387
- - spec/unit_tests/fixtures/files/groovy_postbuild.xml
388
- - spec/unit_tests/fixtures/files/groovy_postbuild.yaml
389
- - spec/unit_tests/fixtures/files/periodic_build.xml
390
- - spec/unit_tests/fixtures/files/periodic_build.yaml
391
- - spec/unit_tests/fixtures/files/post_build_script.xml
392
- - spec/unit_tests/fixtures/files/post_build_script.yaml
393
- - spec/unit_tests/fixtures/files/prepare_environment.xml
394
- - spec/unit_tests/fixtures/files/prepare_environment.yaml
395
- - spec/unit_tests/fixtures/files/project.yaml
396
- - spec/unit_tests/fixtures/files/properties_file.xml
397
- - spec/unit_tests/fixtures/files/properties_file.yaml
398
- - spec/unit_tests/fixtures/files/remote_job.xml
399
- - spec/unit_tests/fixtures/files/remote_job.yaml
400
- - spec/unit_tests/fixtures/files/rvm05.xml
401
- - spec/unit_tests/fixtures/files/rvm05.yaml
402
- - spec/unit_tests/fixtures/files/specific_priority.xml
403
- - spec/unit_tests/fixtures/files/specific_priority.yaml
404
- - spec/unit_tests/fixtures/files/throttle.xml
405
- - spec/unit_tests/fixtures/files/throttle.yaml
406
- - spec/unit_tests/fixtures/files/upstream.xml
407
- - spec/unit_tests/fixtures/files/upstream.yaml
408
- - spec/unit_tests/fixtures/pull_request/00.yaml
409
- - spec/unit_tests/fixtures/pull_request/10.yaml
410
- - spec/unit_tests/fixtures/pull_request/11.yaml
411
- - spec/unit_tests/fixtures/pull_request/project.yaml
412
- - spec/unit_tests/fixtures/templates/external_job.yaml
413
- - spec/unit_tests/fixtures/templates/project_with_jobs.yaml
414
- - spec/unit_tests/generator_spec.rb
415
- - spec/unit_tests/module_registry_spec.rb
416
- - spec/unit_tests/resolve_dependencies_spec.rb
417
- - spec/unit_tests/spec_helper.rb
355
+ - spec/lib/jenkins_pipeline_builder/compiler_spec.rb
356
+ - spec/lib/jenkins_pipeline_builder/extensions_spec.rb
357
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-10-SampleJob.yaml
358
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-40-PullRequestGenerator.yaml
359
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/project.yaml
360
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-10-Commit.yaml
361
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-20-Acceptance.yaml
362
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-30-Release.yaml
363
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/project.yaml
364
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/view.yaml
365
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/jobs.tar.gz
366
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/project.yaml
367
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_job.xml
368
+ - spec/lib/jenkins_pipeline_builder/fixtures/view_test/duplicate_view.yaml
369
+ - spec/lib/jenkins_pipeline_builder/fixtures/view_test/parent_view.yaml
370
+ - spec/lib/jenkins_pipeline_builder/fixtures/view_test/regular_view.yaml
371
+ - spec/lib/jenkins_pipeline_builder/generator_spec.rb
372
+ - spec/lib/jenkins_pipeline_builder/module_registry_spec.rb
373
+ - spec/lib/jenkins_pipeline_builder/pull_request_spec.rb
374
+ - spec/lib/jenkins_pipeline_builder/spec_helper.rb
375
+ - spec/lib/jenkins_pipeline_builder/utils_spec.rb
376
+ - spec/lib/jenkins_pipeline_builder/view_spec.rb
418
377
  homepage: https://github.com/ConstantContact/jenkins_pipeline_builder
419
378
  licenses:
420
379
  - MIT
@@ -440,67 +399,26 @@ signing_key:
440
399
  specification_version: 4
441
400
  summary: This gem is will boostrap your Jenkins pipelines
442
401
  test_files:
443
- - spec/func_tests/spec_helper.rb
444
- - spec/func_tests/view_spec.rb
445
- - spec/unit_tests/compiler_spec.rb
446
- - spec/unit_tests/fixtures/files/Job-Build-Flow.xml
447
- - spec/unit_tests/fixtures/files/Job-Build-Flow.yaml
448
- - spec/unit_tests/fixtures/files/Job-Build-Maven.xml
449
- - spec/unit_tests/fixtures/files/Job-Build-Maven.yaml
450
- - spec/unit_tests/fixtures/files/Job-DSL.yaml
451
- - spec/unit_tests/fixtures/files/Job-DSL1.xml
452
- - spec/unit_tests/fixtures/files/Job-DSL2.xml
453
- - spec/unit_tests/fixtures/files/Job-Gem-Build.xml
454
- - spec/unit_tests/fixtures/files/Job-Gem-Build.yaml
455
- - spec/unit_tests/fixtures/files/Job-Generate-From-Template.xml
456
- - spec/unit_tests/fixtures/files/Job-Generate-From-Template.yaml
457
- - spec/unit_tests/fixtures/files/Job-Multi-Project.xml
458
- - spec/unit_tests/fixtures/files/Job-Multi-Project.yaml
459
- - spec/unit_tests/fixtures/files/archive_artifact.xml
460
- - spec/unit_tests/fixtures/files/archive_artifact.yaml
461
- - spec/unit_tests/fixtures/files/choice_parameter.xml
462
- - spec/unit_tests/fixtures/files/choice_parameter.yaml
463
- - spec/unit_tests/fixtures/files/concurrent_build.xml
464
- - spec/unit_tests/fixtures/files/concurrent_build.yaml
465
- - spec/unit_tests/fixtures/files/copy_artifact.xml
466
- - spec/unit_tests/fixtures/files/copy_artifact.yaml
467
- - spec/unit_tests/fixtures/files/discard_old.xml
468
- - spec/unit_tests/fixtures/files/discard_old.yaml
469
- - spec/unit_tests/fixtures/files/downstream.xml
470
- - spec/unit_tests/fixtures/files/downstream.yaml
471
- - spec/unit_tests/fixtures/files/downstream_blocking.xml
472
- - spec/unit_tests/fixtures/files/downstream_blocking.yaml
473
- - spec/unit_tests/fixtures/files/git_include_exclude.xml
474
- - spec/unit_tests/fixtures/files/git_include_exclude.yaml
475
- - spec/unit_tests/fixtures/files/groovy_postbuild.xml
476
- - spec/unit_tests/fixtures/files/groovy_postbuild.yaml
477
- - spec/unit_tests/fixtures/files/periodic_build.xml
478
- - spec/unit_tests/fixtures/files/periodic_build.yaml
479
- - spec/unit_tests/fixtures/files/post_build_script.xml
480
- - spec/unit_tests/fixtures/files/post_build_script.yaml
481
- - spec/unit_tests/fixtures/files/prepare_environment.xml
482
- - spec/unit_tests/fixtures/files/prepare_environment.yaml
483
- - spec/unit_tests/fixtures/files/project.yaml
484
- - spec/unit_tests/fixtures/files/properties_file.xml
485
- - spec/unit_tests/fixtures/files/properties_file.yaml
486
- - spec/unit_tests/fixtures/files/remote_job.xml
487
- - spec/unit_tests/fixtures/files/remote_job.yaml
488
- - spec/unit_tests/fixtures/files/rvm05.xml
489
- - spec/unit_tests/fixtures/files/rvm05.yaml
490
- - spec/unit_tests/fixtures/files/specific_priority.xml
491
- - spec/unit_tests/fixtures/files/specific_priority.yaml
492
- - spec/unit_tests/fixtures/files/throttle.xml
493
- - spec/unit_tests/fixtures/files/throttle.yaml
494
- - spec/unit_tests/fixtures/files/upstream.xml
495
- - spec/unit_tests/fixtures/files/upstream.yaml
496
- - spec/unit_tests/fixtures/pull_request/00.yaml
497
- - spec/unit_tests/fixtures/pull_request/10.yaml
498
- - spec/unit_tests/fixtures/pull_request/11.yaml
499
- - spec/unit_tests/fixtures/pull_request/project.yaml
500
- - spec/unit_tests/fixtures/templates/external_job.yaml
501
- - spec/unit_tests/fixtures/templates/project_with_jobs.yaml
502
- - spec/unit_tests/generator_spec.rb
503
- - spec/unit_tests/module_registry_spec.rb
504
- - spec/unit_tests/resolve_dependencies_spec.rb
505
- - spec/unit_tests/spec_helper.rb
402
+ - spec/lib/jenkins_pipeline_builder/compiler_spec.rb
403
+ - spec/lib/jenkins_pipeline_builder/extensions_spec.rb
404
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-10-SampleJob.yaml
405
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-40-PullRequestGenerator.yaml
406
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/project.yaml
407
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-10-Commit.yaml
408
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-20-Acceptance.yaml
409
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-30-Release.yaml
410
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/project.yaml
411
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/view.yaml
412
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/jobs.tar.gz
413
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/project.yaml
414
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_job.xml
415
+ - spec/lib/jenkins_pipeline_builder/fixtures/view_test/duplicate_view.yaml
416
+ - spec/lib/jenkins_pipeline_builder/fixtures/view_test/parent_view.yaml
417
+ - spec/lib/jenkins_pipeline_builder/fixtures/view_test/regular_view.yaml
418
+ - spec/lib/jenkins_pipeline_builder/generator_spec.rb
419
+ - spec/lib/jenkins_pipeline_builder/module_registry_spec.rb
420
+ - spec/lib/jenkins_pipeline_builder/pull_request_spec.rb
421
+ - spec/lib/jenkins_pipeline_builder/spec_helper.rb
422
+ - spec/lib/jenkins_pipeline_builder/utils_spec.rb
423
+ - spec/lib/jenkins_pipeline_builder/view_spec.rb
506
424
  has_rdoc:
@@ -1,42 +0,0 @@
1
- #
2
- # Copyright (c) 2014 Constant Contact
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining a copy
5
- # of this software and associated documentation files (the "Software"), to deal
6
- # in the Software without restriction, including without limitation the rights
7
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- # copies of the Software, and to permit persons to whom the Software is
9
- # furnished to do so, subject to the following conditions:
10
- #
11
- # The above copyright notice and this permission notice shall be included in
12
- # all copies or substantial portions of the Software.
13
- #
14
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
- # THE SOFTWARE.
21
- #
22
-
23
- module JenkinsPipelineBuilder
24
- class Extendable
25
- def self.register(name, jenkins_name: 'No jenkins display name provided', description: 'No description provided', &block)
26
- registry = JenkinsPipelineBuilder.registry
27
- registry.send(class_to_registry_method(to_s), name, jenkins_name, description, &block)
28
- end
29
-
30
- def self.class_to_registry_method(name)
31
- h = {
32
- 'JenkinsPipelineBuilder::JobBuilder' => :register_job_attribute,
33
- 'JenkinsPipelineBuilder::Builders' => :register_builder,
34
- 'JenkinsPipelineBuilder::Publishers' => :register_publisher,
35
- 'JenkinsPipelineBuilder::Wrappers' => :register_wrapper,
36
- 'JenkinsPipelineBuilder::Triggers' => :register_trigger
37
- }
38
- fail "Unknown class #{name} when adding an extension. Known classes are #{h.keys.join ', '}" unless h.key?(name)
39
- h[name]
40
- end
41
- end
42
- end