using jenkins as native packages factory - jenkins user conference paris 2012

20
Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Using Jenkins as Native Packages Factory Henri Gomez Axway http://www.axway.com

Upload: henrigomez

Post on 10-May-2015

3.417 views

Category:

Technology


1 download

DESCRIPTION

Jenkins User Conference tal

TRANSCRIPT

Page 1: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Using Jenkins as Native Packages Factory

Henri Gomez Axway

http://www.axway.com

Page 2: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

About me

!  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)

Page 3: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Native Packages

!  Heart of OS applications stack !  Dependency handling !  Automatic or selective updates !  Widely used by Ops !  Well suited for Cloud based Operations

Page 4: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Linux Packaging

!  RPM (Redhat Package Manager) –  RHEL/CentOS/ Fedora –  SLES/OpenSuse –  Mandriva

!  DEB –  Debian –  Ubuntu

Page 5: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Package Definition

!  A file(.rpm, .deb) !  An archive (Datas & Programs) !  Executed code at install, update or

remove time. !  Architecture related.

–  Intel, ARM, PowerPC –  32 or 64bits

!  Or architecture neutral –  Java application –  Ruby library

Page 6: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Package Benefits

! 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

Page 7: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Maven common 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

Page 8: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

From application 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

Page 9: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

RPM building – SPEC FILE

!   Sources !  Architecture ! Build Requirements ! Deploy Requirements ! Build ! Assembly !  Contents locations and rights

Page 10: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Jenkins as 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

Page 11: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Axway Packages Factory

!  Builder –  5 target OS

•  CentOS 5 / 6 in 32 and 64 bits •  OpenSuse 12.1 in 32 and 64 bits •  Suse SLES 11 in 64 bits

!  Distributor –  Apache HTTPd server –  Packages Repositories hosting and servicing

•  4 repos for CentOS 5/6 in 32/64 bits •  1 repo for OpenSuse 12.1 32/64 and SLES 11.

Page 12: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Axway Packages Factory Builder

i5 3.0Ghz, 16GB RAM, 500Gb HD Host OS OpenSuse 12.1

VirtualHost 4.1.8 7 Hosted VMs

CentOS 5 32 bits CentOS 5 64 bits CentOS 6 32 bits CentOS 6 64 bits OpenSuse 12.1 32 bits OpenSuse 12.1 64 bits Suse SLES 11 64 bits

Page 13: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Jenkins Factory 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

Page 14: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Jenkins Factory 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

Page 15: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Initial method – 1 Job / OS-Arch

Page 16: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Initial method – 1 Job / OS-Arch

Page 17: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Final method – 1 Job with Matrix

Page 18: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Final method – 1 Job with Matrix

Page 19: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Packages Tricks

! 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

Page 20: Using Jenkins as Native Packages Factory - Jenkins User Conference Paris 2012

Jenkins User Conference Paris, 17 April 2012 #jenkinsconf

Thank You To Our Sponsor