autoproj-jenkins 0.3.5 → 0.3.6

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: bae28a8e387136d89f842898c029ba737092082d
4
- data.tar.gz: b0bd80032a00e151e3295cc8163fb032261ddcf8
3
+ metadata.gz: a0b068687531e0f0b3783cbe4b2fd95a62ec28c0
4
+ data.tar.gz: 4a1d865d39359263e886c881e470cdcd53c41af4
5
5
  SHA512:
6
- metadata.gz: ba7578d68cfd9c526d9d3dc6fc1fa088f36d473ab88b0fa7aa49329f4bb48c674cf13cc211c319d7480605d8cc25280c998b61e4ab86f831a2524326d16c2fe5
7
- data.tar.gz: 623860bfb37dd462673ad84e42d628d5c517f716e855448ca42faab66661c6752415524d11fe655a2fc230dbf8c248b30ca716b978eeb37cba62ed41f028a806
6
+ metadata.gz: 94bebe22fed809b955a8b387908ee823455e25a2e80c3ac9a53a02998de9553eada1cfd83b8e661b25d7a3378b046af8f83c613d2232a6aa0ea9ba744190aae2
7
+ data.tar.gz: 2cb32c59bb218aaa6c741bc896f548290c505c6c217772b5c4ea152daf5a69cd87cbc2a59b6d0c90cc04f3fcfa55ea939cb98452fe7e4875572ca701eb1d26f0
@@ -22,8 +22,9 @@ module Autoproj::Jenkins
22
22
  # @param [String] template the name of the template
23
23
  # @param [Hash] parameters parameters for the template rendering
24
24
  # @raise (see Autoproj::Jenkins.render_template)
25
- def create_job(job_name, template, **parameters)
25
+ def create_job(job_name, template, pipeline: '', **parameters)
26
26
  xml = Autoproj::Jenkins.render_template(template, **parameters)
27
+ xml = update_pipeline_in_config(xml, pipeline)
27
28
  jobs.create(job_name, xml)
28
29
  end
29
30
 
@@ -33,19 +34,33 @@ module Autoproj::Jenkins
33
34
  # @param [String] template the name of the template
34
35
  # @param [Hash] parameters parameters for the template rendering
35
36
  # @raise (see Autoproj::Jenkins.render_template)
36
- def reset_job(job_name, template, **parameters)
37
+ def reset_job(job_name, template, pipeline: '', **parameters)
37
38
  xml = Autoproj::Jenkins.render_template(template, **parameters)
39
+ xml = update_pipeline_in_config(xml, pipeline)
38
40
  jobs.update(job_name, xml)
39
41
  end
40
42
 
43
+ # Update the pipeline script in a job config
44
+ def update_pipeline_in_config(config, pipeline)
45
+ if config.respond_to?(:to_str)
46
+ config = REXML::Document.new(config)
47
+ end
48
+ config.elements['//definition/script'].text = pipeline
49
+ config.to_s
50
+ end
51
+
41
52
  # Either create or reset a job, depending on whether it already exists
42
53
  # or not
43
- def create_or_reset_job(job_name, template, **parameters)
54
+ #
55
+ # @param [String,nil] pipeline the job's pipeline script
56
+ def create_or_reset_job(job_name, template, pipeline: '', **parameters)
44
57
  xml = Autoproj::Jenkins.render_template(template, **parameters)
58
+ xml = update_pipeline_in_config(xml, pipeline)
59
+
45
60
  if has_job?(job_name)
46
- reset_job(job_name, template, **parameters)
61
+ jobs.update(job_name, xml.to_s)
47
62
  else
48
- create_job(job_name, template, **parameters)
63
+ jobs.create(job_name, xml.to_s)
49
64
  end
50
65
  end
51
66
 
@@ -93,7 +108,7 @@ module Autoproj::Jenkins
93
108
  def update_job_pipeline(job_name, template, **parameters)
94
109
  config = read_job_config(job_name)
95
110
  pipeline = Autoproj::Jenkins.render_template(template, **parameters)
96
- config.elements['//definition/script'].text = pipeline
111
+ update_pipeline_in_config(config, pipeline)
97
112
  update_job_config(job_name, config)
98
113
  end
99
114
 
@@ -4,7 +4,7 @@
4
4
  <description></description>
5
5
  <keepDependencies>false</keepDependencies>
6
6
  <definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition" plugin="workflow-cps@2.9">
7
- <script><%= pipeline %></script>
7
+ <script />
8
8
  <sandbox>false</sandbox>
9
9
  </definition>
10
10
  <triggers/>
@@ -50,14 +50,14 @@ module Autoproj::Jenkins
50
50
  # with --dev or not
51
51
  # @param [Array<Autoproj::PackageDefinition>] packages if non-empty,
52
52
  # restrict operations to these packages and their dependencies
53
- def update_buildconf_pipeline(*package_names, gemfile: 'buildconf-Gemfile', autoproj_install_path: nil, dev: false, credentials_id: nil, vcs_credentials: Credentials.new)
53
+ def render_buildconf_pipeline(*package_names, gemfile: 'buildconf-Gemfile', autoproj_install_path: nil, dev: false, credentials_id: nil, vcs_credentials: Credentials.new)
54
54
  manifest_vcs = ws.manifest.vcs
55
55
  if manifest_vcs.local? || manifest_vcs.none?
56
56
  raise ArgumentError, "cannot use Jenkins to build an autoproj buildconf that is not on a remotely acessible VCS"
57
57
  end
58
58
 
59
59
  job_name = job_name_from_package_name("buildconf")
60
- server.update_job_pipeline(job_name, 'buildconf.pipeline',
60
+ server.render_pipeline(job_name, 'buildconf.pipeline',
61
61
  vcs: manifest_vcs,
62
62
  package_names: package_names,
63
63
  gemfile: gemfile,
@@ -79,15 +79,15 @@ module Autoproj::Jenkins
79
79
  # Mostly used within autoproj-jenkins tests
80
80
  def create_or_update_buildconf_job(*package_names, gemfile: 'buildconf-Gemfile', autoproj_install_path: nil, dev: false, quiet_period: 5, credentials_id: nil, vcs_credentials: Credentials.new)
81
81
  job_name = job_name_from_package_name("buildconf")
82
- server.create_or_reset_job(job_name, 'buildconf.xml', quiet_period: quiet_period)
83
82
 
84
- update_buildconf_pipeline(
83
+ pipeline = render_buildconf_pipeline(
85
84
  *package_names,
86
85
  gemfile: gemfile,
87
86
  autoproj_install_path: autoproj_install_path,
88
87
  credentials_id: credentials_id,
89
88
  vcs_credentials: vcs_credentials,
90
89
  dev: dev)
90
+ server.create_or_reset_job(job_name, 'buildconf.xml', pipeline: pipeline, quiet_period: quiet_period)
91
91
  end
92
92
 
93
93
  # Returns the job name of a given package
@@ -1,5 +1,5 @@
1
1
  module Autoproj
2
2
  module Jenkins
3
- VERSION = "0.3.5"
3
+ VERSION = "0.3.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoproj-jenkins
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvain Joyeux