jenkins_pipeline_builder 0.4.2 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +65 -0
- data/LICENSE +1 -1
- data/README.md +64 -2
- data/Rakefile +13 -11
- data/bin/generate +2 -4
- data/jenkins_pipeline_builder.gemspec +14 -11
- data/lib/jenkins_pipeline_builder.rb +2 -1
- data/lib/jenkins_pipeline_builder/builders.rb +89 -33
- data/lib/jenkins_pipeline_builder/cli/base.rb +21 -29
- data/lib/jenkins_pipeline_builder/cli/helper.rb +12 -15
- data/lib/jenkins_pipeline_builder/cli/pipeline.rb +6 -1
- data/lib/jenkins_pipeline_builder/cli/view.rb +2 -2
- data/lib/jenkins_pipeline_builder/compiler.rb +58 -56
- data/lib/jenkins_pipeline_builder/generator.rb +362 -172
- data/lib/jenkins_pipeline_builder/job_builder.rb +48 -45
- data/lib/jenkins_pipeline_builder/module_registry.rb +4 -6
- data/lib/jenkins_pipeline_builder/publishers.rb +53 -38
- data/lib/jenkins_pipeline_builder/pull_request.rb +156 -0
- data/lib/jenkins_pipeline_builder/triggers.rb +24 -25
- data/lib/jenkins_pipeline_builder/utils.rb +13 -7
- data/lib/jenkins_pipeline_builder/version.rb +2 -2
- data/lib/jenkins_pipeline_builder/view.rb +120 -98
- data/lib/jenkins_pipeline_builder/wrappers.rb +44 -44
- data/lib/jenkins_pipeline_builder/xml_helper.rb +4 -4
- data/spec/func_tests/spec_helper.rb +2 -2
- data/spec/func_tests/view_spec.rb +6 -6
- data/spec/unit_tests/compiler_spec.rb +7 -7
- data/spec/unit_tests/fixtures/files/Job-Gem-Build.xml +2 -2
- data/spec/unit_tests/fixtures/files/Job-Gem-Build.yaml +1 -0
- data/spec/unit_tests/fixtures/files/concurrent_build.xml +17 -0
- data/spec/unit_tests/fixtures/files/concurrent_build.yaml +4 -0
- data/spec/unit_tests/fixtures/files/downstream_blocking.xml +19 -0
- data/spec/unit_tests/fixtures/files/downstream_blocking.yaml +15 -0
- data/spec/unit_tests/fixtures/files/groovy_postbuild.xml +29 -0
- data/spec/unit_tests/fixtures/files/groovy_postbuild.yaml +9 -0
- data/spec/unit_tests/generator_spec.rb +30 -25
- data/spec/unit_tests/module_registry_spec.rb +9 -9
- data/spec/unit_tests/resolve_dependencies_spec.rb +108 -89
- data/spec/unit_tests/spec_helper.rb +1 -1
- metadata +62 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 074e6a33bccd22a77790d7785fa41e3aed3b0643
|
4
|
+
data.tar.gz: bb21d846871e41518155c1569384de9d0a17377f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c5c5d2102413b49a1f9cedbba8a7ee84541ddd2701cb69bc5e8305b2192f3f61a300332c729b6cf3c89e5ade81f79b25fc6abc2aafaf6716f6e3cdb71c5d331
|
7
|
+
data.tar.gz: 3a79067cc83f4e015200af29b2a8255c2d7f6b881cd2b8eedad5992435b4d95e5cbba4c170f8fc080a98876f05b857595ef626b3459148206b0741cc32acaa2a
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
+
# on 2014-06-23 17:07:53 -0400 using RuboCop version 0.23.0.
|
3
|
+
# The point is for the user to remove these configuration records
|
4
|
+
# one by one as the offenses are removed from the code base.
|
5
|
+
# Note that changes in the inspected code, or installation of new
|
6
|
+
# versions of RuboCop, may require this file to be generated again.
|
7
|
+
|
8
|
+
#######
|
9
|
+
# WIP
|
10
|
+
# Offense count: 17
|
11
|
+
Style/LineLength:
|
12
|
+
Enabled: false
|
13
|
+
Max: 120
|
14
|
+
|
15
|
+
# Offense count: 8
|
16
|
+
# Configuration parameters: CountComments.
|
17
|
+
Style/MethodLength:
|
18
|
+
Enabled: false
|
19
|
+
Max: 30
|
20
|
+
|
21
|
+
########
|
22
|
+
# Fix these later
|
23
|
+
# Offense count: 1
|
24
|
+
Lint/Eval:
|
25
|
+
Enabled: false
|
26
|
+
|
27
|
+
# Offense count: 6
|
28
|
+
Lint/ShadowingOuterLocalVariable:
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
# Offense count: 2
|
32
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
33
|
+
Style/ClassAndModuleChildren:
|
34
|
+
Enabled: false
|
35
|
+
|
36
|
+
# Offense count: 6
|
37
|
+
# Configuration parameters: CountComments.
|
38
|
+
Style/ClassLength:
|
39
|
+
Max: 506
|
40
|
+
|
41
|
+
# Offense count: 12
|
42
|
+
Style/CyclomaticComplexity:
|
43
|
+
Max: 18
|
44
|
+
|
45
|
+
# Offense count: 17
|
46
|
+
Style/Documentation:
|
47
|
+
Enabled: false
|
48
|
+
|
49
|
+
#######
|
50
|
+
# We actually want these off
|
51
|
+
|
52
|
+
# Offense count: 2
|
53
|
+
Lint/UselessSetterCall:
|
54
|
+
Enabled: false
|
55
|
+
|
56
|
+
# Offense count: 9
|
57
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
58
|
+
Style/Next:
|
59
|
+
Enabled: false
|
60
|
+
|
61
|
+
# Offense count: 7
|
62
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
63
|
+
Style/VariableName:
|
64
|
+
Enabled: false
|
65
|
+
#######
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -86,6 +86,7 @@ Here's a high level overview of what's available:
|
|
86
86
|
- job:
|
87
87
|
name: nameStr # Name of your Job
|
88
88
|
job_type: free_style # Optional [free_style|multi_project]
|
89
|
+
concurrent_build: true or false
|
89
90
|
discard_old: # Discard old builds after:
|
90
91
|
days: 1 # Optional, number of days after which the build is deleted
|
91
92
|
number: 2 # Optional, number of builds after which the build is deleted
|
@@ -147,7 +148,7 @@ Here's a high level overview of what's available:
|
|
147
148
|
mavenName: maven-name # Optional
|
148
149
|
- remote_job:
|
149
150
|
server: 'Name of Server' # Name of the Remote Jenkins Server
|
150
|
-
job_name: name_of_remote_build
|
151
|
+
job_name: name_of_remote_build
|
151
152
|
blocking: true # Block current job until remote job finishes
|
152
153
|
polling_interval: 10 # Optional, number of seconds between polls, defaults to 10
|
153
154
|
continue_on_remote_failure: false
|
@@ -160,6 +161,18 @@ Here's a high level overview of what's available:
|
|
160
161
|
type: api_token or none
|
161
162
|
username: name_of_user
|
162
163
|
api_token: APITOKEN
|
164
|
+
- blocking_downstream:
|
165
|
+
project: nameStr
|
166
|
+
data:
|
167
|
+
- params: |
|
168
|
+
param1
|
169
|
+
param2
|
170
|
+
condition: FAILURE
|
171
|
+
trigger_with_no_parameters: false
|
172
|
+
# Below is Optional, values can be SUCCESS, FAILURE, UNSTABLE, never
|
173
|
+
fail: FAILURE # Fail this build step if the triggered build is worse or equal to
|
174
|
+
mark_fail: SUCCESS # Mark this build as failure if the triggered build is worse or equal to
|
175
|
+
mark_unstable: UNSTABLE # Mark this build as unstable if the triggered build is worse or equal to
|
163
176
|
wrappers:
|
164
177
|
- timestamp: true
|
165
178
|
- ansicolor: true
|
@@ -170,13 +183,14 @@ Here's a high level overview of what's available:
|
|
170
183
|
snapshot-repo: snapshot
|
171
184
|
publish: 'pkg/*.gem'
|
172
185
|
publish-build-info: true # Optional
|
186
|
+
properties: key=value;key2=value2,value2.1
|
173
187
|
- maven3artifactory:
|
174
188
|
url: https://artifactory.com/artifactory
|
175
189
|
artifactory-name: name
|
176
190
|
release-repo: release
|
177
191
|
snapshot-repo: snapshot
|
178
192
|
publish-build-info: true # Optional
|
179
|
-
- inject_env_var:
|
193
|
+
- inject_env_var:
|
180
194
|
file: 'foo.prop'
|
181
195
|
content: |
|
182
196
|
VAR1 = value_1
|
@@ -230,6 +244,35 @@ Here's a high level overview of what's available:
|
|
230
244
|
}
|
231
245
|
```
|
232
246
|
|
247
|
+
### Pull Request Generator
|
248
|
+
|
249
|
+
The pull request generator will generate pipelines for pull requests that are noticed on your repo. It will also remove old pipelines from Jenkins if the pull_request is closed.
|
250
|
+
If you need to modify job parameters please just specify that in the jobs section like the example below.
|
251
|
+
|
252
|
+
When running a project through this module, the project {{name}} is appended with "-PR##" where ## is the number of the pull request.
|
253
|
+
|
254
|
+
```yaml
|
255
|
+
- job:
|
256
|
+
name: '{{name}}-ReqGen'
|
257
|
+
job_type: pull_request_generator
|
258
|
+
git_url: 'https://www.github.com/'
|
259
|
+
git_repo: 'jenkins_pipeline_builder'
|
260
|
+
git_org: 'IgorShare'
|
261
|
+
jobs:
|
262
|
+
- '{{name}}-Job1':
|
263
|
+
publishers:
|
264
|
+
- downstream:
|
265
|
+
project: '{{name}}-Job2'
|
266
|
+
- '{{name}}-Job2':
|
267
|
+
discard_old:
|
268
|
+
number: '100'
|
269
|
+
- '{{name}}-Job3'
|
270
|
+
builders:
|
271
|
+
- shell_command: |
|
272
|
+
generate -v || gem install jenkins_pipeline_builder
|
273
|
+
generate pipeline pull_request pipeline/ {{name}}
|
274
|
+
```
|
275
|
+
|
233
276
|
### View DSL
|
234
277
|
```yaml
|
235
278
|
- view:
|
@@ -265,6 +308,25 @@ If a set of Defaults is specified with the name global, that will be used by all
|
|
265
308
|
param1: 'value 1'
|
266
309
|
```
|
267
310
|
|
311
|
+
PLUGINS:
|
312
|
+
--------
|
313
|
+
|
314
|
+
A number of the DSL options rely on Jenkins plugins, including:
|
315
|
+
|
316
|
+
* ansicolor - "AnsiColor"
|
317
|
+
* (view) type: 'categorizedView' - "categorized-view"
|
318
|
+
* hipchat - "HipChat Plugin"
|
319
|
+
* inject_env_vars - "Environment Injector Plugin"
|
320
|
+
* priority - "Priority Sorter plugin"
|
321
|
+
* downstream - "Parameterized Trigger plugin"
|
322
|
+
* rvm - "Rvm"
|
323
|
+
* throttle - "Throttle Concurrent Builds Plug-in"
|
324
|
+
* timestamp - "Timestamper"
|
325
|
+
* groovy_postbuild - "Groovy Postbuild"
|
326
|
+
|
327
|
+
Just about every plugin above can be installed through Jenkins (Manage Jenkins > Manage Plugins > Available)
|
328
|
+
|
329
|
+
Exceptions:
|
268
330
|
|
269
331
|
CONTRIBUTING:
|
270
332
|
----------------
|
data/Rakefile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (c) 2014
|
2
|
+
# Copyright (c) 2014 Constant Contact
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
5
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -20,15 +20,17 @@
|
|
20
20
|
# THE SOFTWARE.
|
21
21
|
#
|
22
22
|
|
23
|
-
#!/usr/bin/env rake
|
24
23
|
require 'rspec/core/rake_task'
|
25
24
|
require 'yard'
|
25
|
+
require 'rubocop/rake_task'
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
RuboCop::RakeTask.new
|
28
|
+
|
29
|
+
RSpec::Core::RakeTask.new(:spec, :tag) do |spec|
|
30
|
+
spec.pattern = '.spec/**/*_spec.rb'
|
31
|
+
spec.verbose = true
|
32
|
+
spec.fail_on_error = false
|
33
|
+
spec.rspec_opts = spec_output 'spec.xml'
|
32
34
|
end
|
33
35
|
|
34
36
|
def spec_output(filename)
|
@@ -58,13 +60,13 @@ end
|
|
58
60
|
namespace :doc do
|
59
61
|
# This task requires that graphviz is installed locally. For more info:
|
60
62
|
# http://www.graphviz.org/
|
61
|
-
desc
|
63
|
+
desc 'Generates the class diagram using the yard generated dot file'
|
62
64
|
task :generate_class_diagram do
|
63
|
-
puts
|
65
|
+
puts 'Generating the dot file...'
|
64
66
|
`yard graph --file jenkins_api_client.dot`
|
65
|
-
puts
|
67
|
+
puts 'Generating class diagram from the dot file...'
|
66
68
|
`dot jenkins_api_client.dot -Tpng -o jenkins_api_client_class_diagram.png`
|
67
69
|
end
|
68
70
|
end
|
69
71
|
|
70
|
-
task default: :unit_tests
|
72
|
+
task default: [:unit_tests, :rubocop]
|
data/bin/generate
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
#
|
3
|
-
# Copyright (c) 2014
|
3
|
+
# Copyright (c) 2014 Constant Contact
|
4
4
|
#
|
5
5
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -21,8 +21,6 @@
|
|
21
21
|
# THE SOFTWARE.
|
22
22
|
#
|
23
23
|
|
24
|
-
|
25
|
-
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
|
24
|
+
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))
|
26
25
|
require 'jenkins_pipeline_builder'
|
27
26
|
JenkinsPipelineBuilder::CLI::Base.start
|
28
|
-
|
@@ -6,30 +6,32 @@ require 'jenkins_pipeline_builder/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'jenkins_pipeline_builder'
|
8
8
|
spec.version = JenkinsPipelineBuilder::VERSION
|
9
|
-
spec.authors = ['Igor Moochnick']
|
10
|
-
spec.email = %w(igor.moochnick@gmail.com)
|
11
|
-
spec.description = %q
|
12
|
-
automating Job & Pipeline creation from the YAML files checked-in with your application source code
|
13
|
-
spec.summary = %q
|
14
|
-
spec.homepage = 'https://github.com/
|
9
|
+
spec.authors = ['Igor Moochnick', 'Joseph Henrich']
|
10
|
+
spec.email = %w(igor.moochnick@gmail.com crimsonknave@gmail.com)
|
11
|
+
spec.description = %q(This is a simple and easy-to-use Jenkins Pipeline generator with features focused on
|
12
|
+
automating Job & Pipeline creation from the YAML files checked-in with your application source code)
|
13
|
+
spec.summary = %q(This gem is will boostrap your Jenkins pipelines)
|
14
|
+
spec.homepage = 'https://github.com/ConstantContact/jenkins_pipeline_builder'
|
15
15
|
spec.license = 'MIT'
|
16
16
|
|
17
|
-
spec.files = `git ls-files`.split(
|
18
|
-
spec.executables = spec.files.grep(
|
19
|
-
spec.test_files = spec.files.grep(
|
20
|
-
spec.require_paths = [
|
17
|
+
spec.files = `git ls-files`.split($RS)
|
18
|
+
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
20
|
+
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES']='true'
|
22
|
+
ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES'] = 'true'
|
23
23
|
|
24
24
|
spec.add_dependency 'nokogiri', '~> 1.5.0'
|
25
25
|
spec.add_dependency 'jenkins_api_client', '~> 0.14.1'
|
26
26
|
spec.add_dependency 'thor', '>= 0.18.0'
|
27
27
|
spec.add_dependency 'activesupport'
|
28
|
+
spec.add_dependency 'archive-tar-minitar'
|
28
29
|
|
29
30
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
30
31
|
spec.add_development_dependency 'rake'
|
31
32
|
spec.add_development_dependency 'rspec', '~> 2.14'
|
32
33
|
spec.add_development_dependency 'bump'
|
34
|
+
spec.add_development_dependency 'json'
|
33
35
|
spec.add_development_dependency 'gem-release'
|
34
36
|
spec.add_development_dependency 'pry'
|
35
37
|
spec.add_development_dependency 'simplecov'
|
@@ -40,4 +42,5 @@ automating Job & Pipeline creation from the YAML files checked-in with your appl
|
|
40
42
|
spec.add_development_dependency 'yard'
|
41
43
|
spec.add_development_dependency 'rspec_junit_formatter'
|
42
44
|
spec.add_development_dependency 'webmock'
|
45
|
+
spec.add_development_dependency 'rubocop'
|
43
46
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (c) 2014
|
2
|
+
# Copyright (c) 2014 Constant Contact
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
5
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -30,6 +30,7 @@ require 'jenkins_pipeline_builder/builders'
|
|
30
30
|
require 'jenkins_pipeline_builder/wrappers'
|
31
31
|
require 'jenkins_pipeline_builder/triggers'
|
32
32
|
require 'jenkins_pipeline_builder/publishers'
|
33
|
+
require 'jenkins_pipeline_builder/pull_request'
|
33
34
|
require 'jenkins_pipeline_builder/view'
|
34
35
|
require 'jenkins_pipeline_builder/generator'
|
35
36
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (c) 2014
|
2
|
+
# Copyright (c) 2014 Constant Contact
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
5
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -24,57 +24,114 @@ module JenkinsPipelineBuilder
|
|
24
24
|
class Builders
|
25
25
|
def self.build_multijob(params, xml)
|
26
26
|
params[:phases].each do |name, content|
|
27
|
-
xml.send('com.tikal.jenkins.plugins.multijob.MultiJobBuilder')
|
27
|
+
xml.send('com.tikal.jenkins.plugins.multijob.MultiJobBuilder') do
|
28
28
|
xml.phaseName name
|
29
|
-
xml.phaseJobs
|
29
|
+
xml.phaseJobs do
|
30
30
|
content[:jobs].each do |job|
|
31
|
-
xml.send('com.tikal.jenkins.plugins.multijob.PhaseJobsConfig')
|
31
|
+
xml.send('com.tikal.jenkins.plugins.multijob.PhaseJobsConfig') do
|
32
32
|
xml.jobName job[:name]
|
33
33
|
xml.currParams job[:current_params] || false
|
34
34
|
xml.exposedSCM job[:exposed_scm] || false
|
35
35
|
if job[:config]
|
36
|
-
xml.configs
|
37
|
-
if job[:config].
|
38
|
-
xml.send('hudson.plugins.parameterizedtrigger.PredefinedBuildParameters')
|
36
|
+
xml.configs do
|
37
|
+
if job[:config].key? :predefined_build_parameters
|
38
|
+
xml.send('hudson.plugins.parameterizedtrigger.PredefinedBuildParameters') do
|
39
39
|
xml.properties job[:config][:predefined_build_parameters].join "\n"
|
40
|
-
|
40
|
+
end
|
41
41
|
end
|
42
|
-
|
42
|
+
end
|
43
43
|
end
|
44
|
-
|
44
|
+
end
|
45
45
|
end
|
46
|
-
|
46
|
+
end
|
47
47
|
xml.continuationCondition content[:continue_condition] || 'SUCCESSFUL'
|
48
|
-
|
48
|
+
end
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
52
|
def self.build_maven3(params, xml)
|
53
|
-
xml.send('org.jfrog.hudson.maven3.Maven3Builder')
|
53
|
+
xml.send('org.jfrog.hudson.maven3.Maven3Builder') do
|
54
54
|
xml.mavenName params[:mavenName] || 'tools-maven-3.0.3'
|
55
55
|
xml.rootPom params[:rootPom]
|
56
56
|
xml.goals params[:goals]
|
57
57
|
xml.mavenOpts params[:options]
|
58
|
-
|
58
|
+
end
|
59
59
|
end
|
60
60
|
|
61
61
|
def self.build_shell_command(param, xml)
|
62
|
-
xml.send('hudson.tasks.Shell')
|
62
|
+
xml.send('hudson.tasks.Shell') do
|
63
63
|
xml.command param
|
64
|
-
|
64
|
+
end
|
65
65
|
end
|
66
66
|
|
67
67
|
def self.build_environment_vars_injector(params, xml)
|
68
|
-
xml.EnvInjectBuilder
|
69
|
-
xml.info
|
68
|
+
xml.EnvInjectBuilder do
|
69
|
+
xml.info do
|
70
70
|
xml.propertiesFilePath params
|
71
|
-
|
72
|
-
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.blocking_downstream(params, xml)
|
76
|
+
colors = { 'SUCCESS' => { ordinal: 0, color: 'BLUE' }, 'FAILURE' => { ordinal: 2, color: 'RED' }, 'UNSTABLE' => { ordinal: 1, color: 'YELLOW' } }
|
77
|
+
xml.send('hudson.plugins.parameterizedtrigger.TriggerBuilder', 'plugin' => 'parameterized-trigger') do
|
78
|
+
xml.configs do
|
79
|
+
xml.send('hudson.plugins.parameterizedtrigger.BlockableBuildTriggerConfig') do
|
80
|
+
|
81
|
+
xml.configs do
|
82
|
+
params[:data] = [{ params: '' }] unless params[:data]
|
83
|
+
params[:data].each do |config|
|
84
|
+
if config[:params]
|
85
|
+
xml.send('hudson.plugins.parameterizedtrigger.PredefinedBuildParameters') do
|
86
|
+
xml.properties config[:params]
|
87
|
+
end
|
88
|
+
end
|
89
|
+
if config[:file]
|
90
|
+
xml.send('hudson.plugins.parameterizedtrigger.FileBuildParameters') do
|
91
|
+
xml.propertiesFile config[:file]
|
92
|
+
xml.failTriggerOnMissing false
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
xml.projects params[:project]
|
98
|
+
xml.condition params[:condition] || 'SUCCESS'
|
99
|
+
xml.triggerWithNoParameters params[:trigger_with_no_parameters] || false
|
100
|
+
xml.block do
|
101
|
+
if params[:fail] && colors.include?(params[:fail])
|
102
|
+
xml.buildStepFailureThreshold do
|
103
|
+
xml.name params[:fail]
|
104
|
+
xml.ordinal colors[params[:fail]][:ordinal]
|
105
|
+
xml.color colors[params[:fail]][:color]
|
106
|
+
xml.completeBuild 'true'
|
107
|
+
end
|
108
|
+
end
|
109
|
+
if params[:mark_fail] && colors.include?(params[:mark_fail])
|
110
|
+
xml.failureThreshold do
|
111
|
+
xml.name params[:mark_fail]
|
112
|
+
xml.ordinal colors[params[:mark_fail]][:ordinal]
|
113
|
+
xml.color colors[params[:mark_fail]][:color]
|
114
|
+
xml.completeBuild 'true'
|
115
|
+
end
|
116
|
+
end
|
117
|
+
if params[:mark_unstable] && colors.include?(params[:mark_unstable])
|
118
|
+
xml.unstableThreshold do
|
119
|
+
xml.name params[:mark_unstable]
|
120
|
+
xml.ordinal colors[params[:mark_unstable]][:ordinal]
|
121
|
+
xml.color colors[params[:mark_unstable]][:color]
|
122
|
+
xml.completeBuild 'true'
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
xml.buildAllNodesWithLabel false
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
73
130
|
end
|
74
131
|
|
75
132
|
def self.start_remote_job(params, xml)
|
76
133
|
parameters = params[:parameters][:content].split("\n") if params[:parameters] && params[:parameters][:content]
|
77
|
-
xml.send('org.jenkinsci.plugins.ParameterizedRemoteTrigger.RemoteBuildConfiguration', 'plugin'=>'Parameterized-Remote-Trigger')
|
134
|
+
xml.send('org.jenkinsci.plugins.ParameterizedRemoteTrigger.RemoteBuildConfiguration', 'plugin' => 'Parameterized-Remote-Trigger') do
|
78
135
|
xml.remoteJenkinsName params[:server]
|
79
136
|
xml.job params[:job_name]
|
80
137
|
xml.shouldNotFailBuild params[:continue_on_remote_failure] if params[:continue_on_remote_failure]
|
@@ -83,36 +140,35 @@ module JenkinsPipelineBuilder
|
|
83
140
|
xml.token
|
84
141
|
if params[:parameters] && params[:parameters][:content]
|
85
142
|
xml.parameters parameters.join("\n")
|
86
|
-
xml.parameterList
|
143
|
+
xml.parameterList do
|
87
144
|
parameters.each do |p|
|
88
145
|
xml.string p
|
89
146
|
end
|
90
|
-
|
147
|
+
end
|
91
148
|
elsif params[:parameters] && params[:parameters][:file]
|
92
|
-
xml.loadParamsFromFile 'true'
|
149
|
+
xml.loadParamsFromFile 'true'
|
93
150
|
xml.parameterFile params[:parameters][:file]
|
94
151
|
else
|
95
152
|
xml.parameters
|
96
|
-
xml.parameterList
|
153
|
+
xml.parameterList do
|
97
154
|
xml.string
|
98
|
-
|
155
|
+
end
|
99
156
|
end
|
100
157
|
if params[:credentials] && params[:credentials][:type]
|
101
158
|
xml.overrideAuth 'true'
|
102
|
-
xml.auth
|
103
|
-
xml.send('org.jenkinsci.plugins.ParameterizedRemoteTrigger.Auth')
|
104
|
-
if params[:credentials][:type]==
|
159
|
+
xml.auth do
|
160
|
+
xml.send('org.jenkinsci.plugins.ParameterizedRemoteTrigger.Auth') do
|
161
|
+
if params[:credentials][:type] == 'api_token'
|
105
162
|
xml.authType 'apiToken'
|
106
163
|
xml.username params[:credentials][:username]
|
107
164
|
xml.API__TOKEN params[:credentials][:api_token]
|
108
165
|
else
|
109
166
|
xml.authType 'none'
|
110
167
|
end
|
111
|
-
|
112
|
-
|
168
|
+
end
|
169
|
+
end
|
113
170
|
end
|
114
|
-
|
171
|
+
end
|
115
172
|
end
|
116
|
-
|
117
173
|
end
|
118
174
|
end
|