jenkins_pipeline_builder 0.5.0 → 0.5.1

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: 074e6a33bccd22a77790d7785fa41e3aed3b0643
4
- data.tar.gz: bb21d846871e41518155c1569384de9d0a17377f
3
+ metadata.gz: 07be75a38a219e527c74b522aba4798a01b41433
4
+ data.tar.gz: 296de68ba768f231001b279641c4baa28d971e30
5
5
  SHA512:
6
- metadata.gz: 4c5c5d2102413b49a1f9cedbba8a7ee84541ddd2701cb69bc5e8305b2192f3f61a300332c729b6cf3c89e5ade81f79b25fc6abc2aafaf6716f6e3cdb71c5d331
7
- data.tar.gz: 3a79067cc83f4e015200af29b2a8255c2d7f6b881cd2b8eedad5992435b4d95e5cbba4c170f8fc080a98876f05b857595ef626b3459148206b0741cc32acaa2a
6
+ metadata.gz: d38d2dce1fb6bc2060f1de5d798cbaad0b87afdfd851ebf0367a39fca69d6cfc0e7f01f6b6d4e2f64a2aa5f477ef843677af2dcc94f86630862c9f24db92af8f
7
+ data.tar.gz: b957a87d0ea5fe5ec70f3470114362a0802896d224906b5a37bb959c6d58eafe1e53a1cc82082fad38994c181778c4d09fb2a7e9697f90e1e9679d16a2f3ab45
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  .*.swp
2
2
  out
3
3
  Gemfile.lock
4
+ *.gem
data/.rubocop.yml CHANGED
@@ -36,11 +36,12 @@ Style/ClassAndModuleChildren:
36
36
  # Offense count: 6
37
37
  # Configuration parameters: CountComments.
38
38
  Style/ClassLength:
39
+ Enabled: false
39
40
  Max: 506
40
41
 
41
42
  # Offense count: 12
42
43
  Style/CyclomaticComplexity:
43
- Max: 18
44
+ Max: 20
44
45
 
45
46
  # Offense count: 17
46
47
  Style/Documentation:
data/README.md CHANGED
@@ -115,6 +115,8 @@ Here's a high level overview of what's available:
115
115
  recursive_update: true
116
116
  wipe_workspace: true
117
117
  skip_tag: true # Optional, defaults to false
118
+ excluded_regions: region
119
+ included_regions: region
118
120
  shell_command: '. commit_build.sh'
119
121
  hipchat:
120
122
  room: room name here
@@ -173,6 +175,21 @@ Here's a high level overview of what's available:
173
175
  fail: FAILURE # Fail this build step if the triggered build is worse or equal to
174
176
  mark_fail: SUCCESS # Mark this build as failure if the triggered build is worse or equal to
175
177
  mark_unstable: UNSTABLE # Mark this build as unstable if the triggered build is worse or equal to
178
+ - copy_artifact:
179
+ project: nameStr # Name of the project
180
+ artifacts: 'artifact.txt' # Selector for artifacts
181
+ target_directory: 'artifacts' # Where the artifacts should go, blank for Workspace root
182
+ filter: 'test=true' # String of filters, PARAM1=VALUE1,PARAM2=VALUE2, Optional
183
+ fingerprint: true # Optional, true or false, defaults to true
184
+ flatten: false # Optional, true or false, defaults to false
185
+ optional: false # Optional, true or false, defaults to false
186
+ selector: # Optional
187
+ type: status # Defaults to status, options: status, saved, triggered, permalink, specific, workspace, parameter
188
+ stable: true # Use if type = 'status', true or false
189
+ fallback: true # Use if type = 'triggered', true or false
190
+ id: lastBuild # Use if type = 'permalink', options: lastBuild, lastStableBuild, lastSuccessfulBuild, lastFailedBuild, lastUnstableBuild, lastUnsucceessfulBuild
191
+ number: '123' # Use if type = 'specific', the number of the build to use
192
+ param: 'BUILD_SELECTOR' # Use if type = 'parameter', the build parameter name
176
193
  wrappers:
177
194
  - timestamp: true
178
195
  - ansicolor: true
@@ -229,6 +246,11 @@ Here's a high level overview of what's available:
229
246
  PARAM1=value1
230
247
  PARAM2=value2
231
248
  - file: promote-job-params
249
+ - archive_artifact:
250
+ artifacts: 'artifact.txt' #Artifact include string/pattern
251
+ exclude: '' # Optional, exclude string/pattern
252
+ latest_only: false # Optional, true or false, defaults to false
253
+ allow_empty: false # Optional, true or false, defaults to false
232
254
  triggers:
233
255
  - git_push: true
234
256
  - scm_polling: 'H/5 * * * *'
@@ -170,5 +170,55 @@ module JenkinsPipelineBuilder
170
170
  end
171
171
  end
172
172
  end
173
+
174
+ def self.build_copy_artifact(params, xml)
175
+ xml.send('hudson.plugins.copyartifact.CopyArtifact', 'plugin' => 'copyartifact') do
176
+ xml.project params[:project]
177
+ xml.filter params[:artifacts]
178
+ xml.target params[:target_directory]
179
+ xml.parameters params[:filter] if params[:filter]
180
+ if params[:selector] && params[:selector][:type]
181
+ case params[:selector][:type]
182
+ when 'saved'
183
+ xml.send('selector', 'class' => 'hudson.plugins.copyartifact.SavedBuildSelector')
184
+ when 'triggered'
185
+ xml.send('selector', 'class' => 'hudson.plugins.copyartifact.TriggeredBuildSelector') do
186
+ xml.fallbackToLastSuccessful params[:selector][:fallback] if params[:selector][:fallback]
187
+ end
188
+ when 'permalink'
189
+ xml.send('selector', 'class' => 'hudson.plugins.copyartifact.PermalinkBuildSelector') do
190
+ xml.id params[:selector][:id] if params[:selector][:id]
191
+ end
192
+ when 'specific'
193
+ xml.send('selector', 'class' => 'hudson.plugins.copyartifact.SpecificBuildSelector') do
194
+ xml.buildNumber params[:selector][:number] if params[:selector][:number]
195
+ end
196
+ when 'workspace'
197
+ xml.send('selector', 'class' => 'hudson.plugins.copyartifact.WorkspaceSelector')
198
+ when 'parameter'
199
+ xml.send('selector', 'class' => 'hudson.plugins.copyartifact.ParameterizedBuildSelector') do
200
+ xml.parameterName params[:selector][:param] if params[:selector][:param]
201
+ end
202
+ else
203
+ xml.send('selector', 'class' => 'hudson.plugins.copyartifact.StatusBuildSelector') do
204
+ xml.stable params[:selector][:stable] if params[:selector][:stable]
205
+ end
206
+ end
207
+ else
208
+ xml.send('selector', 'class' => 'hudson.plugins.copyartifact.StatusBuildSelector')
209
+ end
210
+ if params[:fingerprint].nil?
211
+ xml.doNotFingerprintArtifacts false
212
+ else
213
+ if params[:fingerprint].to_s == 'true'
214
+ xml.doNotFingerprintArtifacts false
215
+ else
216
+ xml.doNotFingerprintArtifacts true
217
+ end
218
+ end
219
+ xml.flatten true if params[:flatten]
220
+ xml.optional true if params[:optional]
221
+ end
222
+ end
173
223
  end
174
224
  end
@@ -62,7 +62,8 @@ module JenkinsPipelineBuilder
62
62
  shell_command: Builders.method(:build_shell_command),
63
63
  maven3: Builders.method(:build_maven3),
64
64
  blocking_downstream: Builders.method(:blocking_downstream),
65
- remote_job: Builders.method(:start_remote_job)
65
+ remote_job: Builders.method(:start_remote_job),
66
+ copy_artifact: Builders.method(:build_copy_artifact)
66
67
  },
67
68
  method:
68
69
  ->(registry, params, n_xml) { @module_registry.run_registry_on_path('//builders', registry, params, n_xml) }
@@ -76,7 +77,8 @@ module JenkinsPipelineBuilder
76
77
  junit_result: Publishers.method(:publish_junit),
77
78
  coverage_result: Publishers.method(:publish_rcov),
78
79
  post_build_script: Publishers.method(:post_build_script),
79
- groovy_postbuild: Publishers.method(:groovy_postbuild)
80
+ groovy_postbuild: Publishers.method(:groovy_postbuild),
81
+ archive_artifact: Publishers.method(:archive_artifact)
80
82
  },
81
83
  method:
82
84
  ->(registry, params, n_xml) { @module_registry.run_registry_on_path('//publishers', registry, params, n_xml) }
@@ -35,6 +35,8 @@ module JenkinsPipelineBuilder
35
35
  XmlHelper.update_node_text(n_xml, '//scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/name', params[:remote_name]) if params[:remote_name]
36
36
  XmlHelper.update_node_text(n_xml, '//scm/skipTag', params[:skip_tag]) if params[:skip_tag]
37
37
  XmlHelper.update_node_text(n_xml, '//scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/refspec', params[:refspec]) if params[:refspec]
38
+ XmlHelper.update_node_text(n_xml, '//scm/excludedRegions', params[:excluded_regions]) if params[:excluded_regions]
39
+ XmlHelper.update_node_text(n_xml, '//scm/includedRegions', params[:included_regions]) if params[:included_regions]
38
40
  end
39
41
 
40
42
  def self.hipchat_notifier(params, n_xml)
@@ -139,5 +139,14 @@ module JenkinsPipelineBuilder
139
139
  end
140
140
  end
141
141
  end
142
+
143
+ def self.archive_artifact(params, xml)
144
+ xml.send('hudson.tasks.ArtifactArchiver') do
145
+ xml.artifacts params[:artifacts]
146
+ xml.excludes params[:excludes] if params[:excludes]
147
+ xml.latestOnly params[:latest_only] || false
148
+ xml.allowEmptyArchive params[:allow_empty] || false
149
+ end
150
+ end
142
151
  end
143
152
  end
@@ -21,5 +21,5 @@
21
21
  #
22
22
 
23
23
  module JenkinsPipelineBuilder
24
- VERSION = '0.5.0'
24
+ VERSION = '0.5.1'
25
25
  end
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project>
3
+ <actions/>
4
+ <description/>
5
+ <keepDependencies>false</keepDependencies>
6
+ <properties/>
7
+ <scm class="hudson.scm.NullSCM"/>
8
+ <canRoam>true</canRoam>
9
+ <disabled>false</disabled>
10
+ <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
11
+ <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
12
+ <triggers class="vector"/>
13
+ <concurrentBuild>false</concurrentBuild>
14
+ <builders/>
15
+ <publishers>
16
+ <hudson.tasks.ArtifactArchiver>
17
+ <artifacts>artifact.txt</artifacts>
18
+ <latestOnly>false</latestOnly>
19
+ <allowEmptyArchive>false</allowEmptyArchive>
20
+ </hudson.tasks.ArtifactArchiver>
21
+ </publishers>
22
+ <buildWrappers/>
23
+ </project>
@@ -0,0 +1,5 @@
1
+ - job:
2
+ name: archive_artifact
3
+ publishers:
4
+ - archive_artifact:
5
+ artifacts: 'artifact.txt'
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project>
3
+ <actions/>
4
+ <description/>
5
+ <keepDependencies>false</keepDependencies>
6
+ <properties/>
7
+ <scm class="hudson.scm.NullSCM"/>
8
+ <canRoam>true</canRoam>
9
+ <disabled>false</disabled>
10
+ <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
11
+ <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
12
+ <triggers class="vector"/>
13
+ <concurrentBuild>false</concurrentBuild>
14
+ <builders>
15
+ <hudson.plugins.copyartifact.CopyArtifact plugin="copyartifact">
16
+ <project>test</project>
17
+ <filter>artifact.txt</filter>
18
+ <target>artifacts</target>
19
+ <parameters>test=true</parameters>
20
+ <selector class="hudson.plugins.copyartifact.TriggeredBuildSelector">
21
+ <fallbackToLastSuccessful>true</fallbackToLastSuccessful>
22
+ </selector>
23
+ <doNotFingerprintArtifacts>false</doNotFingerprintArtifacts>
24
+ <flatten>true</flatten>
25
+ <optional>true</optional>
26
+ </hudson.plugins.copyartifact.CopyArtifact>
27
+ </builders>
28
+ <publishers/>
29
+ <buildWrappers/>
30
+ </project>
@@ -0,0 +1,14 @@
1
+ - job:
2
+ name: copy_artifact
3
+ builders:
4
+ - copy_artifact:
5
+ project: 'test'
6
+ artifacts: 'artifact.txt'
7
+ target_directory: 'artifacts'
8
+ filter: 'test=true'
9
+ fingerprint: true
10
+ flatten: true
11
+ optional: true
12
+ selector:
13
+ type: triggered
14
+ fallback: true
@@ -0,0 +1,53 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project>
3
+ <actions/>
4
+ <description/>
5
+ <keepDependencies>false</keepDependencies>
6
+ <properties/>
7
+ <scm class="hudson.plugins.git.GitSCM">
8
+ <configVersion>2</configVersion>
9
+ <userRemoteConfigs>
10
+ <hudson.plugins.git.UserRemoteConfig>
11
+ <name/>
12
+ <refspec/>
13
+ <url>git@github.com:devops/repo.git</url>
14
+ </hudson.plugins.git.UserRemoteConfig>
15
+ </userRemoteConfigs>
16
+ <branches>
17
+ <hudson.plugins.git.BranchSpec>
18
+ <name>master</name>
19
+ </hudson.plugins.git.BranchSpec>
20
+ </branches>
21
+ <disableSubmodules>false</disableSubmodules>
22
+ <recursiveSubmodules>false</recursiveSubmodules>
23
+ <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
24
+ <authorOrCommitter>false</authorOrCommitter>
25
+ <clean>false</clean>
26
+ <wipeOutWorkspace>false</wipeOutWorkspace>
27
+ <pruneBranches>false</pruneBranches>
28
+ <remotePoll>false</remotePoll>
29
+ <ignoreNotifyCommit>false</ignoreNotifyCommit>
30
+ <useShallowClone>false</useShallowClone>
31
+ <buildChooser class="hudson.plugins.git.util.DefaultBuildChooser"/>
32
+ <gitTool>Default</gitTool>
33
+ <submoduleCfg class="list"/>
34
+ <relativeTargetDir/>
35
+ <reference/>
36
+ <excludedRegions>test1</excludedRegions>
37
+ <excludedUsers/>
38
+ <gitConfigName/>
39
+ <gitConfigEmail/>
40
+ <skipTag>false</skipTag>
41
+ <includedRegions>test2</includedRegions>
42
+ <scmName/>
43
+ </scm>
44
+ <canRoam>true</canRoam>
45
+ <disabled>false</disabled>
46
+ <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
47
+ <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
48
+ <triggers class="vector"/>
49
+ <concurrentBuild>false</concurrentBuild>
50
+ <builders/>
51
+ <publishers/>
52
+ <buildWrappers/>
53
+ </project>
@@ -0,0 +1,8 @@
1
+ - job:
2
+ name: git_include_exclude
3
+ scm_provider: git
4
+ scm_url: git@github.com:devops/repo.git
5
+ scm_branch: master
6
+ scm_params:
7
+ excluded_regions: 'test1'
8
+ included_regions: 'test2'
@@ -47,6 +47,9 @@ describe 'Test YAML jobs conversion to XML' do
47
47
  choice_parameter
48
48
  downstream_blocking
49
49
  groovy_postbuild
50
+ archive_artifact
51
+ copy_artifact
52
+ git_include_exclude
50
53
  )
51
54
 
52
55
  files.each do |file|
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.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Moochnick
@@ -365,16 +365,22 @@ files:
365
365
  - spec/unit_tests/fixtures/files/Job-Generate-From-Template.yaml
366
366
  - spec/unit_tests/fixtures/files/Job-Multi-Project.xml
367
367
  - spec/unit_tests/fixtures/files/Job-Multi-Project.yaml
368
+ - spec/unit_tests/fixtures/files/archive_artifact.xml
369
+ - spec/unit_tests/fixtures/files/archive_artifact.yaml
368
370
  - spec/unit_tests/fixtures/files/choice_parameter.xml
369
371
  - spec/unit_tests/fixtures/files/choice_parameter.yaml
370
372
  - spec/unit_tests/fixtures/files/concurrent_build.xml
371
373
  - spec/unit_tests/fixtures/files/concurrent_build.yaml
374
+ - spec/unit_tests/fixtures/files/copy_artifact.xml
375
+ - spec/unit_tests/fixtures/files/copy_artifact.yaml
372
376
  - spec/unit_tests/fixtures/files/discard_old.xml
373
377
  - spec/unit_tests/fixtures/files/discard_old.yaml
374
378
  - spec/unit_tests/fixtures/files/downstream.xml
375
379
  - spec/unit_tests/fixtures/files/downstream.yaml
376
380
  - spec/unit_tests/fixtures/files/downstream_blocking.xml
377
381
  - spec/unit_tests/fixtures/files/downstream_blocking.yaml
382
+ - spec/unit_tests/fixtures/files/git_include_exclude.xml
383
+ - spec/unit_tests/fixtures/files/git_include_exclude.yaml
378
384
  - spec/unit_tests/fixtures/files/groovy_postbuild.xml
379
385
  - spec/unit_tests/fixtures/files/groovy_postbuild.yaml
380
386
  - spec/unit_tests/fixtures/files/periodic_build.xml
@@ -443,16 +449,22 @@ test_files:
443
449
  - spec/unit_tests/fixtures/files/Job-Generate-From-Template.yaml
444
450
  - spec/unit_tests/fixtures/files/Job-Multi-Project.xml
445
451
  - spec/unit_tests/fixtures/files/Job-Multi-Project.yaml
452
+ - spec/unit_tests/fixtures/files/archive_artifact.xml
453
+ - spec/unit_tests/fixtures/files/archive_artifact.yaml
446
454
  - spec/unit_tests/fixtures/files/choice_parameter.xml
447
455
  - spec/unit_tests/fixtures/files/choice_parameter.yaml
448
456
  - spec/unit_tests/fixtures/files/concurrent_build.xml
449
457
  - spec/unit_tests/fixtures/files/concurrent_build.yaml
458
+ - spec/unit_tests/fixtures/files/copy_artifact.xml
459
+ - spec/unit_tests/fixtures/files/copy_artifact.yaml
450
460
  - spec/unit_tests/fixtures/files/discard_old.xml
451
461
  - spec/unit_tests/fixtures/files/discard_old.yaml
452
462
  - spec/unit_tests/fixtures/files/downstream.xml
453
463
  - spec/unit_tests/fixtures/files/downstream.yaml
454
464
  - spec/unit_tests/fixtures/files/downstream_blocking.xml
455
465
  - spec/unit_tests/fixtures/files/downstream_blocking.yaml
466
+ - spec/unit_tests/fixtures/files/git_include_exclude.xml
467
+ - spec/unit_tests/fixtures/files/git_include_exclude.yaml
456
468
  - spec/unit_tests/fixtures/files/groovy_postbuild.xml
457
469
  - spec/unit_tests/fixtures/files/groovy_postbuild.yaml
458
470
  - spec/unit_tests/fixtures/files/periodic_build.xml