jenkins_pipeline_builder 0.8.5 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4768b1a1bf8d52cb1bd5724b5a9a23b5fd34ea57
4
- data.tar.gz: f0d5e26d5672d1073a50b7a36094ee4968d50ffe
3
+ metadata.gz: d7769c803148949697affa29d205e1a2a38fe192
4
+ data.tar.gz: 1588845d28a5bf12aff8c8bd32ab4b712e8f89e1
5
5
  SHA512:
6
- metadata.gz: 7e325592c56f9de7c2182c0d1c8836e752fb7e88049e8c1c233bd37659990b8a0c33911ed32148fb73ed208f14e98a2f3809404d124062c9b43180c6d3db0543
7
- data.tar.gz: 14c2863da61416b1072378e13228362e3f858f7b2adb72e1ca8380c9d3fb853c0b7059a132228dd7b547f4d6c69924694ca0962e068fdcfb80e04c64bb0f4a6e
6
+ metadata.gz: 65281a731a94d19df901e28759725cffa2b98e7ac4119e174b663e0c30f828043ba04e30d5efe34433e3051c368d5ef9ac197db9afad73ca638e14c6692dfd5c
7
+ data.tar.gz: 7629dbc4eddf4d1e58e63eeb879dc6c7d6c4b37b63968f6c440fc600ba6eac6627d6e2bc5f27fe365577239a1d52597af53a9a50f6f4a2fa0e7fa6194de1746b
data/README.md CHANGED
@@ -77,6 +77,9 @@ NOTE: you can run the pipeline in NOOP (debug-only) mode by addind -d parameter,
77
77
 
78
78
  The command comes with fairly extensive help. For example you can list all of the registered extension types with `generate list` and a list of all extensions of a type with `generate list type`
79
79
 
80
+ #### JSON now supported
81
+ The pipeline builder now suppots json for config and pipeline files instead of or in addition to yaml files
82
+
80
83
  DSL:
81
84
  ----
82
85
 
@@ -44,7 +44,11 @@ module JenkinsPipelineBuilder
44
44
  (options[:password] || options[:password_base64])
45
45
  creds = options
46
46
  elsif options[:creds_file]
47
- creds = YAML.load_file(File.expand_path(options[:creds_file]))
47
+ if creds_file.end_with? "json"
48
+ creds = JSON.parse(IO.read(File.expand_path(options[:creds_file])))
49
+ else
50
+ creds = YAML.load_file(File.expand_path(options[:creds_file]))
51
+ end
48
52
  elsif File.exist?("#{ENV['HOME']}/.jenkins_api_client/login.yml")
49
53
  creds = YAML.load_file(
50
54
  File.expand_path("#{ENV['HOME']}/.jenkins_api_client/login.yml", __FILE__)
@@ -21,6 +21,7 @@
21
21
  #
22
22
 
23
23
  require 'yaml'
24
+ require 'json'
24
25
 
25
26
  module JenkinsPipelineBuilder
26
27
  class Generator
@@ -180,15 +181,24 @@ module JenkinsPipelineBuilder
180
181
  path = File.expand_path(path, Dir.getwd)
181
182
  if File.directory?(path)
182
183
  logger.info "Generating from folder #{path}"
183
- Dir[File.join(path, '/*.yaml'), File.join(path, '/*.yml')].each do |file|
184
+ Dir[File.join(path, '/*.{yaml,yml}')].each do |file|
184
185
  logger.info "Loading file #{file}"
185
186
  yaml = YAML.load_file(file)
186
187
  load_job_collection(yaml, remote)
187
188
  end
189
+ Dir[File.join(path, '/*.json')].each do |file|
190
+ logger.info "Loading file #{file}"
191
+ json = JSON.parse(IO.read(file))
192
+ load_job_collection(json, remote)
193
+ end
188
194
  else
189
195
  logger.info "Loading file #{path}"
190
- yaml = YAML.load_file(path)
191
- load_job_collection(yaml, remote)
196
+ if path.end_with? "json"
197
+ hash = JSON.parse(IO.read(path))
198
+ else # elsif path.end_with?("yml") || path.end_with?("yaml")
199
+ hash = YAML.load_file(path)
200
+ end
201
+ load_job_collection(hash, remote)
192
202
  end
193
203
  end
194
204
 
@@ -21,5 +21,5 @@
21
21
  #
22
22
 
23
23
  module JenkinsPipelineBuilder
24
- VERSION = '0.8.5'
24
+ VERSION = '0.9.0'
25
25
  end
@@ -35,9 +35,13 @@ module JenkinsPipelineBuilder
35
35
  end
36
36
 
37
37
  def generate(path)
38
- yaml = YAML.load_file(path)
38
+ if path.end_with? "json"
39
+ hash = JSON.parse(IO.read(path))
40
+ else
41
+ hash = YAML.load_file(path)
42
+ end
39
43
 
40
- yaml.each do |item|
44
+ hash.each do |item|
41
45
  Utils.symbolize_keys_deep!(item)
42
46
  create(item[:view]) if item[:view]
43
47
  end
@@ -0,0 +1,16 @@
1
+ [
2
+ {
3
+ "defaults": {
4
+ "name": "global",
5
+ "description": "Tests, all the tests"
6
+ }
7
+ },
8
+ {
9
+ "project": {
10
+ "name": "TestProject",
11
+ "jobs": [
12
+ "{{name}}-part1"
13
+ ]
14
+ }
15
+ }
16
+ ]
@@ -0,0 +1,5 @@
1
+ - view:
2
+ name: '{{name}} View'
3
+ type: 'listview'
4
+ description: '{{description}}'
5
+ regex: '{{name}}.*'
@@ -0,0 +1,16 @@
1
+ [
2
+ {
3
+ "defaults": {
4
+ "name": "global",
5
+ "description": "Tests, all the tests"
6
+ }
7
+ },
8
+ {
9
+ "project": {
10
+ "name": "TestProject",
11
+ "jobs": [
12
+ "{{name}}-part1"
13
+ ]
14
+ }
15
+ }
16
+ ]
@@ -0,0 +1,10 @@
1
+ [
2
+ {
3
+ "view": {
4
+ "name": "{{name}} View",
5
+ "type": "listview",
6
+ "description": "{{description}}",
7
+ "regex": "{{name}}.*"
8
+ }
9
+ }
10
+ ]
@@ -0,0 +1,8 @@
1
+ - defaults:
2
+ name: global
3
+ description: 'Tests, all the tests'
4
+
5
+ - project:
6
+ name: TestProject
7
+ jobs:
8
+ - '{{name}}-part1'
@@ -0,0 +1,5 @@
1
+ - view:
2
+ name: '{{name}} View'
3
+ type: 'listview'
4
+ description: '{{description}}'
5
+ regex: '{{name}}.*'
@@ -152,6 +152,29 @@ describe JenkinsPipelineBuilder::Generator do
152
152
  # Fails to purge old PR jobs from Jenkins
153
153
  end
154
154
 
155
+ describe '#load_collection_from_path' do
156
+ let(:project_hash) { [{"defaults"=>{"name"=>"global", "description"=>"Tests, all the tests"}}, {"project"=>{"name"=>"TestProject", "jobs"=>["{{name}}-part1"]}}] }
157
+ let(:view_hash) { [{"view"=>{"name"=>"{{name}} View", "type"=>"listview", "description"=>"{{description}}", "regex"=>"{{name}}.*"}}] }
158
+ it 'loads a yaml collection from a path' do
159
+ path = File.expand_path('../fixtures/generator_tests/test_yaml_files', __FILE__)
160
+ expect(@generator).to receive(:load_job_collection).once.with(view_hash, false).and_return(true)
161
+ expect(@generator).to receive(:load_job_collection).once.with(project_hash, false).and_return(true)
162
+ @generator.send(:load_collection_from_path, path)
163
+ end
164
+ it 'loads a json collection from a path' do
165
+ path = File.expand_path('../fixtures/generator_tests/test_json_files', __FILE__)
166
+ expect(@generator).to receive(:load_job_collection).once.with(view_hash, false).and_return(true)
167
+ expect(@generator).to receive(:load_job_collection).once.with(project_hash, false).and_return(true)
168
+ @generator.send(:load_collection_from_path, path)
169
+ end
170
+ it 'loads both yaml and json files from a path' do
171
+ path = File.expand_path('../fixtures/generator_tests/test_combo_files', __FILE__)
172
+ expect(@generator).to receive(:load_job_collection).once.with(view_hash, false).and_return(true)
173
+ expect(@generator).to receive(:load_job_collection).once.with(project_hash, false).and_return(true)
174
+ @generator.send(:load_collection_from_path, path)
175
+ end
176
+ end
177
+
155
178
  describe '#dump' do
156
179
  it "writes a job's config XML to a file" do
157
180
  @generator.debug = true
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.8.5
4
+ version: 0.9.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-11-06 00:00:00.000000000 Z
12
+ date: 2014-11-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -371,7 +371,13 @@ files:
371
371
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/view.yaml
372
372
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/jobs.tar.gz
373
373
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/project.yaml
374
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_combo_files/project.json
375
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_combo_files/view.yaml
374
376
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_job.xml
377
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_json_files/project.json
378
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_json_files/view.json
379
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_yaml_files/project.yaml
380
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_yaml_files/view.yaml
375
381
  - spec/lib/jenkins_pipeline_builder/fixtures/view_test/duplicate_view.yaml
376
382
  - spec/lib/jenkins_pipeline_builder/fixtures/view_test/parent_view.yaml
377
383
  - spec/lib/jenkins_pipeline_builder/fixtures/view_test/regular_view.yaml
@@ -423,7 +429,13 @@ test_files:
423
429
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/view.yaml
424
430
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/jobs.tar.gz
425
431
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/project.yaml
432
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_combo_files/project.json
433
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_combo_files/view.yaml
426
434
  - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_job.xml
435
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_json_files/project.json
436
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_json_files/view.json
437
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_yaml_files/project.yaml
438
+ - spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_yaml_files/view.yaml
427
439
  - spec/lib/jenkins_pipeline_builder/fixtures/view_test/duplicate_view.yaml
428
440
  - spec/lib/jenkins_pipeline_builder/fixtures/view_test/parent_view.yaml
429
441
  - spec/lib/jenkins_pipeline_builder/fixtures/view_test/regular_view.yaml