autoproj-jenkins 0.3.3 → 0.3.4

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: 9afd4f75a51180a1dd207eb9eca50d88f00f0e1f
4
- data.tar.gz: 0198294a97c41882de344d9eccf632b8c46b2a43
3
+ metadata.gz: 76ebc8d50e5283f36c0898480889013c8c3da5b3
4
+ data.tar.gz: 514d13bd43cdc4dc00aed8627197244898e1eeec
5
5
  SHA512:
6
- metadata.gz: 7412607e70eb73a2678c456dc6bb89901c774238c65dd69c561611a8b92512e05a62e609baa8a58cacdfe17b785d536fb0c2005f0c9409c4d38491f609f6c672
7
- data.tar.gz: b8fcf1f5730ced0d390df61457855e859055ad361d873988410fa32040c707a7094fc268dab087e41127bc126ca050fd2a3112699d35330eb9efe3cb34b1cfe9
6
+ metadata.gz: 820ad5b828f8bce136c9052b3c807577a0c1ce520dddafc3d09d9dcda648138d13afd520a18c338b94a0116a385078f6bb72293ef240ac0b169b92f056c34b8c
7
+ data.tar.gz: 6345557039b3ab9a432e26e5f0abbad807d0656ccb348e5ddb15a97cdecc183b6bfc35ca466691988425dc36d30100ece6a102fc8b4bc6f0fd94b974b1e28551
@@ -33,8 +33,11 @@ module Autoproj
33
33
  autoproj_install_path = nil
34
34
  end
35
35
 
36
- finalize_setup(package_names, recursive: false, non_imported_packages: :return)
37
- updater.create_or_update_buildconf_job(*package_names, gemfile: gemfile,
36
+ source_packages, _ = finalize_setup(package_names, recursive: false, non_imported_packages: :return)
37
+ source_packages = source_packages.map do |package_name|
38
+ ws.manifest.package_definition_by_name(package_name)
39
+ end
40
+ updater.create_or_update_buildconf_job(*source_packages, gemfile: gemfile,
38
41
  autoproj_install_path: autoproj_install_path, dev: dev,
39
42
  credentials_id: credentials_id,
40
43
  vcs_credentials: parse_vcs_credentials(vcs_credentials))
@@ -49,6 +49,11 @@ module Autoproj::Jenkins
49
49
  end
50
50
  end
51
51
 
52
+ # Render a pipeline script
53
+ def render_pipeline(job_name, template, **parameters)
54
+ Autoproj::Jenkins.render_template(template, **parameters)
55
+ end
56
+
52
57
  # Test whether the server already has a job
53
58
  #
54
59
  # @param [String] job_name
@@ -83,7 +83,13 @@ def getUpstreamBuilds(upstreamJobNames, triggerJob, triggerBuild)
83
83
  else {
84
84
  echo "manual build trigger, using last successful build for ${jobName}"
85
85
  }
86
- matchingBuild = job.getLastSuccessfulBuild().getNumber()
86
+ if (job.getLastSuccessfulBuild())
87
+ matchingBuild = job.getLastSuccessfulBuild().getNumber()
88
+ else
89
+ {
90
+ echo "${jobName} has no successful build, aborting"
91
+ return;
92
+ }
87
93
  }
88
94
  echo "upstream build: ${jobName}#${matchingBuild}"
89
95
  upstreamBuilds << [jobName, matchingBuild]
@@ -94,11 +100,9 @@ def getUpstreamBuilds(upstreamJobNames, triggerJob, triggerBuild)
94
100
 
95
101
  def waitForUpstreamBuilds(upstreamBuilds)
96
102
  {
97
- def waitContinue = true;
98
- while(waitContinue)
103
+ def skipBuild = false;
104
+ waitUntil
99
105
  {
100
- waitContinue = false;
101
-
102
106
  // Iterate list -- NOTE: we cannot use groovy style or even modern java style iteration
103
107
  for (upstreamBuildIndex = 0; upstreamBuildIndex < upstreamBuilds.size(); ++upstreamBuildIndex)
104
108
  {
@@ -109,19 +113,27 @@ def waitForUpstreamBuilds(upstreamBuilds)
109
113
  if (status == 'IN_PROGRESS')
110
114
  {
111
115
  echo "waiting for job ${upstreamJobName}#${upstreamBuildId} to finish"
112
- waitContinue = true
113
- sleep time: 1, units: 'SECONDS'
116
+ return false;
114
117
  }
115
118
  else if (status == 'FAILED')
116
119
  {
117
120
  echo "${upstreamJobName}#${upstreamBuildId} did not finish successfully, aborting this build"
118
- currentBuild.result = 'NOT_BUILT';
119
- return false;
121
+ skipBuild = true;
122
+ return true;
120
123
  }
121
124
  }
125
+ return true;
122
126
  }
123
- return true
124
127
 
128
+ if (skipBuild)
129
+ {
130
+ currentBuild.result = 'NOT_BUILT';
131
+ return false;
132
+ }
133
+ else
134
+ {
135
+ return true;
136
+ }
125
137
  }
126
138
 
127
139
  def makeUpstreamArtifactImporters(autoproj, fullWorkspaceDir, upstreamDir,
@@ -17,8 +17,13 @@ stage('waiting for upstream jobs to finish') {
17
17
  triggeredByUpstream = false;
18
18
  triggerBuild = [null, null];
19
19
  }
20
- upstreamBuilds = getUpstreamBuilds(upstreamJobNames, triggerBuild[0], triggerBuild[1])
21
20
 
21
+ def upstreamBuilds = getUpstreamBuilds(upstreamJobNames, triggerBuild[0], triggerBuild[1])
22
+ if (!upstreamBuilds)
23
+ {
24
+ currentBuild.result = 'NOT_BUILT';
25
+ return;
26
+ }
22
27
  if (!waitForUpstreamBuilds(upstreamBuilds)) {
23
28
  return
24
29
  }
@@ -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 />
7
+ <script><%= pipeline %></script>
8
8
  <sandbox>false</sandbox>
9
9
  </definition>
10
10
  <triggers/>
@@ -147,13 +147,6 @@ module Autoproj::Jenkins
147
147
  def update(*packages, quiet_period: 5, gemfile: 'buildconf-Gemfile', autoproj_install_path: nil, vcs_credentials: Credentials.new)
148
148
  reverse_dependencies = ws.manifest.compute_revdeps
149
149
 
150
- packages.each do |package|
151
- job_name = job_name_from_package_name(package.name)
152
- server.create_or_reset_job(
153
- job_name, 'package.xml',
154
- quiet_period: quiet_period)
155
- end
156
-
157
150
  package_names = packages.map(&:name).to_set
158
151
  packages.map do |package|
159
152
  job_name = job_name_from_package_name(package.name)
@@ -161,7 +154,7 @@ module Autoproj::Jenkins
161
154
  raise UnhandledVCS, "the #{package.vcs.type} importer, used by #{package.name}, is not supported by autoproj-jenkins"
162
155
  end
163
156
 
164
- upstream_jobs = compute_job_to_package_map(compute_upstream_packages(package), package_names)
157
+ upstream_jobs = compute_job_to_package_map(compute_upstream_packages(package), package_names)
165
158
  downstream_jobs = compute_job_to_package_map(compute_downstream_packages(package, reverse_dependencies), package_names)
166
159
 
167
160
  prefix_relative_path =
@@ -172,7 +165,7 @@ module Autoproj::Jenkins
172
165
  "install/#{package.name}"
173
166
  end
174
167
 
175
- server.update_job_pipeline(job_name, 'package.pipeline',
168
+ pipeline = server.render_pipeline(job_name, 'package.pipeline',
176
169
  buildconf_vcs: ws.manifest.vcs,
177
170
  vcs: package.vcs,
178
171
  package_name: package.name,
@@ -185,6 +178,11 @@ module Autoproj::Jenkins
185
178
  autoproj_install_path: autoproj_install_path,
186
179
  vcs_credentials: vcs_credentials)
187
180
 
181
+ server.create_or_reset_job(
182
+ job_name, 'package.xml',
183
+ pipeline: pipeline,
184
+ quiet_period: quiet_period)
185
+
188
186
  job_name
189
187
  end
190
188
  end
@@ -1,5 +1,5 @@
1
1
  module Autoproj
2
2
  module Jenkins
3
- VERSION = "0.3.3"
3
+ VERSION = "0.3.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoproj-jenkins
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvain Joyeux
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-15 00:00:00.000000000 Z
11
+ date: 2016-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jenkins_api_client