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:
parent
8443fd22c3
commit
b6a60a826d
@ -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
|
||||
}
|
||||
|
37
modules/cowbuilder/files/E01-enable-repos
Normal file
37
modules/cowbuilder/files/E01-enable-repos
Normal 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
|
39
modules/cowbuilder/manifests/cow.pp
Normal file
39
modules/cowbuilder/manifests/cow.pp
Normal 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",
|
||||
}
|
||||
}
|
11
modules/cowbuilder/manifests/debgpg.pp
Normal file
11
modules/cowbuilder/manifests/debgpg.pp
Normal 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",
|
||||
}
|
||||
}
|
52
modules/cowbuilder/manifests/init.pp
Normal file
52
modules/cowbuilder/manifests/init.pp
Normal 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],
|
||||
],
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user