26
1 © Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0 Bruno Cornec HP EMEA Open Source Profession Lead Project Builder: A GPL continuous packaging solution V2.1 6 th of January 2014

LCA 2014 project-builder.org presentation

Embed Size (px)

DESCRIPTION

Presentation of the GPL Continuous Packaging tool helping producing packages mostly for upstream Open Source projects made during the Linux.conf.au 2014 Continuous Integration Mini-Conf in Perth.

Citation preview

Page 1: LCA 2014 project-builder.org presentation

1

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Bruno Cornec HP EMEA Open Source Profession Lead

Project Builder:A GPL continuous packaging solution

V2.1 6th of January 2014

Page 2: LCA 2014 project-builder.org presentation

2

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Introducing Myself● Software engineering and Unices since 1988

– Mostly Configuration Management Systems, Build systems, quality tools, on multiple commercial Unix systems

– Discover Open Source & Linux (OSL) & first contributions in 1993

– Full time on OSL since 1995, first as HP reseller then @HP

● Currently:

– Master Technology Architect on OSL for the HP/Intel Solution Center, Grenoble

– HP OSL Advocate and Converged Infrastructure Ambassador

– HP EMEA OSL Profession Lead

– Solutions Linux Conference and AFUL board member. Conferences at WW level in LinuxCon, Linux.conf.au

– MondoRescue, Project-Builder.org, UUWL and PUSK Project Lead

– LinuxCOE, mrepo, tellico, rinse, fossology, collectl contributor

– FOSSBazaar and OSL Governance enthusiast

– Mandriva, Mageia, Fedora packager

● And also:

– Amateur singer (Alto / Tenor) and recorder player since 1976 and Choir director since 1987

– CD collector since 1981 (5000+ and counting) – Concert attendance since 1976

– Amateur photograph since 1976

Page 3: LCA 2014 project-builder.org presentation

3

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

What is project-builder.org’s goal ?

Make upstream projects life easier with regards to packaging their software

Page 4: LCA 2014 project-builder.org presentation

4

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

What is project-builder.org’s itch ?

Make *my* life easier with regards to packaging *my* software

Page 5: LCA 2014 project-builder.org presentation

5

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Users / Sysadmins want packaged software

< 1%

< 10%

>= 90%●Ease of use: GUI, CLI●Distribution compliance●Smooth Integration with deployment tools

U

Page 6: LCA 2014 project-builder.org presentation

6

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Users / Sysadmins want packaged software

< 1%

< 10%

>= 90%●Ease of use: GUI, CLI●Distribution compliance●Smooth Integration with deployment tools

●Lag between SW and Pkg availability●Test of alpha/beta/VCS SW●Too many:

● distributions, ● versions, ● package formats, ● tools to generate packages● tools to manage repositories

U

D

Page 7: LCA 2014 project-builder.org presentation

7

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Packaging should be a project concern as well as coding, testing, installing, .... especially for smaller projects

Use packaging as your only way of delivery (not a dream)Minial overhead, slightly longer than providing a tgz, maximum benefit:

Consistancy and reproduceability for devs and users

Distribution & deployment server integration,

Improved deployment without risk of screwing up the system

Packaging is also a marketing activity for the upstream project based on a technical content. It's an easy way to extend your user base, and improve your community relationship and is a “competitive advantage”.

New mantra: “Package early, package always”

THE SOLUTION IS INDEED CONTINUOUS PACKAGING (whatever the tool)

Upstream benefits from Continuous packaging

Page 8: LCA 2014 project-builder.org presentation

8

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Project

Build +

metadata

Continuous Packaging Architecture

VM or VE Build

Local build

RM Build Farm (may host VMs) Remote build

RepositoryServer

Local Build Server (may host VMs and/or VEs)

Packagers

Developers

Page 9: LCA 2014 project-builder.org presentation

9

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Project

Build +

metadata

Provisioning the Continuous Packaging Cloud

VM or VE Build

Local build

RM Build Farm (may host VMs)

Remote build

RepositoryServer

Local Build Server (may host VMs and/or VEs)

Page 10: LCA 2014 project-builder.org presentation

10

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Project-builder main goal is to help you package continuously being agnostic:

VCS agnostic: no VCS but guys it's 21st century now, SVN, CVS, Mercurial, GIT and GIT/SVN, SVK....

OS agnostic: Linux: RPM, deb, ebuild, slack based, ... 150+ distro tuples made and counting – repositories for yum, urpmi, apt. Solaris pkg. HP-UX sd in roadmap

Build environment agnostic: local, VM (QEMU, KVM...), VE (rpmbootstrap, rinse, mock, debootstrap...), RM (external build farm)

No project impact: preserves the md5sum of the delivered upstream sources. Can be completely external to the upstream project.

Avoids duplication of code and metadata

THE SOLUTION IS INDEED CONTINUOUS PACKAGING (with project-builder.org !)

Goals

Page 11: LCA 2014 project-builder.org presentation

11

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Project-builder provides additional goodies:

Easy VMs/VEs/RMs installation/setup. More on that later

Macro system with perl variables to avoid duplication

Skeleton generation to help starting

Manages package delivery up to your repository (ssh based) with repository management (yum, apt, urpmi)

Manages announces on mailing lists

Integration of tests in the process

Manages patches/additional sources when not upstream

Checks validity of packages built (lintian, rpmlint)

Easy creation of new versions for upstream management

Manages website delivery

Goodies

Page 12: LCA 2014 project-builder.org presentation

12

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

VM, VE & RM ManagementVE Creation:

debootstrap for .deb based ones.

rpmbootstrap (modeled after debootstrap): create chroot for multiple RPM based distributions (Mageia, Fedora, Mandriva, CentOS, OpenSuSE)

VM|RM Creation:

KVM or QEMU iso install possibilities.

LinuxCOE/OpenStack as provisioning tool for your VM|RM

VM|VE|RM setup: adds pb tools and build account

VM|VE Snapshot feature – Update of VM|VE|M optional

Building in VM|VE|RM == building locally (build2vm|ve|rm vs build2pkg).

ssh communication for VM/RM

Page 13: LCA 2014 project-builder.org presentation

13

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Metadata Management

Packaging process independent of the project and external

Metadata isolated - No duplication

Page 14: LCA 2014 project-builder.org presentation

14

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

./rpmbootstrap/pbfilter/all.pbf:filter PBSUMMARY = rpmbootstrap is a tool similar to debootstrap for RPM based distributions

./rpmbootstrap/rpm/rpmbootstrap.spec:Summary: PBSUMMARY

./rpmbootstrap/deb/control:Description: PBSUMMARY

./rpmbootstrap/pkg/pkginfo:NAME="PBSUMMARY"

Macro example:

Instantiation possible from distro-ver-arch, distro-ver, distro, distro-family, distro-type, os

Similar approach for all other parameters (Cf: man pb.conf)

Configuration file usage

Page 15: LCA 2014 project-builder.org presentation

15

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

[cms|sbx]2build: Create tar files for the project under your CMS. Parameters are packages to build if not using default list

build2pkg: Create packages for your running distribution

build2ssh: Send the tar files to a SSH host

pkg2ssh: Send the packages built to a SSH host

build2vm|ve|rm: Create packages in VMs/VEs/RMs, launching them if needed and send those packages to a SSH host once built

launchvm: Launch one virtual machine

script2vm|ve|rm: Launch a VM/VE/RM if needed and executes a script on it

test2vm|ve|rm: Test inside a VM/VE/RM

newvm|ve: Create a new VM/VE/RM

setupvm|ve|rm: Setup a VM/VE/RM for pb usage

newver: Create a new version of the project derived from the current one

newproj: Create a new project and a template set of configuration files under pbconf

Commands

Page 16: LCA 2014 project-builder.org presentation

16

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Project

Packaging

cms|sbx2build

build2vm|ve|rm

build2pkg

newvm|ve / setupvm|ve|rmnewver / newproj

The Big picture

build2sshDevelopers

Packagers

PackagesBuilding

pkg2ssh

Page 17: LCA 2014 project-builder.org presentation

17

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Packages

Multi platform packaging cycle

Developers

Packagers

VMs/VEs/RMs

VM/VE/RM

UUWL

Page 18: LCA 2014 project-builder.org presentation

18

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Q & A up to now ?

Page 19: LCA 2014 project-builder.org presentation

19

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

DEMONSTRATION

Page 20: LCA 2014 project-builder.org presentation

20

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Special announce for LCA 2014 !

Page 21: LCA 2014 project-builder.org presentation

21

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

More Special announce for LCA 2014 !

I hate time release delivery

Of course, 0.12.3 has bugs ;-)

Lack of time to test thoroughly

So I hate time release delivery

So expect a 0.12.4 later this week, when more tests have been done !

So back to feature set release in fact

Did I say I hate time release delivery ?

Page 22: LCA 2014 project-builder.org presentation

22

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

LSB chroot support. (or not)

LXC support (which one ?)

Support for libvirt, virsh, openstack API

Other CMS (Bazaar, …) only when/if needed

Other VMs (VMWare, Xen, ...) only when/if needed

Multiple delivery means

Look at interactions with Buildbot

Add non-interactive signature support for .deb

Config-Model for configuration file management

REST API and Web Interface would be nice. Any contributor ?

To be done

Page 23: LCA 2014 project-builder.org presentation

23

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Learn Project-Builder.org

Start with the Lab (63 pages)

Use man (pb, pb.conf + 8 ProjectBuilder::* man pages)

Use the mailing-list pb-announce and pb-devel at http://www.mondorescue.org/sympa

Use examples from http://trac.project-builder.org/browser/projects/

Page 24: LCA 2014 project-builder.org presentation

24

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Project-Builder Web site / Trac / Wiki:

● http://www.project-builder.org

● http://trac.project-builder.org

Projects using project-builder.org:

● http://www.project-builder.org ( of course :-)

● http://www.mondorescue.org

● Http://www.linuxcoe.org

● http://www.fossology.org

Web Resources

Page 25: LCA 2014 project-builder.org presentation

25

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

Project-Builder is mostly suited for upstream projects wanting to package their applications

Distributions provide each their build tools● SuSE: Open Build Service (Multi distro, Web based, BaaS)● Fedora (Koji)● Mandriva/Mageia (Youri, mdvsys, mgarepo...)

Other complementary tools:● Buildbot● KVM/QEMU● rpmbootstrap, rinse, mock● Parallel::ForkManager, DBI, DB::SQLite, File::MimeInfo, Mail::Sendmail

Project-Builder.org is one of the tool of the vcs-pkg.org initiative.

Related tools

Page 26: LCA 2014 project-builder.org presentation

26

© Copyright 2012 Hewlett-Packard Development Company, L.P. - Licensed under CC-by-SA 3.0

”Changes are never easy to make. There is comfort and safety in tradition, but change must come, no matter how painful or expensive it may be.”

Bill Hewlett

[email protected]

(Open Source and Linux Technology Architect at the HP/Intel Solution Center)

http://www.hp.com/linux

http://opensource.hp.com

Thanks goes to:

Linus Torvalds, Richard Stallman, Eric Raymond, Nat Makarevitch, René Cougnenc, Eric Dumas, Rémy Card, Bdale Garbee, Bryan Gartner, Craig Lamparter, Lee Mayes, Gallig Renaud, Andree Leidenfrost, Phil Robb, Bob Gobeille, Martin Michlmayr among others, for their work and devotion to the Open Source Software cause... and my family for their patience :-)

Contact - Thanks