jenkins_pipeline_builder 0.5.0 → 0.5.1

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: 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