jenkins_pipeline_builder 0.8.5 → 0.9.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.
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