- Module Description - What the module does and why it is useful
- Setup - The basics of getting started with jenkins_node
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
Jenkins node setup for building packages in chroot environment using mock or pbuilder.
- Packages: Java, build tools
- Sudo: pbuilder under jenkins user, cleanups
- Files:
- config files for dput, mini-dinstall
- user rpm macros
- credentials (gpg, ssh)
- build scripts checkout
- helper ~jenkins/.puppet-* files
- SELinux setup
- cron:
- refresh chroot images
gnupg directory with key needs to be prepared locally at each Jenkins node or at the puppet master.
class{'jenkins_node':
gpg_dir => [
"puppet:///extra_files/${::fqdn}/gnupg",
"puppet:///extra_files/cluster-${::cluster}/gnupg",
],
gpg_identity => 'Jenkins Builder <jenkins@emian.zcu.cz>',
gpg_keyid => '64fa8786',
gpg_keys => {
'64fa8786' => 'http://scientific.zcu.cz/repos/jenkins-builder.asc',
},
}
SSH keys must be specified separately. For example:
ssh_authorized_key{'root@myriads.zcu.cz':
user => 'jenkins',
type => 'ssh-dss',
key => 'AAAA...',
}
jenkins_node
: Jenkins Node
jenkins_node::gpgkey_rpm
(internal): Import GPG key into rpm
#####homedir
Jenkins user home directory. Default: '/var/lib/jenkins'.
#####gpg_dir
GnuPG config directory with key pair. Default: undef.
Note, it is passed directly to source of file type.
#####gpg_identity
gnupg identity in the form of "Name <email_address>". Default: "Jenkins Builder <jenkins@${::fqdn}>".
Used for rpm.
#####gpg_keyid
GPG key ID. Default: undef.
#####gpg_keys
Hash of GPG key ID and GPG key URL pairs. Default: undef.
Example:
gpg_keys => {
'64fa8786' => 'http://scientific.zcu.cz/repos/jenkins-builder.asc'
}
#####jenkins_principals
Array of Kerberos principals to authenticate to Jenkins node into jenkins user. Default: undef.
#####parameters
Hash of parameters for build scripts. Default: undef.
#####platforms
List of supported platforms. Default: (autodetect).
#####refresh_enable
Enable creating and refreshing chroot images. Default: true.
#####refresh_hour
#####refresh_minute
#####refresh_month
#####refresh_monthday
#####refresh_weekday
Parameters for the refresh image cron job. Default: 0, 0, *, *, 0.
RHEL 5 platform is not supported.
It is possible to build for RHEL 5 though:
- any other RedHat-like platform can be used for the build node (it is used mock tool)
- there is limit on the GPG key size (see below)
Some build platforms can be collocated on the single node, but each "OS family" need its own machine.
Build "OS families":
- Debian
- Ubuntu
- Fedora/EPEL
Different GPG key:
- separated build machine must be used when different GPG key is needed for some platform
- Repository: https://github.com/valtri/cesnet-jenkins_node
- Tests: see .travis.yml
- Email: František Dvořák <valtri@civ.zcu.cz>