Jenkins Jobs bug fixes

* Add auth_build internal option and set to true for gates (fixes bug #989148)
* Add upload_project option to tarball job and set to project by default (fixes bug #989855)
* Add support for ensure => disabled and ensure => absent (fixes bug #988319)

Change-Id: Id61deb4b50df70f38c18e7e9d2e8d6510805e11c
This commit is contained in:
Andrew Hutchings 2012-05-02 14:22:25 +01:00
parent 6764679829
commit e5b3600b5c
15 changed files with 105 additions and 60 deletions

View File

@ -75,7 +75,8 @@ node "jenkins.stackforge.org" {
jenkins_jobs::python_jobs { "reddwarf-natty": jenkins_jobs::python_jobs { "reddwarf-natty":
site => "stackforge", site => "stackforge",
project => "reddwarf", project => "reddwarf",
node_group => "natty" node_group => "natty",
ensure => "disabled"
} }
jenkins_jobs::generic_jobs { "reddwarf": jenkins_jobs::generic_jobs { "reddwarf":

View File

@ -1,36 +1,50 @@
define jenkins_jobs::build_job($site, $project, $job, $node_group, $triggers="", $builders, $publishers="", $logrotate="", $scm="", $trigger_branches="") { define jenkins_jobs::build_job($site, $project, $job, $node_group, $triggers="", $builders, $publishers="", $logrotate="", $scm="", $trigger_branches="", $auth_build=false, $upload_project="", $ensure="present") {
file { "/var/lib/jenkins/jobs/${name}": if $ensure == "absent" {
ensure => directory, file { "/var/lib/jenkins/jobs/${name}":
owner => 'jenkins', ensure => purged,
owner => 'jenkins',
recurse => true,
notify => Exec['jenkins']
}
} else {
if $ensure == "disabled" {
$disabled = true
} else {
$disabled = false
}
file { "/var/lib/jenkins/jobs/${name}":
ensure => directory,
owner => 'jenkins',
}
file { "/var/lib/jenkins/jobs/${name}/builds":
ensure => directory,
owner => 'jenkins',
require => File["/var/lib/jenkins/jobs/${name}"]
}
file { "/var/lib/jenkins/jobs/${name}/config-history":
ensure => directory,
owner => 'jenkins',
require => File["/var/lib/jenkins/jobs/${name}"]
}
file { "/var/lib/jenkins/jobs/${name}/config.xml":
ensure => present,
content => template("jenkins_jobs/body.xml.erb"),
owner => 'jenkins',
require => File["/var/lib/jenkins/jobs/${name}"],
notify => Exec["jenkins"]
}
file { "/var/lib/jenkins/jobs/${name}/nextBuildNumber":
ensure => present,
content => "1",
owner => 'jenkins',
replace => false,
require => File["/var/lib/jenkins/jobs/${name}"]
}
} }
file { "/var/lib/jenkins/jobs/${name}/builds":
ensure => directory,
owner => 'jenkins',
require => File["/var/lib/jenkins/jobs/${name}"]
}
file { "/var/lib/jenkins/jobs/${name}/config-history":
ensure => directory,
owner => 'jenkins',
require => File["/var/lib/jenkins/jobs/${name}"]
}
file { "/var/lib/jenkins/jobs/${name}/config.xml":
ensure => present,
content => template("jenkins_jobs/body.xml.erb"),
owner => 'jenkins',
require => File["/var/lib/jenkins/jobs/${name}"],
notify => Exec["jenkins"]
}
file { "/var/lib/jenkins/jobs/${name}/nextBuildNumber":
ensure => present,
content => "1",
owner => 'jenkins',
replace => false,
require => File["/var/lib/jenkins/jobs/${name}"]
}
} }

View File

@ -1,28 +1,33 @@
define jenkins_jobs::generic_jobs($site, $project, $node_group) { define jenkins_jobs::generic_jobs($site, $project, $node_group, $ensure="present") {
jenkins_jobs::jobs::docs { $name: jenkins_jobs::jobs::docs { $name:
site => $site, site => $site,
project => $project, project => $project,
node_group => $node_group node_group => $node_group,
ensure => $ensure
} }
jenkins_jobs::jobs::merge_gate { $name: jenkins_jobs::jobs::merge_gate { $name:
site => $site, site => $site,
project => $project, project => $project,
node_group => $node_group, node_group => $node_group,
trigger_branches => [[$project, '**']] trigger_branches => [[$project, '**']],
ensure => $ensure
} }
jenkins_jobs::jobs::ppa { $name: jenkins_jobs::jobs::ppa { $name:
site => $site, site => $site,
project => $project, project => $project,
node_group => $node_group node_group => $node_group,
ensure => $ensure
} }
jenkins_jobs::jobs::tarball { $name: jenkins_jobs::jobs::tarball { $name:
site => $site, site => $site,
project => $project, project => $project,
node_group => $node_group, node_group => $node_group,
trigger_branches => [[$project, '^(?!refs/).*$']] upload_project => $project,
trigger_branches => [[$project, '^(?!refs/).*$']],
ensure => $ensure
} }
} }

View File

@ -1,5 +1,6 @@
define jenkins_jobs::jobs::coverage($site, $project, $node_group) { define jenkins_jobs::jobs::coverage($site, $project, $node_group, $ensure="present") {
jenkins_jobs::build_job { "${name}-coverage": jenkins_jobs::build_job { "${name}-coverage":
ensure => $ensure,
site => $site, site => $site,
project => $project, project => $project,
job => "coverage", job => "coverage",

View File

@ -1,5 +1,6 @@
define jenkins_jobs::jobs::docs($site, $project, $node_group) { define jenkins_jobs::jobs::docs($site, $project, $node_group, $ensure="present") {
jenkins_jobs::build_job { "${name}-docs": jenkins_jobs::build_job { "${name}-docs":
ensure => $ensure,
site => $site, site => $site,
project => $project, project => $project,
job => "docs", job => "docs",

View File

@ -1,11 +1,13 @@
define jenkins_jobs::jobs::merge_gate($site, $project, $node_group, $trigger_branches) { define jenkins_jobs::jobs::merge_gate($site, $project, $node_group, $trigger_branches, $ensure="present") {
jenkins_jobs::build_job { "gate-${name}-merge": jenkins_jobs::build_job { "gate-${name}-merge":
ensure => $ensure,
site => $site, site => $site,
project => $project, project => $project,
job => "merge", job => "merge",
node_group => $node_group, node_group => $node_group,
triggers => trigger("gerrit_comment"), triggers => trigger("gerrit_comment"),
builders => builder("gerrit_git_prep"), builders => builder("gerrit_git_prep"),
trigger_branches => $trigger_branches trigger_branches => $trigger_branches,
auth_build => true
} }
} }

View File

@ -1,5 +1,6 @@
define jenkins_jobs::jobs::pep8_gate($site, $project, $node_group, $trigger_branches) { define jenkins_jobs::jobs::pep8_gate($site, $project, $node_group, $trigger_branches, $ensure="present") {
jenkins_jobs::build_job { "gate-${name}-pep8": jenkins_jobs::build_job { "gate-${name}-pep8":
ensure => $ensure,
site => $site, site => $site,
project => $project, project => $project,
job => "pep8", job => "pep8",
@ -7,6 +8,7 @@ define jenkins_jobs::jobs::pep8_gate($site, $project, $node_group, $trigger_bran
triggers => trigger("gerrit_comment"), triggers => trigger("gerrit_comment"),
builders => [builder("gerrit_git_prep"), builder("copy_bundle"), builder("pep8")], builders => [builder("gerrit_git_prep"), builder("copy_bundle"), builder("pep8")],
publishers => publisher("pep8"), publishers => publisher("pep8"),
trigger_branches => $trigger_branches trigger_branches => $trigger_branches,
auth_build => true
} }
} }

View File

@ -1,5 +1,6 @@
define jenkins_jobs::jobs::ppa($site, $project, $node_group) { define jenkins_jobs::jobs::ppa($site, $project, $node_group, $ensure="present") {
jenkins_jobs::build_job { "${name}-ppa": jenkins_jobs::build_job { "${name}-ppa":
ensure => $ensure,
site => $site, site => $site,
project => $project, project => $project,
job => "ppa", job => "ppa",

View File

@ -1,11 +1,13 @@
define jenkins_jobs::jobs::python26_gate($site, $project, $node_group, $trigger_branches) { define jenkins_jobs::jobs::python26_gate($site, $project, $node_group, $trigger_branches, $ensure="present") {
jenkins_jobs::build_job { "gate-${name}-python26": jenkins_jobs::build_job { "gate-${name}-python26":
ensure => $ensure,
site => $site, site => $site,
project => $project, project => $project,
job => "python26", job => "python26",
node_group => $node_group, node_group => $node_group,
triggers => trigger("gerrit_comment"), triggers => trigger("gerrit_comment"),
builders => [builder("gerrit_git_prep"), builder("copy_bundle"), builder("python26")], builders => [builder("gerrit_git_prep"), builder("copy_bundle"), builder("python26")],
trigger_branches => $trigger_branches trigger_branches => $trigger_branches,
auth_build => true
} }
} }

View File

@ -1,11 +1,13 @@
define jenkins_jobs::jobs::python27_gate($site, $project, $node_group, $trigger_branches) { define jenkins_jobs::jobs::python27_gate($site, $project, $node_group, $trigger_branches, $ensure="present") {
jenkins_jobs::build_job { "gate-${name}-python27": jenkins_jobs::build_job { "gate-${name}-python27":
ensure => $ensure,
site => $site, site => $site,
project => $project, project => $project,
job => "python27", job => "python27",
node_group => $node_group, node_group => $node_group,
triggers => trigger("gerrit_comment"), triggers => trigger("gerrit_comment"),
builders => [builder("gerrit_git_prep"), builder("copy_bundle"), builder("python27")], builders => [builder("gerrit_git_prep"), builder("copy_bundle"), builder("python27")],
trigger_branches => $trigger_branches trigger_branches => $trigger_branches,
auth_build => true
} }
} }

View File

@ -1,8 +1,10 @@
define jenkins_jobs::jobs::tarball($site, $project, $node_group, $trigger_branches) { define jenkins_jobs::jobs::tarball($site, $project, $node_group, $trigger_branches, $upload_project, $ensure="present") {
jenkins_jobs::build_job { "${name}-tarball": jenkins_jobs::build_job { "${name}-tarball":
ensure => $ensure,
site => $site, site => $site,
project => $project, project => $project,
job => "tarball", job => "tarball",
upload_project => $upload_project,
node_group => $node_group, node_group => $node_group,
triggers => trigger("gerrit_ref_updated"), triggers => trigger("gerrit_ref_updated"),
builders => [builder("gerrit_git_prep"), builder("copy_bundle"), builder("tarball")], builders => [builder("gerrit_git_prep"), builder("copy_bundle"), builder("tarball")],

View File

@ -1,5 +1,6 @@
define jenkins_jobs::jobs::venv($site, $project, $node_group) { define jenkins_jobs::jobs::venv($site, $project, $node_group, $ensure="present") {
jenkins_jobs::build_job { "${name}-venv": jenkins_jobs::build_job { "${name}-venv":
ensure => $ensure,
site => $site, site => $site,
project => $project, project => $project,
job => "venv", job => "venv",

View File

@ -1,30 +1,35 @@
define jenkins_jobs::python_jobs($site, $project, $node_group) { define jenkins_jobs::python_jobs($site, $project, $node_group, $ensure="present") {
jenkins_jobs::jobs::coverage { $name: jenkins_jobs::jobs::coverage { $name:
site => $site, site => $site,
project => $project, project => $project,
node_group => $node_group node_group => $node_group,
ensure => $ensure
} }
jenkins_jobs::jobs::pep8_gate { $name: jenkins_jobs::jobs::pep8_gate { $name:
site => $site, site => $site,
project => $project, project => $project,
node_group => $node_group, node_group => $node_group,
trigger_branches => [[$project, '**']] trigger_branches => [[$project, '**']],
ensure => $ensure
} }
jenkins_jobs::jobs::python26_gate { $name: jenkins_jobs::jobs::python26_gate { $name:
site => $site, site => $site,
project => $project, project => $project,
node_group => $node_group, node_group => $node_group,
trigger_branches => [[$project, '**']] trigger_branches => [[$project, '**']],
ensure => $ensure
} }
jenkins_jobs::jobs::python27_gate { $name: jenkins_jobs::jobs::python27_gate { $name:
site => $site, site => $site,
project => $project, project => $project,
node_group => $node_group, node_group => $node_group,
trigger_branches => [[$project, '**']] trigger_branches => [[$project, '**']],
ensure => $ensure
} }
jenkins_jobs::jobs::venv { $name: jenkins_jobs::jobs::venv { $name:
site => $site, site => $site,
project => $project, project => $project,
node_group => $node_group node_group => $node_group,
ensure => $ensure
} }
} }

View File

@ -36,9 +36,11 @@ In modules/jenkins_jobs
<keepBuildVariables>true</keepBuildVariables> <keepBuildVariables>true</keepBuildVariables>
<contributors/> <contributors/>
</EnvInjectJobProperty> </EnvInjectJobProperty>
<% if auth_build == true %>
<hudson.security.AuthorizationMatrixProperty> <hudson.security.AuthorizationMatrixProperty>
<permission>hudson.model.Item.Build:authenticated</permission> <permission>hudson.model.Item.Build:authenticated</permission>
</hudson.security.AuthorizationMatrixProperty> </hudson.security.AuthorizationMatrixProperty>
<% end %>
</properties> </properties>
<% if scm == "" %> <% if scm == "" %>
<scm class="hudson.scm.NullSCM"/> <scm class="hudson.scm.NullSCM"/>
@ -47,7 +49,11 @@ In modules/jenkins_jobs
<% end %> <% end %>
<assignedNode><%= node_group %></assignedNode> <assignedNode><%= node_group %></assignedNode>
<canRoam>false</canRoam> <canRoam>false</canRoam>
<% if disabled == true %>
<disabled>true</disabled>
<% else %>
<disabled>false</disabled> <disabled>false</disabled>
<% end %>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding> <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding> <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers class="vector"> <triggers class="vector">

View File

@ -3,10 +3,10 @@
<latestOnly>false</latestOnly> <latestOnly>false</latestOnly>
</hudson.tasks.ArtifactArchiver> </hudson.tasks.ArtifactArchiver>
<be.certipost.hudson.plugin.SCPRepositoryPublisher> <be.certipost.hudson.plugin.SCPRepositoryPublisher>
<siteName><%= project %>.<%= site %>.org</siteName> <siteName><%= upload_project %>.<%= site %>.org</siteName>
<entries> <entries>
<be.certipost.hudson.plugin.Entry> <be.certipost.hudson.plugin.Entry>
<filePath>tarballs/<%= project %>/</filePath> <filePath>tarballs/<%= upload_project %>/</filePath>
<sourceFile>dist/*.tar.gz</sourceFile> <sourceFile>dist/*.tar.gz</sourceFile>
<keepHierarchy>false</keepHierarchy> <keepHierarchy>false</keepHierarchy>
</be.certipost.hudson.plugin.Entry> </be.certipost.hudson.plugin.Entry>