autoproj-jenkins 0.2.2 → 0.3.0
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 +4 -4
- data/lib/autoproj/jenkins/templates/bootstrap.pipeline.erb +0 -2
- data/lib/autoproj/jenkins/templates/buildconf-config.yml.erb +1 -0
- data/lib/autoproj/jenkins/templates/buildconf.pipeline.erb +41 -33
- data/lib/autoproj/jenkins/templates/{wait-upstream.pipeline.erb → library.pipeline.erb} +56 -11
- data/lib/autoproj/jenkins/templates/package.pipeline.erb +85 -66
- data/lib/autoproj/jenkins/updater.rb +2 -2
- data/lib/autoproj/jenkins/version.rb +1 -1
- metadata +3 -5
- data/lib/autoproj/jenkins/templates/abort-if-upstream-failed.pipeline.erb +0 -18
- data/lib/autoproj/jenkins/templates/handle-downstream.pipeline.erb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a99e744847ba8cfabd0e714c65dc7d6a6687eac4
|
4
|
+
data.tar.gz: 877ed75c92c1df0124a75cb5035b740a681672a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7935345cd7e706ef5e57024994284263ac89243b89831df79e3dbb4c9bcaecf62bc641695e81e868a49b80170cef2b4e6dc2f08c8a96e7216b60aa9175bd53f5
|
7
|
+
data.tar.gz: 4a93f5d6394cd1ce958fec195a408adb7e9ffe72fd4d3c268028be8a41be53f61ff209c8f6f329c7a428e2bd4be507d45bd4db86965c7ad38c14761949580286
|
@@ -1,4 +1,3 @@
|
|
1
|
-
def fullWorkspaceDir = pwd()
|
2
1
|
env.HOME = fullWorkspaceDir
|
3
2
|
<% if autoproj_install_path %>
|
4
3
|
sh 'cp -f "<%= autoproj_install_path %>" ./autoproj_install'
|
@@ -23,5 +22,4 @@ dir('dev') {
|
|
23
22
|
sh ".autoproj/bin/aup autoproj/ --force-reset"
|
24
23
|
}
|
25
24
|
|
26
|
-
def autoproj = "${fullWorkspaceDir}/dev/.autoproj/bin/autoproj"
|
27
25
|
env.AUTOPROJ_CURRENT_ROOT = "${fullWorkspaceDir}/dev"
|
@@ -1,43 +1,51 @@
|
|
1
|
+
<%= render_template('library.pipeline') %>
|
2
|
+
|
1
3
|
node(label: 'autoproj-jenkins') {
|
2
|
-
|
3
|
-
|
4
|
+
def fullWorkspaceDir = pwd()
|
5
|
+
def autoproj = "${fullWorkspaceDir}/dev/.autoproj/bin/autoproj"
|
6
|
+
|
7
|
+
stage('bootstrap') {
|
8
|
+
<%= render_template('bootstrap.pipeline', vcs: vcs, gemfile: gemfile, autoproj_install_path: autoproj_install_path, vcs_credentials: vcs_credentials, indent: 4) %>
|
9
|
+
}
|
4
10
|
|
5
11
|
dir('dev') {
|
6
12
|
def arg_packages = "<%= package_names.map { |name| "'#{name}'" }.join(" ") %>"
|
7
13
|
|
8
|
-
stage
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
stage 'update package jobs and trigger them'
|
14
|
-
def arg_dev = "<%= " --dev" if dev %>"
|
15
|
-
def arg_job_prefix = "<%= " '--job-prefix=#{job_prefix}'" if !job_prefix.empty? %>"
|
16
|
-
<% if vcs_credentials.empty? %>
|
17
|
-
def arg_vcs_credentials = ""
|
18
|
-
<% else %>
|
19
|
-
<% arg_vcs_credentials = vcs_credentials.credentials.flat_map do |vcs_type, vcs_c|
|
20
|
-
vcs_c.map do |c|
|
21
|
-
"#{vcs_type}:#{c.protocol}://#{c.host}"
|
22
|
-
end
|
23
|
-
end.join(" ") %>
|
24
|
-
def arg_vcs_credentials = " '--vcs-credentials=<%= arg_vcs_credentials %>'"
|
25
|
-
<% end %>
|
26
|
-
|
27
|
-
<% if credentials_id %>
|
28
|
-
def jobNames = withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: '<%= credentials_id %>',
|
29
|
-
usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
|
30
|
-
def credentials = " --username '${env.USERNAME}' --password '${env.PASSWORD}'"
|
31
|
-
sh(script: "${autoproj} jenkins update${arg_dev}${arg_job_prefix} '${env.JENKINS_URL}' ${arg_packages}${credentials}${arg_vcs_credentials}", returnStdout: true).split("\n")
|
14
|
+
stage('checkout and update packages') {
|
15
|
+
sh "${autoproj} test enable"
|
16
|
+
<%= render_template('setup-git-credentials.pipeline', credentials: vcs_credentials[:git], indent: 8) %>
|
17
|
+
sh "${autoproj} update ${arg_packages} --force-reset -k"
|
32
18
|
}
|
33
|
-
|
34
|
-
def jobNames =
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
19
|
+
|
20
|
+
def jobNames = []
|
21
|
+
|
22
|
+
stage('update package jobs and trigger them') {
|
23
|
+
def arg_dev = "<%= " --dev" if dev %>"
|
24
|
+
def arg_job_prefix = "<%= " '--job-prefix=#{job_prefix}'" if !job_prefix.empty? %>"
|
25
|
+
<% if vcs_credentials.empty? %>
|
26
|
+
def arg_vcs_credentials = ""
|
27
|
+
<% else %>
|
28
|
+
<% arg_vcs_credentials = vcs_credentials.credentials.flat_map do |vcs_type, vcs_c|
|
29
|
+
vcs_c.map do |c|
|
30
|
+
"#{vcs_type}:#{c.protocol}://#{c.host}"
|
31
|
+
end
|
32
|
+
end.join(" ") %>
|
33
|
+
def arg_vcs_credentials = " '--vcs-credentials=<%= arg_vcs_credentials %>'"
|
34
|
+
<% end %>
|
35
|
+
|
36
|
+
<% if credentials_id %>
|
37
|
+
jobNames = withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: '<%= credentials_id %>',
|
38
|
+
usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
|
39
|
+
def credentials = " --username '${env.USERNAME}' --password '${env.PASSWORD}'"
|
40
|
+
sh(script: "${autoproj} jenkins update${arg_dev}${arg_job_prefix} '${env.JENKINS_URL}' ${arg_packages}${credentials}${arg_vcs_credentials}", returnStdout: true).split("\n")
|
41
|
+
}
|
42
|
+
<% else %>
|
43
|
+
jobNames = sh(
|
44
|
+
script: "${autoproj} jenkins update${arg_dev}${arg_job_prefix} 'http://localhost:8080' ${arg_packages}${arg_vcs_credentials}",
|
45
|
+
returnStdout: true).split("\n")
|
46
|
+
<% end %>
|
40
47
|
}
|
48
|
+
triggerDownstreamJobs(jobNames)
|
41
49
|
}
|
42
50
|
}
|
43
51
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
@NonCPS
|
1
2
|
def isUpstreamOK(jobName, buildId)
|
2
3
|
{
|
3
4
|
def job = Jenkins.instance.getItem(jobName)
|
@@ -26,19 +27,23 @@ def isUpstreamOK(jobName, buildId)
|
|
26
27
|
}
|
27
28
|
}
|
28
29
|
|
30
|
+
@NonCPS
|
29
31
|
def getTriggerBuild(currentBuild)
|
30
32
|
{
|
31
33
|
def triggerBuild = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause)
|
32
34
|
if (triggerBuild) {
|
33
35
|
return [triggerBuild.getUpstreamProject(), triggerBuild.getUpstreamBuild()]
|
34
36
|
}
|
37
|
+
return null
|
35
38
|
}
|
36
39
|
|
40
|
+
@NonCPS
|
37
41
|
def findBuildTriggeredBy(job, triggerJob, triggerBuild)
|
38
42
|
{
|
39
43
|
def jobBuilds = job.getBuilds()
|
40
|
-
for (
|
44
|
+
for (buildIndex = 0; buildIndex < jobBuilds.size(); ++buildIndex)
|
41
45
|
{
|
46
|
+
def build = jobBuilds[buildIndex]
|
42
47
|
def buildCause = build.getCause(hudson.model.Cause$UpstreamCause)
|
43
48
|
if (buildCause)
|
44
49
|
{
|
@@ -50,6 +55,7 @@ def findBuildTriggeredBy(job, triggerJob, triggerBuild)
|
|
50
55
|
}
|
51
56
|
}
|
52
57
|
}
|
58
|
+
return null
|
53
59
|
}
|
54
60
|
|
55
61
|
def getUpstreamBuilds(upstreamJobNames, triggerJob, triggerBuild)
|
@@ -57,8 +63,9 @@ def getUpstreamBuilds(upstreamJobNames, triggerJob, triggerBuild)
|
|
57
63
|
def upstreamBuilds = []
|
58
64
|
|
59
65
|
// Iterate list -- NOTE: we cannot use groovy style or even modern java style iteration
|
60
|
-
for (
|
66
|
+
for (jobIndex = 0; jobIndex < upstreamJobNames.size(); ++jobIndex)
|
61
67
|
{
|
68
|
+
def jobName = upstreamJobNames[jobIndex]
|
62
69
|
if (jobName == triggerJob)
|
63
70
|
{
|
64
71
|
echo "upstream build: ${jobName}#${triggerBuild}"
|
@@ -93,7 +100,9 @@ def waitForUpstreamBuilds(upstreamBuilds)
|
|
93
100
|
waitContinue = false;
|
94
101
|
|
95
102
|
// Iterate list -- NOTE: we cannot use groovy style or even modern java style iteration
|
96
|
-
for(
|
103
|
+
for (upstreamBuildIndex = 0; upstreamBuildIndex < upstreamBuilds.size(); ++upstreamBuildIndex)
|
104
|
+
{
|
105
|
+
def entry = upstreamBuilds[upstreamBuildIndex]
|
97
106
|
def upstreamJobName = entry[0]
|
98
107
|
def upstreamBuildId = entry[1]
|
99
108
|
def status = isUpstreamOK(upstreamJobName, upstreamBuildId)
|
@@ -122,7 +131,8 @@ def makeUpstreamArtifactImporters(autoproj, fullWorkspaceDir, upstreamDir,
|
|
122
131
|
dir(upstreamDir) { deleteDir() }
|
123
132
|
|
124
133
|
def upstreamArtifactImporters = [:]
|
125
|
-
for (jobIndex = 0; jobIndex < upstreamJobNames.size(); ++jobIndex)
|
134
|
+
for (jobIndex = 0; jobIndex < upstreamJobNames.size(); ++jobIndex)
|
135
|
+
{
|
126
136
|
def jobName = upstreamJobNames[jobIndex]
|
127
137
|
def fullPrefix = upstreamPrefixes[jobIndex]
|
128
138
|
def buildId = upstreamBuilds[jobIndex][1]
|
@@ -147,14 +157,49 @@ def makeUpstreamArtifactImporters(autoproj, fullWorkspaceDir, upstreamDir,
|
|
147
157
|
return upstreamArtifactImporters
|
148
158
|
}
|
149
159
|
|
150
|
-
def
|
151
|
-
|
152
|
-
|
153
|
-
|
160
|
+
def installUpstreamArtifacts(autoproj, fullWorkspaceDir,
|
161
|
+
jobPackageName, jobPackagePrefix,
|
162
|
+
upstreamJobNames, upstreamPackagePrefixes, upstreamBuilds)
|
163
|
+
{
|
164
|
+
def upstreamDir = "artifacts/upstream"
|
165
|
+
parallel(makeUpstreamArtifactImporters(
|
166
|
+
autoproj, fullWorkspaceDir, upstreamDir,
|
167
|
+
upstreamJobNames, upstreamPackagePrefixes, upstreamBuilds)
|
168
|
+
)
|
169
|
+
// We don't need the upstream artifacts anymore, clear some disk space
|
170
|
+
dir(upstreamDir) { deleteDir() }
|
171
|
+
|
172
|
+
if (fileExists("lastPrefix")) {
|
173
|
+
sh "mv lastPrefix '${jobPackagePrefix}'"
|
174
|
+
}
|
175
|
+
return null
|
154
176
|
}
|
155
|
-
def upstreamBuilds = getUpstreamBuilds(upstreamJobNames, triggerBuild[0], triggerBuild[1])
|
156
177
|
|
157
|
-
|
158
|
-
|
178
|
+
def handleDownstream(autoproj, fullWorkspaceDir,
|
179
|
+
jobName, jobPackagePrefix, artifactGlob)
|
180
|
+
{
|
181
|
+
def downstreamDir = "artifacts/downstream"
|
182
|
+
def targetArtifactPath = "${fullWorkspaceDir}/${downstreamDir}/${jobName}-prefix.zip"
|
183
|
+
|
184
|
+
dir(downstreamDir) { deleteDir() }
|
185
|
+
dir("${downstreamDir}/${jobName}") {
|
186
|
+
sh "rsync '${jobPackagePrefix}/' './' -a --delete"
|
187
|
+
sh "${autoproj} jenkins relativize ./ '${fullWorkspaceDir}' '@WORKSPACE_ROOT@'"
|
188
|
+
zip zipFile: targetArtifactPath, glob: artifactGlob
|
189
|
+
}
|
190
|
+
dir(downstreamDir) {
|
191
|
+
archiveArtifacts artifacts: "*.zip"
|
192
|
+
deleteDir()
|
193
|
+
}
|
194
|
+
return null
|
195
|
+
}
|
196
|
+
|
197
|
+
|
198
|
+
def triggerDownstreamJobs(jobNames) {
|
199
|
+
for (jobIndex = 0; jobIndex < jobNames.size(); ++jobIndex)
|
200
|
+
{
|
201
|
+
build job: jobNames[jobIndex], wait: false
|
202
|
+
}
|
203
|
+
return null
|
159
204
|
}
|
160
205
|
|
@@ -1,96 +1,115 @@
|
|
1
1
|
import java.nio.file.Paths
|
2
2
|
|
3
|
+
def jobName = "<%= job_name %>"
|
3
4
|
def jobPackageName = "<%= package_name %>"
|
4
5
|
def upstreamJobNames = [<%= upstream_jobs.each_key.map { |job_name| "'#{job_name}'" }.join(", ") %>]
|
5
6
|
def upstreamPackageNames = [<%= upstream_jobs.each_value.map { |package_name| "'#{package_name}'" }.join(", ") %>]
|
7
|
+
<%= render_template('library.pipeline') %>
|
8
|
+
def triggeredByUpstream = false
|
9
|
+
def upstreamBuilds = []
|
10
|
+
|
11
|
+
stage('waiting for upstream jobs to finish') {
|
12
|
+
triggeredByUpstream = (currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause) != null)
|
13
|
+
def triggerBuild = getTriggerBuild(currentBuild)
|
14
|
+
if (!triggerBuild) {
|
15
|
+
triggerBuild = [null, null]
|
16
|
+
}
|
17
|
+
upstreamBuilds = getUpstreamBuilds(upstreamJobNames, triggerBuild[0], triggerBuild[1])
|
6
18
|
|
7
|
-
|
8
|
-
|
19
|
+
if (!waitForUpstreamBuilds(upstreamBuilds)) {
|
20
|
+
return
|
21
|
+
}
|
22
|
+
}
|
9
23
|
|
10
24
|
node(label: 'autoproj-jenkins') {
|
25
|
+
def fullWorkspaceDir = pwd()
|
26
|
+
def autoproj = "${fullWorkspaceDir}/dev/.autoproj/bin/autoproj"
|
11
27
|
dir('dev/install/log') { deleteDir() }
|
12
28
|
|
13
|
-
|
14
|
-
|
15
|
-
stage 'install upstream artifacts'
|
29
|
+
def jobPackagePrefix = null
|
30
|
+
def upstreamPackagePrefixes = null
|
16
31
|
|
17
|
-
|
18
|
-
|
19
|
-
split("\n")
|
32
|
+
stage('bootstrap') {
|
33
|
+
<%= render_template('bootstrap.pipeline', vcs: buildconf_vcs, gemfile: gemfile, autoproj_install_path: autoproj_install_path, vcs_credentials: vcs_credentials, indent: 4) %>
|
20
34
|
|
21
|
-
|
22
|
-
|
35
|
+
def jenkins_dependency_overrides = "<%= render_template 'jenkins_dependency_overrides.rb', escape: true, package_name: package_name, upstream_jobs: upstream_jobs %>"
|
36
|
+
writeFile file: 'dev/autoproj/overrides.d/99_jenkins_dependency_overrides.rb',
|
37
|
+
text: jenkins_dependency_overrides
|
23
38
|
|
24
|
-
|
25
|
-
|
26
|
-
upstreamJobNames, upstreamPackagePrefixes, upstreamBuilds)
|
27
|
-
)
|
28
|
-
// We don't need the upstream artifacts anymore, clear some disk space
|
29
|
-
dir(upstreamDir) { deleteDir() }
|
39
|
+
def packagePrefixes = sh(script: "${autoproj} locate --no-cache --prefix '${jobPackageName}' ${upstreamPackageNames.join(" ")}", returnStdout: true).
|
40
|
+
split("\n")
|
30
41
|
|
31
|
-
|
32
|
-
|
42
|
+
jobPackagePrefix = packagePrefixes[0]
|
43
|
+
upstreamPackagePrefixes = packagePrefixes.tail()
|
33
44
|
}
|
34
45
|
|
35
|
-
|
36
|
-
|
37
|
-
|
46
|
+
stage('install upstream artifacts') {
|
47
|
+
installUpstreamArtifacts(autoproj, fullWorkspaceDir,
|
48
|
+
jobPackageName, jobPackagePrefix,
|
49
|
+
upstreamJobNames, upstreamPackagePrefixes, upstreamBuilds)
|
50
|
+
}
|
38
51
|
|
39
52
|
dir('dev') {
|
40
|
-
stage
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
stage 'build'
|
53
|
-
try {
|
54
|
-
sh "${autoproj} build --force --deps=f '<%= package_name %>' -p1"
|
53
|
+
stage('prepare build') {
|
54
|
+
<%= render_template("import-#{vcs.type}.pipeline",
|
55
|
+
patch: true,
|
56
|
+
allow_unused: true,
|
57
|
+
package_dir: package_dir,
|
58
|
+
vcs: vcs,
|
59
|
+
credentials: vcs_credentials.for(vcs),
|
60
|
+
package_name: package_name,
|
61
|
+
indent: 8) %>
|
62
|
+
sh "${autoproj} test disable '<%= package_name %>'"
|
63
|
+
sh "${autoproj} osdeps '<%= package_name %>' 'pkg-config'"
|
55
64
|
}
|
56
|
-
|
65
|
+
|
66
|
+
stage('build') {
|
67
|
+
try {
|
68
|
+
sh "${autoproj} build --force --deps=f '<%= package_name %>' -p1"
|
69
|
+
}
|
70
|
+
catch(err) {
|
71
|
+
archive includes: 'install/<%= package_name %>/log/<%= package_name %>-*.log'
|
72
|
+
throw(err)
|
73
|
+
}
|
57
74
|
archive includes: 'install/<%= package_name %>/log/<%= package_name %>-*.log'
|
58
|
-
throw(err)
|
59
75
|
}
|
60
|
-
archive includes: 'install/<%= package_name %>/log/<%= package_name %>-*.log'
|
61
76
|
}
|
62
77
|
|
63
|
-
stage '
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
stage 'tests'
|
71
|
-
def test_timestamp_path = "${fullWorkspaceDir}/test-timestamp"
|
72
|
-
touch file: test_timestamp_path
|
73
|
-
def test_output_path = "${fullWorkspaceDir}/test"
|
74
|
-
def autoproj_test_failed = false
|
75
|
-
dir('dev')
|
76
|
-
{
|
77
|
-
try {
|
78
|
-
sh "${autoproj} test enable '<%= package_name %>'"
|
79
|
-
sh "${autoproj} osdeps '<%= package_name %>'"
|
80
|
-
sh "${autoproj} build --deps=f '<%= package_name %>' -p1"
|
81
|
-
sh "${autoproj} test -p=1 '<%= package_name %>'"
|
78
|
+
stage('handle downstream') {
|
79
|
+
handleDownstream(autoproj, fullWorkspaceDir,
|
80
|
+
jobName, jobPackagePrefix, "<%= artifact_glob %>")
|
81
|
+
if (! triggeredByUpstream) {
|
82
|
+
<% downstream_jobs.each_key do |job_name| %>
|
83
|
+
build job: "<%= job_name %>", wait: false
|
84
|
+
<% end %>
|
82
85
|
}
|
83
|
-
|
86
|
+
}
|
84
87
|
|
85
|
-
|
88
|
+
stage('tests') {
|
89
|
+
def test_timestamp_path = "${fullWorkspaceDir}/test-timestamp"
|
90
|
+
touch file: test_timestamp_path
|
91
|
+
def test_output_path = "${fullWorkspaceDir}/test"
|
92
|
+
def autoproj_test_failed = false
|
93
|
+
dir('dev')
|
94
|
+
{
|
95
|
+
try {
|
96
|
+
sh "${autoproj} test enable '<%= package_name %>'"
|
97
|
+
sh "${autoproj} osdeps '<%= package_name %>'"
|
98
|
+
sh "${autoproj} build --deps=f '<%= package_name %>' -p1"
|
99
|
+
sh "${autoproj} test -p=1 '<%= package_name %>'"
|
100
|
+
}
|
101
|
+
catch(err) { autoproj_test_failed = true }
|
102
|
+
|
103
|
+
try { sh "${autoproj} jenkins postprocess-tests --after=${test_timestamp_path} ${test_output_path} '<%= package_name %>'" }
|
104
|
+
catch(err) { autoproj_test_failed = true }
|
105
|
+
}
|
106
|
+
try { junit allowEmptyResults: true, keepLongStdio: true, testResults: "test/*.xml" }
|
86
107
|
catch(err) { autoproj_test_failed = true }
|
87
|
-
}
|
88
|
-
try { junit allowEmptyResults: true, keepLongStdio: true, testResults: "test/*.xml" }
|
89
|
-
catch(err) { autoproj_test_failed = true }
|
90
108
|
|
91
|
-
|
92
|
-
|
93
|
-
|
109
|
+
if (autoproj_test_failed)
|
110
|
+
{
|
111
|
+
currentBuild.result = 'UNSTABLE'
|
112
|
+
}
|
94
113
|
}
|
95
114
|
|
96
115
|
// Move the current package prefix to a separate folder, to ensure that
|
@@ -50,7 +50,7 @@ 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(*
|
53
|
+
def update_buildconf_pipeline(*packages, 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"
|
@@ -59,7 +59,7 @@ module Autoproj::Jenkins
|
|
59
59
|
job_name = job_name_from_package_name("buildconf")
|
60
60
|
server.update_job_pipeline(job_name, 'buildconf.pipeline',
|
61
61
|
vcs: manifest_vcs,
|
62
|
-
package_names:
|
62
|
+
package_names: packages.map(&:name),
|
63
63
|
gemfile: gemfile,
|
64
64
|
autoproj_install_path: autoproj_install_path,
|
65
65
|
job_prefix: job_prefix,
|
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.
|
4
|
+
version: 0.3.0
|
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
|
+
date: 2016-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jenkins_api_client
|
@@ -131,23 +131,21 @@ files:
|
|
131
131
|
- lib/autoproj/jenkins/relativize.rb
|
132
132
|
- lib/autoproj/jenkins/render_template.rb
|
133
133
|
- lib/autoproj/jenkins/server.rb
|
134
|
-
- lib/autoproj/jenkins/templates/abort-if-upstream-failed.pipeline.erb
|
135
134
|
- lib/autoproj/jenkins/templates/bootstrap.pipeline.erb
|
136
135
|
- lib/autoproj/jenkins/templates/buildconf-Gemfile
|
137
136
|
- lib/autoproj/jenkins/templates/buildconf-config.yml.erb
|
138
137
|
- lib/autoproj/jenkins/templates/buildconf-vagrant-Gemfile
|
139
138
|
- lib/autoproj/jenkins/templates/buildconf.pipeline.erb
|
140
139
|
- lib/autoproj/jenkins/templates/buildconf.xml.erb
|
141
|
-
- lib/autoproj/jenkins/templates/handle-downstream.pipeline.erb
|
142
140
|
- lib/autoproj/jenkins/templates/import-archive.pipeline.erb
|
143
141
|
- lib/autoproj/jenkins/templates/import-git.pipeline.erb
|
144
142
|
- lib/autoproj/jenkins/templates/import-svn.pipeline.erb
|
145
143
|
- lib/autoproj/jenkins/templates/jenkins_dependency_overrides.rb.erb
|
144
|
+
- lib/autoproj/jenkins/templates/library.pipeline.erb
|
146
145
|
- lib/autoproj/jenkins/templates/package-Gemfile
|
147
146
|
- lib/autoproj/jenkins/templates/package.pipeline.erb
|
148
147
|
- lib/autoproj/jenkins/templates/package.xml.erb
|
149
148
|
- lib/autoproj/jenkins/templates/setup-git-credentials.pipeline.erb
|
150
|
-
- lib/autoproj/jenkins/templates/wait-upstream.pipeline.erb
|
151
149
|
- lib/autoproj/jenkins/test_format_converters/boost-test.xsl
|
152
150
|
- lib/autoproj/jenkins/updater.rb
|
153
151
|
- lib/autoproj/jenkins/version.rb
|
@@ -1,18 +0,0 @@
|
|
1
|
-
def upstream_jobs = [<%= upstream_jobs.each_key.map { |job_name| "'#{job_name}'" }.join(", ") %>]
|
2
|
-
|
3
|
-
// Iterate list -- NOTE: we cannot use groovy style or even modern java style iteration
|
4
|
-
for (int i = 0; i < upstream_jobs.size(); i++) {
|
5
|
-
def job = Jenkins.instance.getItem(upstream_jobs[i])
|
6
|
-
if (!job) {
|
7
|
-
error("cannot find upstream job ${upstream_jobs[i]}")
|
8
|
-
}
|
9
|
-
|
10
|
-
def result = job.getLastBuild().getResult()
|
11
|
-
if (result != Result.SUCCESS && result != Result.UNSTABLE)
|
12
|
-
{
|
13
|
-
echo "${upstream_jobs[i]} did not finish successfully, aborting this build"
|
14
|
-
currentBuild.result = 'NOT_BUILT';
|
15
|
-
return;
|
16
|
-
}
|
17
|
-
}
|
18
|
-
|
@@ -1,20 +0,0 @@
|
|
1
|
-
def downstreamDir = "artifacts/downstream"
|
2
|
-
def targetArtifactPath = "${fullWorkspaceDir}/${downstreamDir}/<%= job_name %>-prefix.zip"
|
3
|
-
|
4
|
-
dir(downstreamDir) { deleteDir() }
|
5
|
-
dir("${downstreamDir}/<%= job_name %>") {
|
6
|
-
sh "rsync '${jobPackagePrefix}/' './' -a --delete"
|
7
|
-
sh "${autoproj} jenkins relativize ./ '${fullWorkspaceDir}' '@WORKSPACE_ROOT@'"
|
8
|
-
zip zipFile: targetArtifactPath, glob: "<%= artifact_glob %>"
|
9
|
-
}
|
10
|
-
dir(downstreamDir) {
|
11
|
-
archiveArtifacts artifacts: "*.zip"
|
12
|
-
deleteDir()
|
13
|
-
}
|
14
|
-
|
15
|
-
if (triggeredByUser) { // Defined in handle-upstream.pipeline.erb
|
16
|
-
<% downstream_jobs.each_key do |job_name| %>
|
17
|
-
build job: "<%= job_name %>", wait: false
|
18
|
-
<% end %>
|
19
|
-
}
|
20
|
-
|