Add build_slaves module for Jenkins slaves
Still need to add nexus_password to eyaml.
This commit is contained in:
parent
00997c586a
commit
fe3c3ab5e1
|
@ -2,5 +2,6 @@
|
|||
|
||||
dnsclient::searchorder: 'apache.org'
|
||||
|
||||
dnsclient::nameserver1: '8.8.8.8'
|
||||
dnsclient::nameserver2: '8.8.4.4'
|
||||
dnsclient::nameservers:
|
||||
- '8.8.8.8'
|
||||
- '8.8.4.4'
|
||||
|
|
|
@ -43,6 +43,14 @@ apt::sources:
|
|||
key_server: 'pgp.mit.edu'
|
||||
include_deb: true
|
||||
include_src: false
|
||||
'lxc_docker':
|
||||
location: 'https://get.docker.io/ubuntu'
|
||||
release: 'docker'
|
||||
repos: 'main'
|
||||
key: 'A88D21E9'
|
||||
key_server: 'hkp://keyserver.ubuntu.com:80'
|
||||
include_deb: true
|
||||
include_src: false
|
||||
|
||||
apt::force:
|
||||
'orthrus':
|
||||
|
@ -97,3 +105,149 @@ subversionclient::packages:
|
|||
subversionclient::svn_conf_config: '/etc/subversion/config'
|
||||
subversionclient::svn_conf_servers: '/etc/subversion/servers'
|
||||
|
||||
build_slaves::jenkins::jenkins_pub_key: 'AAAAB3NzaC1yc2EAAAABIwAAAIEAtxkcKDiPh1OaVzaVdc80daKq2sRy8aAgt8u2uEcLClzMrnv/g19db7XVggfT4+HPCqcbFbO3mtVnUnWWtuSEpDjqriWnEcSj2G1P53zsdKEu9qCGLmEFMgwcq8b5plv78PRdAQn09WCBI1QrNMypjxgCKhNNn45WqV4AD8Jp7/8='
|
||||
|
||||
build_slaves::jenkins::jenkins_packages:
|
||||
- asf-build-apache-ant-1.9.4
|
||||
- asf-build-apache-forrest-0.9
|
||||
- asf-build-apache-maven-2.2.1
|
||||
- asf-build-apache-maven-3.0.4
|
||||
- asf-build-apache-maven-3.2.1
|
||||
- asf-build-clover-ant-2.4.3
|
||||
- asf-build-findbugs-2.0.3
|
||||
- asf-build-harmony-jdk-713673
|
||||
- asf-build-ibmjava2-142
|
||||
- asf-build-ibmjava2-amd64-142
|
||||
- asf-build-ibm-java2-i386-50
|
||||
- asf-build-ibm-java2-x86-64-50
|
||||
- asf-build-ibm-java-i386-60
|
||||
- asf-build-ibm-java-x86-64-60
|
||||
- asf-build-ibm-java-x86-64-70
|
||||
- asf-build-j2sdk1.4.2-19
|
||||
- asf-build-jdk1.5.0-17-32
|
||||
- asf-build-jdk1.5.0-17-64
|
||||
- asf-build-jdk1.5.0-22-32
|
||||
- asf-build-jdk1.5.0-22-64
|
||||
- asf-build-jdk1.6.0-11-32
|
||||
- asf-build-jdk1.6.0-11-64
|
||||
- asf-build-jdk1.6.0-20-32
|
||||
- asf-build-jdk1.6.0-20-32-unlimited-security
|
||||
- asf-build-jdk1.6.0-20-64
|
||||
- asf-build-jdk1.6.0-27-32
|
||||
- asf-build-jdk1.6.0-27-64
|
||||
- asf-build-jdk1.6.0-45-32
|
||||
- asf-build-jdk1.6.0-45-64
|
||||
- asf-build-jdk1.7.0-04
|
||||
- asf-build-jdk1.7.0-25-32
|
||||
- asf-build-jdk1.7.0-25-64
|
||||
- asf-build-jdk1.7.0-32
|
||||
- asf-build-jdk1.7.0-55
|
||||
- asf-build-jdk1.7.0-64
|
||||
- asf-build-jdk1.8.0
|
||||
- asf-build-jira-cli-2.1.0
|
||||
|
||||
build_slaves::distro_packages:
|
||||
- ant
|
||||
- asciidoc
|
||||
- autoconf
|
||||
- automake
|
||||
- bison
|
||||
- build-essential
|
||||
- cabal-install
|
||||
- cmake
|
||||
- cppcheck
|
||||
- curl
|
||||
- debhelper
|
||||
- devscripts
|
||||
- dh-make
|
||||
- emacs24-nox
|
||||
- erlang-base
|
||||
- erlang-dev
|
||||
- erlang-eunit
|
||||
- flex
|
||||
- g++
|
||||
- g++-4.8-multilib
|
||||
- g++-multilib
|
||||
- gcc-multilib
|
||||
- ghc
|
||||
- git-core
|
||||
- golang
|
||||
- golang-go
|
||||
- lib32bz2-1.0
|
||||
- lib32ncurses5
|
||||
- lib32z1
|
||||
- libapr1-dev
|
||||
- libbit-vector-perl
|
||||
- libboost-dev
|
||||
- libboost-filesystem-dev
|
||||
- libboost-program-options-dev
|
||||
- libboost-system-dev
|
||||
- libboost-test-dev
|
||||
- libc6-dev-i386
|
||||
- libclass-accessor-class-perl
|
||||
- libcppunit-dev
|
||||
- libcurl4-nss-dev
|
||||
- libcurl4-openssl-dev
|
||||
- libevent-dev
|
||||
- libfuse-dev
|
||||
- libghc-binary-dev
|
||||
- libghc-hashable-dev
|
||||
- libghc-http-dev
|
||||
- libghc-network-dev
|
||||
- libghc-unordered-containers-dev
|
||||
- libghc-vector-dev
|
||||
- libglib2.0-dev
|
||||
- libjpeg8-dev
|
||||
- liblzo2-dev
|
||||
- liblua5.2-dev
|
||||
- libmono-system-web2.0-cil
|
||||
- libqt4-dev
|
||||
- libsasl2-dev
|
||||
- libsnappy-dev
|
||||
- libssl-dev
|
||||
- libstdc++-4.8-dev
|
||||
- libsvn-dev
|
||||
- libswt-gtk-3-java
|
||||
- libswt-gtk-3-jni
|
||||
- libtool
|
||||
- libxml-xpath-perl
|
||||
- libz-dev
|
||||
- linux-headers-3.13.0-36
|
||||
- linux-headers-3.13.0-36-generic
|
||||
- linux-image-3.13.0-36-generic
|
||||
- linux-image-3.13.0-36-lowlatency
|
||||
- lua5.2
|
||||
- lxc-docker
|
||||
- mingw32
|
||||
- mingw32-binutils
|
||||
- mingw32-runtime
|
||||
- mono-devel
|
||||
- mono-gmcs
|
||||
- nodejs
|
||||
- nodejs-dev
|
||||
- nodejs-legacy
|
||||
- npm
|
||||
- nsis
|
||||
- php-pear
|
||||
- php5
|
||||
- php5-cli
|
||||
- php5-dev
|
||||
- pkg-config
|
||||
- protobuf-compiler
|
||||
- python-all
|
||||
- python-all-dbg
|
||||
- python-all-dev
|
||||
- python-boto
|
||||
- python-dev
|
||||
- python-pip
|
||||
- python-setuptools
|
||||
- python-support
|
||||
- re2c
|
||||
- ruby
|
||||
- ruby-dev
|
||||
- screen
|
||||
- sharutils
|
||||
- sloccount
|
||||
- tmux
|
||||
- unzip
|
||||
- xvfb
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
modulepath = /etc/puppet/modules:/etc/puppet/3rdParty
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
hiera_include("classes")
|
||||
|
||||
node default {
|
||||
include build_slaves::jenkins
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
export TOOLS_HOME=${HOME}/tools
|
||||
export ANT_HOME=$TOOLS_HOME/ant/latest
|
||||
export MAVEN_HOME=$TOOLS_HOME/maven/latest
|
||||
export PATH=${ANT_HOME}/bin:${MAVEN_HOME}/bin:$PATH
|
|
@ -0,0 +1,51 @@
|
|||
#
|
||||
# This file is managed by puppet. Do not edit it directly.
|
||||
#
|
||||
|
||||
# /etc/security/limits.conf
|
||||
#
|
||||
#Each line describes a limit for a user in the form:
|
||||
#
|
||||
#<domain> <type> <item> <value>
|
||||
#
|
||||
#Where:
|
||||
#<domain> can be:
|
||||
# - an user name
|
||||
# - a group name, with @group syntax
|
||||
# - the wildcard *, for default entry
|
||||
# - the wildcard %, can be also used with %group syntax,
|
||||
# for maxlogin limit
|
||||
#
|
||||
#<type> can have the two values:
|
||||
# - "soft" for enforcing the soft limits
|
||||
# - "hard" for enforcing hard limits
|
||||
#
|
||||
#<item> can be one of the following:
|
||||
# - core - limits the core file size (KB)
|
||||
# - data - max data size (KB)
|
||||
# - fsize - maximum filesize (KB)
|
||||
# - memlock - max locked-in-memory address space (KB)
|
||||
# - nofile - max number of open files
|
||||
# - rss - max resident set size (KB)
|
||||
# - stack - max stack size (KB)
|
||||
# - cpu - max CPU time (MIN)
|
||||
# - nproc - max number of processes
|
||||
# - as - address space limit
|
||||
# - maxlogins - max number of logins for this user
|
||||
# - maxsyslogins - max number of logins on the system
|
||||
# - priority - the priority to run user process with
|
||||
# - locks - max number of file locks the user can hold
|
||||
# - sigpending - max number of pending signals
|
||||
# - msgqueue - max memory used by POSIX message queues (bytes)
|
||||
# - nice - max nice priority allowed to raise to
|
||||
# - rtprio - max realtime priority
|
||||
#
|
||||
#<domain> <type> <item> <value>
|
||||
#
|
||||
|
||||
jenkins soft nofile 60000
|
||||
jenkins hard nofile 60000
|
||||
jenkins soft nproc 10240
|
||||
jenkins hard nproc 10240
|
||||
|
||||
# End of file
|
|
@ -0,0 +1,9 @@
|
|||
class build_slaves (
|
||||
$distro_packages = [],
|
||||
) {
|
||||
|
||||
package { $distro_packages:
|
||||
ensure => installed,
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,113 @@
|
|||
class build_slaves::jenkins (
|
||||
$nexus_password = '',
|
||||
$jenkins_pub_key = '',
|
||||
$jenkins_packages = []
|
||||
) {
|
||||
|
||||
require stdlib
|
||||
require build_slaves
|
||||
|
||||
group { 'jenkins':
|
||||
ensure => present,
|
||||
}
|
||||
|
||||
user { 'jenkins':
|
||||
ensure => present,
|
||||
require => Group['jenkins'],
|
||||
shell => '/bin/bash',
|
||||
managehome => true,
|
||||
}
|
||||
|
||||
file { '/usr/local/jenkins':
|
||||
require => User['jenkins'],
|
||||
ensure => directory,
|
||||
owner => 'jenkins',
|
||||
group => 'jenkins',
|
||||
}
|
||||
|
||||
file { '/home/jenkins/tools':
|
||||
require => File['/usr/local/jenkins'],
|
||||
ensure => 'link',
|
||||
target => '/usr/local/jenkins',
|
||||
}
|
||||
|
||||
file { '/home/jenkins/.ssh':
|
||||
require => User['jenkins'],
|
||||
ensure => directory,
|
||||
owner => 'jenkins',
|
||||
group => 'jenkins',
|
||||
mode => '0700'
|
||||
}
|
||||
|
||||
file { '/home/jenkins/env.sh':
|
||||
ensure => present,
|
||||
mode => 0755,
|
||||
source => 'puppet:///modules/build_slaves/jenkins_env.sh',
|
||||
owner => 'jenkins',
|
||||
group => 'jenkins',
|
||||
}
|
||||
|
||||
ssh_authorized_key { 'jenkins':
|
||||
ensure => present,
|
||||
require => User['jenkins'],
|
||||
user => 'jenkins',
|
||||
type => 'ssh-rsa',
|
||||
key => 'AAAAB3NzaC1yc2EAAAABIwAAAIEAtxkcKDiPh1OaVzaVdc80daKq2sRy8aAgt8u2uEcLClzMrnv/g19db7XVggfT4+HPCqcbFbO3mtVnUnWWtuSEpDjqriWnEcSj2G1P53zsdKEu9qCGLmEFMgwcq8b5plv78PRdAQn09WCBI1QrNMypjxgCKhNNn45WqV4AD8Jp7/8='
|
||||
}
|
||||
|
||||
file { '/home/jenkins/.m2':
|
||||
require => User['jenkins'],
|
||||
ensure => directory,
|
||||
owner => 'jenkins',
|
||||
group => 'jenkins',
|
||||
mode => '0755'
|
||||
}
|
||||
|
||||
file { '/home/jenkins/.buildr':
|
||||
require => User['jenkins'],
|
||||
ensure => directory,
|
||||
owner => 'jenkins',
|
||||
group => 'jenkins',
|
||||
mode => '0755'
|
||||
}
|
||||
|
||||
file { "/home/jenkins/.m2/settings.xml":
|
||||
require => File['/home/jenkins/.m2'],
|
||||
ensure => $ensure,
|
||||
path => "/home/jenkins/.m2/settings.xml",
|
||||
owner => 'jenkins',
|
||||
group => 'jenkins',
|
||||
mode => '0640',
|
||||
content => template('build_slaves/m2_settings.erb')
|
||||
}
|
||||
|
||||
file { "/home/jenkins/.buildr/settings.yaml":
|
||||
require => File['/home/jenkins/.buildr'],
|
||||
ensure => $ensure,
|
||||
path => "/home/jenkins/.buildr/settings.yaml",
|
||||
owner => 'jenkins',
|
||||
group => 'jenkins',
|
||||
mode => '0640',
|
||||
content => template('build_slaves/buildr_settings.erb')
|
||||
}
|
||||
|
||||
file { "/etc/security/limits.d/jenkins.conf":
|
||||
ensure => file,
|
||||
owner => root,
|
||||
group => root,
|
||||
mode => 0644,
|
||||
source => "puppet:///modules/build_slaves/jenkins_limits.conf",
|
||||
require => File["/etc/security/limits.d"],
|
||||
}
|
||||
|
||||
file_line { "USERGROUPS_ENAB":
|
||||
path => '/etc/login.defs',
|
||||
line => 'USERGROUPS_ENAB no',
|
||||
match => '^USERGROUPS_ENAB.*'
|
||||
}
|
||||
|
||||
package { $jenkins_packages:
|
||||
require => Apt::Source['lxc_docker'],
|
||||
ensure => installed,
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
repositories:
|
||||
release_to:
|
||||
url: https://repository.apache.org/content/repositories/snapshots
|
||||
username: ci-hudson
|
||||
password: <%= nexus_password %>
|
|
@ -0,0 +1,28 @@
|
|||
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
|
||||
http://maven.apache.org/xsd/settings-1.0.0.xsd">
|
||||
<servers>
|
||||
<server>
|
||||
<id>struts2.snapshots</id>
|
||||
<username>wesw</username>
|
||||
</server>
|
||||
|
||||
<server>
|
||||
<id>apache.snapshots.https</id>
|
||||
<username>ci-hudson</username>
|
||||
<password><%= nexus_password %></password>
|
||||
</server>
|
||||
|
||||
|
||||
</servers>
|
||||
<mirrors>
|
||||
<mirror>
|
||||
<id>Nexus</id>
|
||||
<mirrorOf>apache.snapshots</mirrorOf>
|
||||
<name>Nexus</name>
|
||||
<url>http://repository.apache.org/snapshots</url>
|
||||
</mirror>
|
||||
</mirrors>
|
||||
|
||||
</settings>
|
|
@ -11,9 +11,25 @@ Facter.add("asfosname") do
|
|||
end
|
||||
end
|
||||
|
||||
Facter.add("ipaddress_primary") do
|
||||
setcode do
|
||||
if Facter.value('ipaddress_eth0')
|
||||
Facter.value('ipaddress_eth0')
|
||||
elsif Facter.value('ipaddress_em0')
|
||||
Facter.value('ipaddress_em0')
|
||||
elsif Facter.value('ipaddress_eth1')
|
||||
Facter.value('ipaddress_eth1')
|
||||
elsif Facter.value('ipaddress_em1')
|
||||
Facter.value('ipaddress_em1')
|
||||
else
|
||||
Facter.value('ipaddress')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Facter.add("asfcolo") do
|
||||
setcode do
|
||||
ipadd = Facter.value('ipaddress')
|
||||
ipadd = Facter.value('ipaddress_primary')
|
||||
case ipadd
|
||||
when /^140.211.11.([0-9]+)$/
|
||||
"osuosl"
|
||||
|
@ -36,7 +52,7 @@ Facter.add("asfcolo") do
|
|||
when /^162.209.6.([0-9]+)$/
|
||||
"rax-vpc-us-mid"
|
||||
else
|
||||
'No Colo could be automatically determined'
|
||||
"yahoo"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue