
Change-Id: I7f70d22cda3d0e174217ce0205b702bf07fb602b Signed-off-by: Philip Marc Schwartz <philip@progmad.com>
94 lines
2.4 KiB
Puppet
94 lines
2.4 KiB
Puppet
# == Class: jenkins::job_builder
|
|
#
|
|
class jenkins::job_builder (
|
|
$url,
|
|
$username,
|
|
$password,
|
|
$git_revision = 'master',
|
|
$git_url = 'https://git.openstack.org/openstack-infra/jenkins-job-builder',
|
|
$config_dir = '',
|
|
$jenkins_jobs_update_timeout = '600',
|
|
$query_plugins_info = true,
|
|
$extensions = [],
|
|
$manage_user = false,
|
|
) {
|
|
validate_array($extensions)
|
|
|
|
# A lot of things need yaml, be conservative requiring this package to avoid
|
|
# conflicts with other modules.
|
|
if ! defined(Package['python-yaml']) {
|
|
package { 'python-yaml':
|
|
ensure => present,
|
|
}
|
|
}
|
|
|
|
if ! defined(Package['python-jenkins']) {
|
|
package { 'python-jenkins':
|
|
ensure => latest,
|
|
provider => openstack_pip,
|
|
}
|
|
}
|
|
|
|
vcsrepo { '/opt/jenkins_job_builder':
|
|
ensure => latest,
|
|
provider => git,
|
|
revision => $git_revision,
|
|
source => $git_url,
|
|
}
|
|
|
|
exec { 'install_jenkins_job_builder':
|
|
command => 'pip install /opt/jenkins_job_builder',
|
|
path => '/usr/local/bin:/usr/bin:/bin/',
|
|
refreshonly => true,
|
|
subscribe => Vcsrepo['/opt/jenkins_job_builder'],
|
|
}
|
|
|
|
if $manage_user {
|
|
ensure_resource('user', $username, {
|
|
ensure => present,
|
|
password => $password,
|
|
comment => 'Jenkins Job Builder',
|
|
home => '/etc/jenkins_jobs',
|
|
system => true,
|
|
})
|
|
}
|
|
|
|
file { '/etc/jenkins_jobs':
|
|
ensure => directory,
|
|
}
|
|
|
|
file { '/etc/jenkins_jobs/config':
|
|
ensure => directory,
|
|
owner => 'root',
|
|
group => 'root',
|
|
mode => '0755',
|
|
recurse => true,
|
|
purge => true,
|
|
force => true,
|
|
source => $config_dir,
|
|
require => File['/etc/jenkins_jobs'],
|
|
notify => Exec['jenkins_jobs_update'],
|
|
}
|
|
|
|
exec { 'jenkins_jobs_update':
|
|
command => 'jenkins-jobs update --delete-old /etc/jenkins_jobs/config',
|
|
timeout => $jenkins_jobs_update_timeout,
|
|
path => '/bin:/usr/bin:/usr/local/bin',
|
|
refreshonly => true,
|
|
require => [
|
|
File['/etc/jenkins_jobs/jenkins_jobs.ini'],
|
|
Package['python-jenkins'],
|
|
Package['python-yaml'],
|
|
],
|
|
}
|
|
|
|
# TODO: We should put in notify Exec['jenkins_jobs_update']
|
|
# at some point, but that still has some problems.
|
|
file { '/etc/jenkins_jobs/jenkins_jobs.ini':
|
|
ensure => present,
|
|
mode => '0400',
|
|
content => template('jenkins/jenkins_jobs.ini.erb'),
|
|
require => File['/etc/jenkins_jobs'],
|
|
}
|
|
}
|