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":
site => "stackforge",
project => "reddwarf",
node_group => "natty"
node_group => "natty",
ensure => "disabled"
}
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}":
ensure => directory,
owner => 'jenkins',
if $ensure == "absent" {
file { "/var/lib/jenkins/jobs/${name}":
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:
site => $site,
project => $project,
node_group => $node_group
node_group => $node_group,
ensure => $ensure
}
jenkins_jobs::jobs::merge_gate { $name:
site => $site,
project => $project,
node_group => $node_group,
trigger_branches => [[$project, '**']]
trigger_branches => [[$project, '**']],
ensure => $ensure
}
jenkins_jobs::jobs::ppa { $name:
site => $site,
project => $project,
node_group => $node_group
node_group => $node_group,
ensure => $ensure
}
jenkins_jobs::jobs::tarball { $name:
site => $site,
project => $project,
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":
ensure => $ensure,
site => $site,
project => $project,
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":
ensure => $ensure,
site => $site,
project => $project,
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":
ensure => $ensure,
site => $site,
project => $project,
job => "merge",
node_group => $node_group,
triggers => trigger("gerrit_comment"),
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":
ensure => $ensure,
site => $site,
project => $project,
job => "pep8",
@ -7,6 +8,7 @@ define jenkins_jobs::jobs::pep8_gate($site, $project, $node_group, $trigger_bran
triggers => trigger("gerrit_comment"),
builders => [builder("gerrit_git_prep"), builder("copy_bundle"), builder("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":
ensure => $ensure,
site => $site,
project => $project,
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":
ensure => $ensure,
site => $site,
project => $project,
job => "python26",
node_group => $node_group,
triggers => trigger("gerrit_comment"),
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":
ensure => $ensure,
site => $site,
project => $project,
job => "python27",
node_group => $node_group,
triggers => trigger("gerrit_comment"),
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":
ensure => $ensure,
site => $site,
project => $project,
job => "tarball",
upload_project => $upload_project,
node_group => $node_group,
triggers => trigger("gerrit_ref_updated"),
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":
ensure => $ensure,
site => $site,
project => $project,
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:
site => $site,
project => $project,
node_group => $node_group
node_group => $node_group,
ensure => $ensure
}
jenkins_jobs::jobs::pep8_gate { $name:
site => $site,
project => $project,
node_group => $node_group,
trigger_branches => [[$project, '**']]
trigger_branches => [[$project, '**']],
ensure => $ensure
}
jenkins_jobs::jobs::python26_gate { $name:
site => $site,
project => $project,
node_group => $node_group,
trigger_branches => [[$project, '**']]
trigger_branches => [[$project, '**']],
ensure => $ensure
}
jenkins_jobs::jobs::python27_gate { $name:
site => $site,
project => $project,
node_group => $node_group,
trigger_branches => [[$project, '**']]
trigger_branches => [[$project, '**']],
ensure => $ensure
}
jenkins_jobs::jobs::venv { $name:
site => $site,
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>
<contributors/>
</EnvInjectJobProperty>
<% if auth_build == true %>
<hudson.security.AuthorizationMatrixProperty>
<permission>hudson.model.Item.Build:authenticated</permission>
</hudson.security.AuthorizationMatrixProperty>
<% end %>
</properties>
<% if scm == "" %>
<scm class="hudson.scm.NullSCM"/>
@ -47,7 +49,11 @@ In modules/jenkins_jobs
<% end %>
<assignedNode><%= node_group %></assignedNode>
<canRoam>false</canRoam>
<% if disabled == true %>
<disabled>true</disabled>
<% else %>
<disabled>false</disabled>
<% end %>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers class="vector">

View File

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