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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +28 -43
- data/{spec/unit_tests/spec_helper.rb → .simplecov} +2 -15
- data/README.md +66 -11
- data/Rakefile +1 -25
- data/bin/generate +0 -1
- data/jenkins_pipeline_builder.gemspec +6 -6
- data/lib/jenkins_pipeline_builder.rb +14 -8
- data/lib/jenkins_pipeline_builder/builders.rb +207 -155
- data/lib/jenkins_pipeline_builder/cli/base.rb +1 -1
- data/lib/jenkins_pipeline_builder/cli/describe.rb +12 -8
- data/lib/jenkins_pipeline_builder/cli/list.rb +7 -7
- data/lib/jenkins_pipeline_builder/compiler.rb +62 -49
- data/lib/jenkins_pipeline_builder/extensions.rb +108 -0
- data/lib/jenkins_pipeline_builder/generator.rb +209 -160
- data/lib/jenkins_pipeline_builder/job_builder.rb +174 -105
- data/lib/jenkins_pipeline_builder/module_registry.rb +43 -59
- data/lib/jenkins_pipeline_builder/publishers.rb +166 -93
- data/lib/jenkins_pipeline_builder/pull_request.rb +7 -7
- data/lib/jenkins_pipeline_builder/triggers.rb +63 -40
- data/lib/jenkins_pipeline_builder/utils.rb +10 -10
- data/lib/jenkins_pipeline_builder/version.rb +1 -1
- data/lib/jenkins_pipeline_builder/view.rb +94 -123
- data/lib/jenkins_pipeline_builder/wrappers.rb +163 -96
- data/spec/lib/jenkins_pipeline_builder/compiler_spec.rb +31 -0
- data/spec/lib/jenkins_pipeline_builder/extensions_spec.rb +145 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-10-SampleJob.yaml +2 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-40-PullRequestGenerator.yaml +12 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/project.yaml +12 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-10-Commit.yaml +3 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-20-Acceptance.yaml +3 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-30-Release.yaml +3 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/project.yaml +12 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/view.yaml +5 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/jobs.tar.gz +0 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/project.yaml +15 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_job.xml +48 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/view_test/duplicate_view.yaml +4 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/view_test/parent_view.yaml +9 -0
- data/spec/lib/jenkins_pipeline_builder/fixtures/view_test/regular_view.yaml +5 -0
- data/spec/lib/jenkins_pipeline_builder/generator_spec.rb +165 -0
- data/spec/lib/jenkins_pipeline_builder/module_registry_spec.rb +147 -0
- data/spec/lib/jenkins_pipeline_builder/pull_request_spec.rb +47 -0
- data/spec/lib/jenkins_pipeline_builder/spec_helper.rb +25 -0
- data/spec/lib/jenkins_pipeline_builder/utils_spec.rb +22 -0
- data/spec/lib/jenkins_pipeline_builder/view_spec.rb +54 -0
- metadata +54 -136
- data/lib/jenkins_pipeline_builder/extendable.rb +0 -42
- data/lib/jenkins_pipeline_builder/xml_helper.rb +0 -40
- data/spec/func_tests/spec_helper.rb +0 -18
- data/spec/func_tests/view_spec.rb +0 -90
- data/spec/unit_tests/compiler_spec.rb +0 -20
- data/spec/unit_tests/fixtures/files/Job-Build-Flow.xml +0 -57
- data/spec/unit_tests/fixtures/files/Job-Build-Flow.yaml +0 -22
- data/spec/unit_tests/fixtures/files/Job-Build-Maven.xml +0 -129
- data/spec/unit_tests/fixtures/files/Job-Build-Maven.yaml +0 -31
- data/spec/unit_tests/fixtures/files/Job-DSL.yaml +0 -14
- data/spec/unit_tests/fixtures/files/Job-DSL1.xml +0 -27
- data/spec/unit_tests/fixtures/files/Job-DSL2.xml +0 -25
- data/spec/unit_tests/fixtures/files/Job-Gem-Build.xml +0 -142
- data/spec/unit_tests/fixtures/files/Job-Gem-Build.yaml +0 -43
- data/spec/unit_tests/fixtures/files/Job-Generate-From-Template.xml +0 -32
- data/spec/unit_tests/fixtures/files/Job-Generate-From-Template.yaml +0 -8
- data/spec/unit_tests/fixtures/files/Job-Multi-Project.xml +0 -134
- data/spec/unit_tests/fixtures/files/Job-Multi-Project.yaml +0 -49
- data/spec/unit_tests/fixtures/files/archive_artifact.xml +0 -23
- data/spec/unit_tests/fixtures/files/archive_artifact.yaml +0 -5
- data/spec/unit_tests/fixtures/files/choice_parameter.xml +0 -39
- data/spec/unit_tests/fixtures/files/choice_parameter.yaml +0 -14
- data/spec/unit_tests/fixtures/files/concurrent_build.xml +0 -17
- data/spec/unit_tests/fixtures/files/concurrent_build.yaml +0 -4
- data/spec/unit_tests/fixtures/files/copy_artifact.xml +0 -30
- data/spec/unit_tests/fixtures/files/copy_artifact.yaml +0 -14
- data/spec/unit_tests/fixtures/files/discard_old.xml +0 -17
- data/spec/unit_tests/fixtures/files/discard_old.yaml +0 -8
- data/spec/unit_tests/fixtures/files/downstream.xml +0 -36
- data/spec/unit_tests/fixtures/files/downstream.yaml +0 -13
- data/spec/unit_tests/fixtures/files/downstream_blocking.xml +0 -19
- data/spec/unit_tests/fixtures/files/downstream_blocking.yaml +0 -15
- data/spec/unit_tests/fixtures/files/git_include_exclude.xml +0 -53
- data/spec/unit_tests/fixtures/files/git_include_exclude.yaml +0 -8
- data/spec/unit_tests/fixtures/files/groovy_postbuild.xml +0 -29
- data/spec/unit_tests/fixtures/files/groovy_postbuild.yaml +0 -9
- data/spec/unit_tests/fixtures/files/periodic_build.xml +0 -21
- data/spec/unit_tests/fixtures/files/periodic_build.yaml +0 -5
- data/spec/unit_tests/fixtures/files/post_build_script.xml +0 -28
- data/spec/unit_tests/fixtures/files/post_build_script.yaml +0 -11
- data/spec/unit_tests/fixtures/files/prepare_environment.xml +0 -17
- data/spec/unit_tests/fixtures/files/prepare_environment.yaml +0 -7
- data/spec/unit_tests/fixtures/files/project.yaml +0 -15
- data/spec/unit_tests/fixtures/files/properties_file.xml +0 -27
- data/spec/unit_tests/fixtures/files/properties_file.yaml +0 -8
- data/spec/unit_tests/fixtures/files/remote_job.xml +0 -18
- data/spec/unit_tests/fixtures/files/remote_job.yaml +0 -19
- data/spec/unit_tests/fixtures/files/rvm05.xml +0 -26
- data/spec/unit_tests/fixtures/files/rvm05.yaml +0 -5
- data/spec/unit_tests/fixtures/files/specific_priority.xml +0 -22
- data/spec/unit_tests/fixtures/files/specific_priority.yaml +0 -6
- data/spec/unit_tests/fixtures/files/throttle.xml +0 -17
- data/spec/unit_tests/fixtures/files/throttle.yaml +0 -8
- data/spec/unit_tests/fixtures/files/upstream.xml +0 -17
- data/spec/unit_tests/fixtures/files/upstream.yaml +0 -7
- data/spec/unit_tests/fixtures/pull_request/00.yaml +0 -14
- data/spec/unit_tests/fixtures/pull_request/10.yaml +0 -7
- data/spec/unit_tests/fixtures/pull_request/11.yaml +0 -4
- data/spec/unit_tests/fixtures/pull_request/project.yaml +0 -11
- data/spec/unit_tests/fixtures/templates/external_job.yaml +0 -4
- data/spec/unit_tests/fixtures/templates/project_with_jobs.yaml +0 -25
- data/spec/unit_tests/generator_spec.rb +0 -94
- data/spec/unit_tests/module_registry_spec.rb +0 -16
- 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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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: '
|
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: '
|
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/
|
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/
|
356
|
-
- spec/
|
357
|
-
- spec/
|
358
|
-
- spec/
|
359
|
-
- spec/
|
360
|
-
- spec/
|
361
|
-
- spec/
|
362
|
-
- spec/
|
363
|
-
- spec/
|
364
|
-
- spec/
|
365
|
-
- spec/
|
366
|
-
- spec/
|
367
|
-
- spec/
|
368
|
-
- spec/
|
369
|
-
- spec/
|
370
|
-
- spec/
|
371
|
-
- spec/
|
372
|
-
- spec/
|
373
|
-
- spec/
|
374
|
-
- spec/
|
375
|
-
- spec/
|
376
|
-
- spec/
|
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/
|
444
|
-
- spec/
|
445
|
-
- spec/
|
446
|
-
- spec/
|
447
|
-
- spec/
|
448
|
-
- spec/
|
449
|
-
- spec/
|
450
|
-
- spec/
|
451
|
-
- spec/
|
452
|
-
- spec/
|
453
|
-
- spec/
|
454
|
-
- spec/
|
455
|
-
- spec/
|
456
|
-
- spec/
|
457
|
-
- spec/
|
458
|
-
- spec/
|
459
|
-
- spec/
|
460
|
-
- spec/
|
461
|
-
- spec/
|
462
|
-
- spec/
|
463
|
-
- spec/
|
464
|
-
- spec/
|
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
|