Replace manual git work with vcsrepo module.

Change-Id: Ia0f3acd50aab07cc83d13cd12c8f7fc67f1c697d
Reviewed-on: https://review.openstack.org/10832
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Reviewed-by: James E. Blair <corvus@inaugust.com>
Approved: Monty Taylor <mordred@inaugust.com>
Tested-by: Jenkins
This commit is contained in:
Monty Taylor
2012-08-04 09:55:37 -05:00
committed by Jenkins
parent 085d70d77e
commit 246566d65e
9 changed files with 43 additions and 210 deletions

View File

@@ -4,7 +4,7 @@ if ! puppet help module >/dev/null 2>&1 ; then
apt-get install -y -o Dpkg::Options::="--force-confold" puppet facter apt-get install -y -o Dpkg::Options::="--force-confold" puppet facter
fi fi
MODULES="puppetlabs-mysql puppetlabs-dashboard" MODULES="puppetlabs-mysql puppetlabs-dashboard puppetlabs-vcsrepo"
MODULE_LIST=`puppet module list` MODULE_LIST=`puppet module list`
for MOD in $MODULES ; do for MOD in $MODULES ; do

View File

@@ -1,49 +1,3 @@
# define to manage a git repo (should replace with vcsrepo module)
define git_repo (
$repo,
$dest,
$user = 'root',
$branch = 'master',
$clone_only = undef
) {
if $clone_only == 'true' {
$checkout_condition = "false"
}
else {
$checkout_condition = "test -d ${dest}"
}
# if we already have the git repo the pull updates
exec { "update_${title}":
command => "git pull --ff-only origin ${branch}",
cwd => $dest,
path => '/bin:/usr/bin',
user => $user,
onlyif => $checkout_condition,
before => Exec["clone_${title}"],
}
# otherwise get a new clone of it
exec { "clone_${title}":
command => "git clone ${repo} ${dest}",
path => '/bin:/usr/bin',
user => $user,
onlyif => "test ! -d ${dest}",
} ->
exec { "checkout_${title}_${branch}":
command => "git checkout ${branch}",
path => '/bin:/usr/bin',
cwd => $dest,
user => $user,
subscribe => Exec["clone_${title}"],
refreshonly => true,
onlyif => "test -d ${dest}"
}
}
# define to build from source using ./configure && make && make install. # define to build from source using ./configure && make && make install.
define buildsource( define buildsource(
$dir = $title, $dir = $title,
@@ -114,11 +68,11 @@ class etherpad_lite (
mode => 0664, mode => 0664,
} }
git_repo { 'nodejs_repo': vcsrepo { "${base_install_dir}/nodejs":
repo => 'https://github.com/joyent/node.git', ensure => present,
dest => "${base_install_dir}/nodejs", provider => git,
branch => 'v0.6.16-release', source => 'https://github.com/joyent/node.git',
clone_only => 'true', revision => 'origin/v0.6.16-release',
require => Package['git'] require => Package['git']
} }
@@ -144,15 +98,15 @@ class etherpad_lite (
Package['libssl-dev'], Package['libssl-dev'],
Package['pkg-config'], Package['pkg-config'],
Package['build-essential'], Package['build-essential'],
Git_repo['nodejs_repo']] Vcsrepo["${base_install_dir}/nodejs"]]
} }
git_repo { 'etherpad_repo': vcsrepo { "${base_install_dir}/etherpad-lite":
repo => 'https://github.com/Pita/etherpad-lite.git', ensure => present,
dest => "${base_install_dir}/etherpad-lite", provider => git,
user => $ep_user, source => "https://github.com/Pita/etherpad-lite.git",
clone_only => 'true', owner => $ep_user,
require => Package['git'] require => Package['git'],
} }
exec { 'install_etherpad_dependencies': exec { 'install_etherpad_dependencies':
@@ -161,7 +115,7 @@ class etherpad_lite (
user => $ep_user, user => $ep_user,
cwd => "${base_install_dir}/etherpad-lite", cwd => "${base_install_dir}/etherpad-lite",
environment => "HOME=${base_log_dir}/${ep_user}", environment => "HOME=${base_log_dir}/${ep_user}",
require => [Git_repo['etherpad_repo'], require => [Vcsrepo["${base_install_dir}/etherpad-lite"],
Buildsource["${base_install_dir}/nodejs"]], Buildsource["${base_install_dir}/nodejs"]],
before => File["${base_install_dir}/etherpad-lite/settings.json"], before => File["${base_install_dir}/etherpad-lite/settings.json"],
creates => "${base_install_dir}/etherpad-lite/node_modules" creates => "${base_install_dir}/etherpad-lite/node_modules"

View File

@@ -1,46 +0,0 @@
define devstackrepo($ensure = present) {
$repo_there = "test -d /home/jenkins/devstack"
case $ensure {
present: {
exec { "Clone devstack git repo":
path => "/usr/sbin:/usr/bin:/sbin:/bin",
environment => "HOME=/home/jenkins",
command => "sudo -H -u jenkins -i git clone git://github.com/jeblair/devstack.git /home/jenkins/devstack",
user => "root",
group => "root",
unless => "$repo_there",
logoutput => on_failure,
}
file { '/home/jenkins/devstack/localrc':
owner => 'root',
group => 'root',
mode => 444,
ensure => 'present',
source => 'puppet:///modules/jenkins_slave/localrc',
require => Exec["Clone devstack git repo"],
}
exec { "Update devstack git repo":
path => "/usr/sbin:/usr/bin:/sbin:/bin",
environment => "HOME=/home/jenkins",
command => "sudo -H -u jenkins -i bash -c 'cd /home/jenkins/devstack && git pull'",
user => "root",
group => "root",
onlyif => "$repo_there",
logoutput => on_failure,
}
}
absent: {
exec { "Remove OpenStack git repo":
path => "/usr/sbin:/usr/bin:/sbin:/bin",
environment => "HOME=/root",
command => "rm -rf /home/jenkins/devstack",
user => "root",
group => "root",
onlyif => "$repo_there",
}
}
default: {
fail "Invalid 'ensure' value '$ensure' for devstackrepo"
}
}
}

View File

@@ -1,38 +0,0 @@
define slavecirepo($ensure = present) {
$repo_there = "test -d /home/jenkins/openstack-ci"
case $ensure {
present: {
exec { "Clone openstack-ci git repo":
path => "/usr/sbin:/usr/bin:/sbin:/bin",
environment => "HOME=/home/jenkins",
command => "sudo -H -u jenkins -i git clone git://github.com/openstack/openstack-ci.git /home/jenkins/openstack-ci",
user => "root",
group => "root",
unless => "$repo_there",
logoutput => on_failure,
}
exec { "Update openstack-ci git repo":
path => "/usr/sbin:/usr/bin:/sbin:/bin",
environment => "HOME=/home/jenkins",
command => "sudo -H -u jenkins -i bash -c 'cd /home/jenkins/openstack-ci && git pull'",
user => "root",
group => "root",
onlyif => "$repo_there",
logoutput => on_failure,
}
}
absent: {
exec { "Remove OpenStack git repo":
path => "/usr/sbin:/usr/bin:/sbin:/bin",
environment => "HOME=/root",
command => "rm -rf /home/jenkins/openstack-ci",
user => "root",
group => "root",
onlyif => "$repo_there",
}
}
default: {
fail "Invalid 'ensure' value '$ensure' for slavecirepo"
}
}
}

View File

@@ -6,7 +6,6 @@ class lodgeit {
"python-werkzeug", "python-werkzeug",
"python-simplejson", "python-simplejson",
"python-pygments", "python-pygments",
"mercurial",
"drizzle", "drizzle",
"python-mysqldb" ] "python-mysqldb" ]
@@ -34,21 +33,10 @@ class lodgeit {
hasrestart => true hasrestart => true
} }
# if we already have the git repo the pull updates vcsrepo { "/tmp/lodgeit-main":
ensure => latest,
exec { "update_lodgeit": provider => git,
command => "git pull --ff-only", source => "https://github.com/openstack-ci/lodgeit.git",
cwd => "/tmp/lodgeit-main",
path => "/bin:/usr/bin",
onlyif => "test -d /tmp/lodgeit-main"
}
# otherwise get a new clone of it
exec { "get_lodgeit":
command => "git clone git://github.com/openstack-ci/lodgeit.git /tmp/lodgeit-main",
path => "/bin:/usr/bin",
onlyif => "test ! -d /tmp/lodgeit-main"
} }
# create initial git DB backup location # create initial git DB backup location

View File

@@ -1,26 +1,9 @@
class vcs {
# if we already have the git repo the pull updates
exec { "update_meetbot_repo":
command => "git pull --ff-only",
cwd => "/opt/meetbot",
path => "/bin:/usr/bin",
onlyif => "test -d /opt/meetbot"
}
# otherwise get a new clone of it
exec { "clone_meebot_repo":
command => "git clone https://github.com/openstack-ci/meetbot.git /opt/meetbot",
path => "/bin:/usr/bin",
onlyif => "test ! -d /opt/meetbot"
}
}
class meetbot { class meetbot {
stage { 'first': before => Stage['main'] }
class { 'vcs': vcsrepo { "/opt/meetbot":
stage => 'first' ensure => latest,
provider => git,
source => "https://github.com/openstack-ci/meetbot.git",
} }
user { "meetbot": user { "meetbot":
@@ -41,7 +24,7 @@ class meetbot {
service { "nginx": service { "nginx":
ensure => running, ensure => running,
hasrestart => true hasrestart => true,
} }
file { "/var/lib/meetbot": file { "/var/lib/meetbot":
@@ -54,7 +37,8 @@ class meetbot {
ensure => directory, ensure => directory,
recurse => true, recurse => true,
source => "/opt/meetbot/MeetBot", source => "/opt/meetbot/MeetBot",
require => Package["supybot"] require => [Package["supybot"],
Vcsrepo["/opt/meetbot"]]
} }
file { "/etc/nginx/sites-enabled/default": file { "/etc/nginx/sites-enabled/default":

View File

@@ -88,7 +88,8 @@ define meetbot::site($nick, $nickpass, $network, $server, $url=$fqdn, $channels,
recurse => true, recurse => true,
source => "/opt/meetbot/ircmeeting", source => "/opt/meetbot/ircmeeting",
owner => 'meetbot', owner => 'meetbot',
require => File["/var/lib/meetbot/${name}"] require => [Vcsrepo["/opt/meetbot"],
File["/var/lib/meetbot/${name}"]]
} }
file { "/var/lib/meetbot/${name}/ircmeeting/meetingLocalConfig.py": file { "/var/lib/meetbot/${name}/ircmeeting/meetingLocalConfig.py":
@@ -114,7 +115,9 @@ define meetbot::site($nick, $nickpass, $network, $server, $url=$fqdn, $channels,
service { "${name}-meetbot": service { "${name}-meetbot":
provider => upstart, provider => upstart,
ensure => running, ensure => running,
require => File["/etc/init/${name}-meetbot.conf"], require => [Vcsrepo["/opt/meetbot"],
subscribe => [File["/usr/share/pyshared/supybot/plugins/MeetBot"], File["/var/lib/meetbot/${name}/ircmeeting"]] File["/etc/init/${name}-meetbot.conf"]],
subscribe => [File["/usr/share/pyshared/supybot/plugins/MeetBot"],
File["/var/lib/meetbot/${name}/ircmeeting"]]
} }
} }

View File

@@ -14,12 +14,11 @@ define planet::site($git_url) {
require => Package[nginx], require => Package[nginx],
} }
# otherwise get a new clone of it vcsrepo { "/var/lib/planet/${name}":
ensure => present,
exec { "create_${name}_planet": provider => git,
command => "git clone ${git_url} /var/lib/planet/${name}", source => $git_url,
path => "/bin:/usr/bin", require => File['/var/lib/planet'],
onlyif => "test ! -d /var/lib/planet/${name}"
} }
cron { "update_planet_${name}": cron { "update_planet_${name}":

View File

@@ -13,29 +13,18 @@ class zuul (
ensure => "present", ensure => "present",
} }
# if we already have the repo the pull updates vcsrepo { "/opt/zuul":
ensure => latest,
exec { "update_zuul": provider => git,
command => "git pull --ff-only", source => "https://github.com/openstack-ci/zuul.git",
cwd => "/opt/zuul",
path => "/bin:/usr/bin",
onlyif => "test -d /opt/zuul",
before => Exec["get_zuul"],
}
# otherwise get a new clone of it
exec { "get_zuul":
command => "git clone https://github.com/openstack-ci/zuul /opt/zuul",
path => "/bin:/usr/bin",
onlyif => "test ! -d /opt/zuul"
} }
exec { "install_zuul": exec { "install_zuul":
command => "python setup.py install", command => "python setup.py install",
cwd => "/opt/zuul", cwd => "/opt/zuul",
path => "/bin:/usr/bin", path => "/bin:/usr/bin",
subscribe => [ Exec["get_zuul"], Exec["update_zuul"] ], refreshonly => true,
subscribe => Vcsrepo["/opt/zuul"],
} }
file { "/etc/zuul": file { "/etc/zuul":