Puppet Class: beta::autoupdater
- Defined in:
- modules/beta/manifests/autoupdater.pp
Overview
Class: beta::autoupdater
For host continuously updating MediaWiki core and extensions on the beta cluster. This is the lame way to automatically pull any code merged in master branches.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'modules/beta/manifests/autoupdater.pp', line 6
class beta::autoupdater {
$stage_dir = '/srv/mediawiki-staging'
file { '/usr/local/bin/wmf-beta-autoupdate.py':
owner => 'root',
group => 'root',
mode => '0555',
require => Package['git'],
content => template('beta/wmf-beta-autoupdate.py.erb'),
}
file { '/usr/local/bin/wmf-beta-mwconfig-update':
owner => 'root',
group => 'root',
mode => '0555',
require => [
Package['git'],
File['/etc/profile.d/mediawiki.sh']
],
source => 'puppet:///modules/beta/wmf-beta-mwconfig-update',
}
file { '/usr/local/bin/wmf-beta-update-databases.py':
owner => 'root',
group => 'root',
mode => '0555',
source => 'puppet:///modules/beta/wmf-beta-update-databases.py',
}
git::clone { 'beta-mediawiki-core':
directory => "${stage_dir}/php-master",
origin => 'https://gerrit.wikimedia.org/r/mediawiki/core.git',
branch => 'master',
owner => 'jenkins-deploy',
group => 'wikidev',
require => Git::Clone['operations/mediawiki-config'],
}
git::clone { 'beta-portal':
directory => "${stage_dir}/portal-master",
origin => 'https://gerrit.wikimedia.org/r/wikimedia/portals.git',
branch => 'master',
owner => 'jenkins-deploy',
group => 'wikidev',
require => Git::Clone['operations/mediawiki-config'],
}
file { "${stage_dir}/docroot/wwwportal/portal-master":
ensure => 'link',
target => '../../portal-master/prod',
}
# Remove the placeholder extension directory of the mediawiki/core
# checkout so that we can checkout the complete extension repository.
exec { "/bin/rm -r ${stage_dir}/php-master/extensions":
refreshonly => true,
subscribe => Git::Clone['beta-mediawiki-core'],
# In case Git::Clone["beta-mediawiki-core"] has some parameter change
# it will refresh this exec and we do not need to needlessly remove
# exensions if they are already there.
unless => "/usr/bin/test -d \"${stage_dir}/php-master/extensions/.git\"",
before => Git::Clone['beta-mediawiki-extensions'],
}
git::clone { 'beta-mediawiki-extensions':
directory => "${stage_dir}/php-master/extensions",
origin => 'https://gerrit.wikimedia.org/r/mediawiki/extensions.git',
branch => 'master',
owner => 'jenkins-deploy',
group => 'wikidev',
recurse_submodules => true,
timeout => 1800,
require => Git::Clone['beta-mediawiki-core'],
}
# MediaWiki core has a /skins/ directory causing git clone to refuse
# cloning mediawiki/skins.git in the existing repository. Instead use git
# init.
# Also hardcoded in modules/beta/templates/wmf-beta-autoupdate.py.erb
$mw_skins_dest = "${stage_dir}/php-master/skins"
$mw_skins_git_url = 'https://gerrit.wikimedia.org/r/mediawiki/skins.git'
exec { 'beta_mediawiki_skins_git_init':
command => "/usr/bin/git init ${mw_skins_dest}",
user => 'jenkins-deploy',
group => 'wikidev',
creates => "${mw_skins_dest}/.git",
require => Git::Clone['beta-mediawiki-core'],
notify => Exec['beta_mediawiki_skins_git_remote_add'],
}
exec { 'beta_mediawiki_skins_git_remote_add':
command => "/usr/bin/git remote add origin ${mw_skins_git_url}",
user => 'jenkins-deploy',
group => 'wikidev',
cwd => $mw_skins_dest,
refreshonly => true,
}
git::clone { 'beta-mediawiki-skins':
directory => $mw_skins_dest,
origin => 'https://gerrit.wikimedia.org/r/mediawiki/skins.git',
branch => 'master',
owner => 'jenkins-deploy',
group => 'wikidev',
recurse_submodules => true,
# Needs to be initialized manually since skins dir exists
require => Exec['beta_mediawiki_skins_git_init'],
}
git::clone { 'mediawiki/vendor':
directory => "${stage_dir}/php-master/vendor",
branch => 'master',
owner => 'jenkins-deploy',
group => 'wikidev',
require => Git::Clone['beta-mediawiki-core'],
}
}
|