From e5b3600b5ca00563f5aac91a596ae237d8697bcb Mon Sep 17 00:00:00 2001 From: Andrew Hutchings Date: Wed, 2 May 2012 14:22:25 +0100 Subject: [PATCH] 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 --- manifests/stackforge.pp | 3 +- modules/jenkins_jobs/manifests/build_job.pp | 80 +++++++++++-------- .../jenkins_jobs/manifests/generic_jobs.pp | 15 ++-- .../jenkins_jobs/manifests/jobs/coverage.pp | 3 +- modules/jenkins_jobs/manifests/jobs/docs.pp | 3 +- .../jenkins_jobs/manifests/jobs/merge_gate.pp | 6 +- .../jenkins_jobs/manifests/jobs/pep8_gate.pp | 6 +- modules/jenkins_jobs/manifests/jobs/ppa.pp | 3 +- .../manifests/jobs/python26_gate.pp | 6 +- .../manifests/jobs/python27_gate.pp | 6 +- .../jenkins_jobs/manifests/jobs/tarball.pp | 4 +- modules/jenkins_jobs/manifests/jobs/venv.pp | 3 +- modules/jenkins_jobs/manifests/python_jobs.pp | 17 ++-- modules/jenkins_jobs/templates/body.xml.erb | 6 ++ .../templates/publisher_tarball.xml.erb | 4 +- 15 files changed, 105 insertions(+), 60 deletions(-) diff --git a/manifests/stackforge.pp b/manifests/stackforge.pp index 73c4a29028..050fcdaf0c 100644 --- a/manifests/stackforge.pp +++ b/manifests/stackforge.pp @@ -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": diff --git a/modules/jenkins_jobs/manifests/build_job.pp b/modules/jenkins_jobs/manifests/build_job.pp index 76c6096ecd..de18d372cf 100644 --- a/modules/jenkins_jobs/manifests/build_job.pp +++ b/modules/jenkins_jobs/manifests/build_job.pp @@ -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}"] - } - } diff --git a/modules/jenkins_jobs/manifests/generic_jobs.pp b/modules/jenkins_jobs/manifests/generic_jobs.pp index 05fc5ca342..c64932a57b 100644 --- a/modules/jenkins_jobs/manifests/generic_jobs.pp +++ b/modules/jenkins_jobs/manifests/generic_jobs.pp @@ -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 } } diff --git a/modules/jenkins_jobs/manifests/jobs/coverage.pp b/modules/jenkins_jobs/manifests/jobs/coverage.pp index cd2883d721..505695ca11 100644 --- a/modules/jenkins_jobs/manifests/jobs/coverage.pp +++ b/modules/jenkins_jobs/manifests/jobs/coverage.pp @@ -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", diff --git a/modules/jenkins_jobs/manifests/jobs/docs.pp b/modules/jenkins_jobs/manifests/jobs/docs.pp index 40adcada23..c9e8d5278c 100644 --- a/modules/jenkins_jobs/manifests/jobs/docs.pp +++ b/modules/jenkins_jobs/manifests/jobs/docs.pp @@ -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", diff --git a/modules/jenkins_jobs/manifests/jobs/merge_gate.pp b/modules/jenkins_jobs/manifests/jobs/merge_gate.pp index 78f0f8e434..1e195350e2 100644 --- a/modules/jenkins_jobs/manifests/jobs/merge_gate.pp +++ b/modules/jenkins_jobs/manifests/jobs/merge_gate.pp @@ -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 } } diff --git a/modules/jenkins_jobs/manifests/jobs/pep8_gate.pp b/modules/jenkins_jobs/manifests/jobs/pep8_gate.pp index cebc970ad5..fcfba45757 100644 --- a/modules/jenkins_jobs/manifests/jobs/pep8_gate.pp +++ b/modules/jenkins_jobs/manifests/jobs/pep8_gate.pp @@ -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 } } diff --git a/modules/jenkins_jobs/manifests/jobs/ppa.pp b/modules/jenkins_jobs/manifests/jobs/ppa.pp index 29e2e7c8c3..666242fb9d 100644 --- a/modules/jenkins_jobs/manifests/jobs/ppa.pp +++ b/modules/jenkins_jobs/manifests/jobs/ppa.pp @@ -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", diff --git a/modules/jenkins_jobs/manifests/jobs/python26_gate.pp b/modules/jenkins_jobs/manifests/jobs/python26_gate.pp index d5fbc46832..7a3dedae1b 100644 --- a/modules/jenkins_jobs/manifests/jobs/python26_gate.pp +++ b/modules/jenkins_jobs/manifests/jobs/python26_gate.pp @@ -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 } } diff --git a/modules/jenkins_jobs/manifests/jobs/python27_gate.pp b/modules/jenkins_jobs/manifests/jobs/python27_gate.pp index 732a403310..16c32727ef 100644 --- a/modules/jenkins_jobs/manifests/jobs/python27_gate.pp +++ b/modules/jenkins_jobs/manifests/jobs/python27_gate.pp @@ -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 } } diff --git a/modules/jenkins_jobs/manifests/jobs/tarball.pp b/modules/jenkins_jobs/manifests/jobs/tarball.pp index cbdfec2b89..6fdefc75a7 100644 --- a/modules/jenkins_jobs/manifests/jobs/tarball.pp +++ b/modules/jenkins_jobs/manifests/jobs/tarball.pp @@ -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")], diff --git a/modules/jenkins_jobs/manifests/jobs/venv.pp b/modules/jenkins_jobs/manifests/jobs/venv.pp index 3b741be9f8..6eb6afdab7 100644 --- a/modules/jenkins_jobs/manifests/jobs/venv.pp +++ b/modules/jenkins_jobs/manifests/jobs/venv.pp @@ -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", diff --git a/modules/jenkins_jobs/manifests/python_jobs.pp b/modules/jenkins_jobs/manifests/python_jobs.pp index ce2d10d2cf..05bf39bb74 100644 --- a/modules/jenkins_jobs/manifests/python_jobs.pp +++ b/modules/jenkins_jobs/manifests/python_jobs.pp @@ -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 } } diff --git a/modules/jenkins_jobs/templates/body.xml.erb b/modules/jenkins_jobs/templates/body.xml.erb index 073b73b348..960cb2ae47 100644 --- a/modules/jenkins_jobs/templates/body.xml.erb +++ b/modules/jenkins_jobs/templates/body.xml.erb @@ -36,9 +36,11 @@ In modules/jenkins_jobs true + <% if auth_build == true %> hudson.model.Item.Build:authenticated + <% end %> <% if scm == "" %> @@ -47,7 +49,11 @@ In modules/jenkins_jobs <% end %> <%= node_group %> false + <% if disabled == true %> + true + <% else %> false + <% end %> false false diff --git a/modules/jenkins_jobs/templates/publisher_tarball.xml.erb b/modules/jenkins_jobs/templates/publisher_tarball.xml.erb index 7811ecfe0e..d95e3d7978 100644 --- a/modules/jenkins_jobs/templates/publisher_tarball.xml.erb +++ b/modules/jenkins_jobs/templates/publisher_tarball.xml.erb @@ -3,10 +3,10 @@ false - <%= project %>.<%= site %>.org + <%= upload_project %>.<%= site %>.org - tarballs/<%= project %>/ + tarballs/<%= upload_project %>/ dist/*.tar.gz false