! CI Architect @ Axway ! Was Senior Ops Director ! Was Developer, TL and Architect ! JPackage Project Founder ! OpenJDK 7 & 8 packages for OSX ! ASF Member (Tomcat & XMLRPC)
! Describing requirement ! Provide programs, datas and settings ! Registering in system service(ie: logrotate) ! Enforcing dedicated run account ! Total control over runtime cycle-life – Installation – Update – Uninstallation A package is much more than an archive
facts ! DSL build based ! Dependency Management – At build time – At deploy time ! Packages repositories – In local mode – Remotely via HTTP ! Nexus and Artifactory could act as RPM repositories
to RPM ! 2 approachs – OS Vendor way: • Rebuilt from sources tarballs • Require tarballs in build path – Enterprise way: • Rebuilt from Binaries (stored in Artifacts Repository) • Avoid duplicate processing • Trusting your delivery process
a Packages Factory ! Jenkins Master – Get contents from SCM (Subversion, Git) – Prepare build environment – Trigger build on slaves ! Jenkins Slaves – One slave by target (OS/Arch) platform – Confident in OS compatibility – Deployment on RPM repositories
in-depth ! Builder – take control on slaves via SSH – Trigger build jobs after SCM change – Trigger jobs on 5/6 VMs via Matrix Plugin ! Slaves – Build package on OS / Arch – Send build packages to distributor via SCP ! Distributor – Reindex repositories via cron if something change
in-depth Parallel build on slaves (Matrix) Build binaries uploaded via SCP Repositories reindexed by cron if update detected New packages immediatly available remotely via HTTP
! CentOS/RHEL use one repo by arch – One repository for x86 32bits with native/noarch – One repository for x86 64bits with native/noarch è One slave by architecture for native è Use one slave builder by arch even for noarch packages ! OpenSuse/SLES use a common repository – One dir for x86 32bits – One dir for x86 64bits – One dir for noarch è One slave by architecture for native è You could use 32 or 64 bits builder for noarch packages