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
fi
MODULES="puppetlabs-mysql puppetlabs-dashboard"
MODULES="puppetlabs-mysql puppetlabs-dashboard puppetlabs-vcsrepo"
MODULE_LIST=`puppet module list`
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 buildsource(
$dir = $title,
@ -114,11 +68,11 @@ class etherpad_lite (
mode => 0664,
}
git_repo { 'nodejs_repo':
repo => 'https://github.com/joyent/node.git',
dest => "${base_install_dir}/nodejs",
branch => 'v0.6.16-release',
clone_only => 'true',
vcsrepo { "${base_install_dir}/nodejs":
ensure => present,
provider => git,
source => 'https://github.com/joyent/node.git',
revision => 'origin/v0.6.16-release',
require => Package['git']
}
@ -144,15 +98,15 @@ class etherpad_lite (
Package['libssl-dev'],
Package['pkg-config'],
Package['build-essential'],
Git_repo['nodejs_repo']]
Vcsrepo["${base_install_dir}/nodejs"]]
}
git_repo { 'etherpad_repo':
repo => 'https://github.com/Pita/etherpad-lite.git',
dest => "${base_install_dir}/etherpad-lite",
user => $ep_user,
clone_only => 'true',
require => Package['git']
vcsrepo { "${base_install_dir}/etherpad-lite":
ensure => present,
provider => git,
source => "https://github.com/Pita/etherpad-lite.git",
owner => $ep_user,
require => Package['git'],
}
exec { 'install_etherpad_dependencies':
@ -161,7 +115,7 @@ class etherpad_lite (
user => $ep_user,
cwd => "${base_install_dir}/etherpad-lite",
environment => "HOME=${base_log_dir}/${ep_user}",
require => [Git_repo['etherpad_repo'],
require => [Vcsrepo["${base_install_dir}/etherpad-lite"],
Buildsource["${base_install_dir}/nodejs"]],
before => File["${base_install_dir}/etherpad-lite/settings.json"],
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-simplejson",
"python-pygments",
"mercurial",
"drizzle",
"python-mysqldb" ]
@ -34,21 +33,10 @@ class lodgeit {
hasrestart => true
}
# if we already have the git repo the pull updates
exec { "update_lodgeit":
command => "git pull --ff-only",
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"
vcsrepo { "/tmp/lodgeit-main":
ensure => latest,
provider => git,
source => "https://github.com/openstack-ci/lodgeit.git",
}
# 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 {
stage { 'first': before => Stage['main'] }
class { 'vcs':
stage => 'first'
vcsrepo { "/opt/meetbot":
ensure => latest,
provider => git,
source => "https://github.com/openstack-ci/meetbot.git",
}
user { "meetbot":
@ -41,7 +24,7 @@ class meetbot {
service { "nginx":
ensure => running,
hasrestart => true
hasrestart => true,
}
file { "/var/lib/meetbot":
@ -54,7 +37,8 @@ class meetbot {
ensure => directory,
recurse => true,
source => "/opt/meetbot/MeetBot",
require => Package["supybot"]
require => [Package["supybot"],
Vcsrepo["/opt/meetbot"]]
}
file { "/etc/nginx/sites-enabled/default":

View File

@ -88,7 +88,8 @@ define meetbot::site($nick, $nickpass, $network, $server, $url=$fqdn, $channels,
recurse => true,
source => "/opt/meetbot/ircmeeting",
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":
@ -114,7 +115,9 @@ define meetbot::site($nick, $nickpass, $network, $server, $url=$fqdn, $channels,
service { "${name}-meetbot":
provider => upstart,
ensure => running,
require => File["/etc/init/${name}-meetbot.conf"],
subscribe => [File["/usr/share/pyshared/supybot/plugins/MeetBot"], File["/var/lib/meetbot/${name}/ircmeeting"]]
require => [Vcsrepo["/opt/meetbot"],
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],
}
# otherwise get a new clone of it
exec { "create_${name}_planet":
command => "git clone ${git_url} /var/lib/planet/${name}",
path => "/bin:/usr/bin",
onlyif => "test ! -d /var/lib/planet/${name}"
vcsrepo { "/var/lib/planet/${name}":
ensure => present,
provider => git,
source => $git_url,
require => File['/var/lib/planet'],
}
cron { "update_planet_${name}":

View File

@ -13,29 +13,18 @@ class zuul (
ensure => "present",
}
# if we already have the repo the pull updates
exec { "update_zuul":
command => "git pull --ff-only",
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"
vcsrepo { "/opt/zuul":
ensure => latest,
provider => git,
source => "https://github.com/openstack-ci/zuul.git",
}
exec { "install_zuul":
command => "python setup.py install",
cwd => "/opt/zuul",
path => "/bin:/usr/bin",
subscribe => [ Exec["get_zuul"], Exec["update_zuul"] ],
refreshonly => true,
subscribe => Vcsrepo["/opt/zuul"],
}
file { "/etc/zuul":