Added debian package building slave definition.

Change-Id: Ia4d6833339ed3975ca1dacb93f7e177caa990703
Reviewed-on: https://review.openstack.org/259
Reviewed-by: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
This commit is contained in:
Monty Taylor 2011-08-17 11:03:57 -04:00 committed by Jenkins
parent 8443fd22c3
commit b6a60a826d
5 changed files with 145 additions and 0 deletions

View File

@ -1,6 +1,7 @@
import "openstack_admins_users" #TODO: refactor
import "openstack_ci_admins_users" #TODO: refactor
import "doc_server" # TODO: refactor out of module
import "cowbuilder"
#
# Abstract classes:
@ -387,3 +388,8 @@ node /^driver(\d+)\.1918\.openstack\.org$/ {
}
}
node /^debuild(-\d+)?\.slave\.openstack\.org$/ {
include openstack_jenkins_slave
include cowbuilder
}

View File

@ -0,0 +1,37 @@
#!/bin/sh
set -e
apt-get -y install --force-yes lsb-release
release=`lsb_release --codename -s`
if test `lsb_release --id --short` = "Ubuntu"
then
apt-get -y install --force-yes python-software-properties
cat > "/etc/apt/sources.list.d/extras.list" << EOF
deb http://security.ubuntu.com/ubuntu $release-security main universe
deb-src http://security.ubuntu.com/ubuntu $release-security main universe
deb http://us.archive.ubuntu.com/ubuntu/ $release-updates main universe
deb-src http://us.archive.ubuntu.com/ubuntu/ $release-updates main universe
EOF
#TODO: This should be packages.openstack.org once we have it.
add-apt-repository ppa:nova-core/trunk
if test "${release}" != "oneiric" -a "${release}" != "natty"
then
add-apt-repository ppa:nova-core/build-depends
fi
else
# Have I mentioned our lack of debian is a bit assy? Let's hope Maverick
# works for now
cat > "/etc/apt/sources.list.d/nova.list" << EOF
deb http://ppa.launchpad.net/nova-core/trunk/ubuntu maverick main
deb http://ppa.launchpad.net/nova-core/build-depends/ubuntu maverick main
EOF
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2A2356C9
fi
apt-get update

View File

@ -0,0 +1,39 @@
define cowbuilder::cow($distro = ubuntu) {
$has_cow = "/usr/bin/test -d /var/cache/pbuilder/base-$name.cow"
case $distro {
ubuntu: {
exec { "Add base cow for $name":
environment => ["DIST=$name","APTCACHEHARDLINK=no","HOME=/root"],
command => "git-pbuilder create --distribution $name --components 'main universe' --hookdir /var/cache/pbuilder/hook.d/ --mirror='http://us.archive.ubuntu.com/ubuntu/'",
path => "/usr/sbin:/usr/bin:/sbin:/bin",
user => root,
group => root,
timeout => 0,
logoutput => on_failure,
unless => "$has_cow",
}
}
debian: {
exec { "Add base cow for $name":
environment => ["DIST=$name","APTCACHEHARDLINK=no","HOME=/root"],
command => "git-pbuilder create --distribution $name --mirror ftp://ftp.us.debian.org/debian/ --debootstrapopts '--keyring=/usr/share/keyrings/debian-archive-keyring.gpg' --hookdir /var/cache/pbuilder/hook.d/",
path => "/usr/sbin:/usr/bin:/sbin:/bin",
user => root,
group => root,
timeout => 0,
logoutput => on_failure,
unless => "$has_cow",
}
}
}
exec { "Update base cow for $name":
environment => ["DIST=$name","APTCACHEHARDLINK=no","HOME=/root"],
command => "git-pbuilder update --hookdir /var/cache/pbuilder/hook.d/",
path => "/usr/sbin:/usr/bin:/sbin:/bin",
user => root,
group => root,
logoutput => on_failure,
onlyif => "$has_cow",
}
}

View File

@ -0,0 +1,11 @@
define cowbuilder::debgpg {
exec { "Add gpg public key $name":
command => "gpg --keyserver keys.gnupg.net --recv-key $name",
path => "/usr/sbin:/usr/bin:/sbin:/bin",
user => root,
group => root,
logoutput => on_failure,
unless => "/usr/bin/gpg --list-keys $name >/dev/null 2>&1",
}
}

View File

@ -0,0 +1,52 @@
class cowbuilder {
$slave_packages = ["git-buildpackage",
"pbuilder",
"cowbuilder",
"debian-archive-keyring"]
$ubuntu_releases = [ "lucid",
"maverick",
"natty",
"oneiric" ]
$debian_releases = [ "wheezy",
"squeeze" ]
package { $slave_packages:
ensure => "latest"
}
file { 'cowhookdir':
name => '/var/cache/pbuilder/hook.d',
ensure => 'directory',
mode => 755,
require => Package['pbuilder'],
}
file { 'cowhook':
name => '/var/cache/pbuilder/hook.d/E01-enable-repos',
owner => 'root',
group => 'root',
mode => 755,
ensure => 'present',
source => "puppet:///modules/cowbuilder/E01-enable-repos",
replace => 'true',
require => File[cowhookdir]
}
cowbuilder::debgpg { 'AED4B06F473041FA': }
cowbuilder::cow { $ubuntu_releases:
distro => 'ubuntu',
require => [Package[debian-archive-keyring], File[cowhook]],
}
cowbuilder::cow { $debian_releases:
distro => 'debian',
require => [ Package[debian-archive-keyring],
File[cowhook],
Cowbuilder::Debgpg[AED4B06F473041FA],
],
}
}