From 5991ee6a62a70f9aab3928471e87e6edf6881c78 Mon Sep 17 00:00:00 2001 From: Simon McCartney Date: Wed, 7 Sep 2016 15:50:44 +0100 Subject: [PATCH] Enable a specific version of jenkins to be installed This is an update to https://review.openstack.org/#/c/354086/ so that puppet uses the dpkg provider with puppet archive to download & install a specific version of jenkins if jenkins_version isn't set to latest or present. Change-Id: I054b27b045e97c39f0706d110c05459e6b9d74a1 --- manifests/master.pp | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/manifests/master.pp b/manifests/master.pp index 018f83e..3a9d22d 100644 --- a/manifests/master.pp +++ b/manifests/master.pp @@ -13,7 +13,8 @@ class jenkins::master( $jenkins_ssh_private_key = '', $jenkins_ssh_public_key = '', $jenkins_default = 'puppet:///modules/jenkins/jenkins.default', - $jenkins_version = present, + $jenkins_version = 'present', + $jenkins_deb_url_base = 'http://pkg.jenkins.io/debian/binary', ) { include ::pip include ::apt @@ -112,9 +113,40 @@ class jenkins::master( ensure => present, } - package { 'jenkins': - ensure => $jenkins_version, - require => Apt::Source['jenkins'], + # jenkins apt-repo doesn't offer multiple versions + # so if anything other than 'present' or 'latest' + # is set, pull down the .deb using wget + # and install via the dpkg resource + if ($jenkins_version == 'present') or + ($jenkins_version == 'latest') + { + package { 'jenkins': + ensure => $jenkins_version, + require => Apt::Source['jenkins'], + } + } else { + $jenkins_deb = "jenkins_${jenkins_version}_all.deb" + $jenkins_deb_url = "${jenkins_deb_url_base}/${jenkins_deb}" + $jenkins_deb_tmp = "/var/tmp/${jenkins_deb}" + + archive { 'jenkins_deb': + source => $jenkins_deb_url, + path => $jenkins_deb_tmp, + } + + # required by jenkins.deb, but as we're not using apt, + # no dependency resolution is performed. + package { 'daemon': } + + package { 'jenkins': + # for the dpkg provider, latest means check the version, + # installed/present skips the version check, we want to version + # check so that we can move between versions using puppet + ensure => latest, + provider => dpkg, + source => $jenkins_deb_tmp, + require => [Package['daemon'], Archive['jenkins_deb']], + } } exec { 'update apt cache':