Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Develop and Maintain a Distro with Open Build Service


Published on

Published in: Technology
  • Be the first to comment

Develop and Maintain a Distro with Open Build Service

  1. 1. Develop and Maintain a Distro with Open Build Service Gary Lin Software Engineer, SUSE Labs
  2. 2. Open Build Service?Open Build Service (OBS) is an open sourceproject initiated by SUSE to create a genericbuild system to build and distribute packagesfrom sources in an automatic, consistent andreproducible way.
  3. 3. Basic IdeaSource codePatches Package OBS (RPM, DEB, ...)Changelog Whatever
  4. 4. Supported Distributions
  5. 5. Supported Architectures● i586● x86-64● PowerPC 32● PowerPC 64● IA64● ARMv7● ARMv5
  6. 6. How OBS works
  7. 7. Project and Package● Project – Each project contains the resources needed to build one or more packages. – These resources include source archives, patch files, spec files, etc. – The project defines the build architectures and the general settings.● Package – The packages are the build targets of the project. – The package format could be any supported output format, e.g. RPM or DEB.
  8. 8. Frontend – Web UI
  9. 9. Frontend - Commandline
  10. 10. Frontend to BackendFrontend Requests Create a package/project Query packages/projects Check in/modify sources Backend Servers Delete a package ... Submit changes
  11. 11. Backend Components scheduler scheduler publish i586 x86_64 s job descriptions nteve dispatcher srcserver publisher s rce s ck age jobs sou pa download worker rep server server warden dep packages signer ... ... ... build results download worker rep server server
  12. 12. Collaboration
  13. 13. branch Project A home:userA:branches:ProjectA Project Settings Project Settings Project Settings Project SettingsBuild ArchitecturesBuild Architectures Build Architectures Build Architectures Package Package (Package) Diff Diff
  14. 14. submitrequestProject A home:userA:branches:ProjectA Package Package Package Diff Diff Diff Diff
  15. 15. Real-life case: openSUSE
  16. 16. Current Release● All packages are in the release project and the update project, e.g. openSUSE:12.1 and openSUSE:12.1:Update.● Each package update must be reviewed by the maintenance team and then be submitted to the update project.● In general, every update has to be tracked by a bugzilla entry.
  17. 17. Maintenance ProcessopenSUSE 12.1:Update openSUSE 12.1:Update openSUSE:Maintenance:IDXXX openSUSE:Maintenance:IDXXX packageA patchInfo packageA m br mr an ch home:userA:branches: home:userA:branches: openSUSE 12.1 openSUSE 12.1 openSUSE:12.1:Update openSUSE:12.1:Update packageA patchInfo packageA
  18. 18. Next Release● The packages for the next release are in the “factory” project, e.g. openSUSE:Factory.● All developments are happened in the “devel” projects.● The package updates are reviewed by the devel project maintainers.● Any modification is allowed as long as the maintainer agrees.
  19. 19. openSUSE FactoryNext Release openSUSE:Factory openSUSE:FactoryDevel Projects Base:System Base:System Gnome:Factory Gnome:Factory Gnome:Apps Gnome:Apps X11:XOrg X11:XOrg ...User Branches sr branch home:userA:branches: home:userA:branches: Gnome:Factory Gnome:Factory
  20. 20. Try it!openSUSE Build Service
  21. 21. Questions?
  22. 22. Thank You!
  23. 23. ReferencesOpen Build System system comparison Service Backend Key Components Build System Maintenance Setup
  24. 24. Backup Slides
  25. 25. Other Build Systems● Fedora “Koji”● Ubuntu “Launchpad”● Mandriva Build System● Project Build● Build Bot● Poky
  26. 26. Comparison Name Multi- Build for other Package formats Create Images Architecture distributionsFedora Koji N N rpm YUbuntu Y N deb NLaunchpadMandriva Build Y N rpm TODOSystem deb, rpm, ebuild,Project Build Y Y N pkgBuild Bot Y N N/A NPoky Y N rpm, deb, ipg, tgz YOpen Build rpm, deb, tgz, Y Y YService exe[*]* experimental
  27. 27. Package Build Build Server Local Build Sources Sources Sources SourcesDependenciesDependencies Dependencies DependenciesBase PackagesBase Packages Base Packages Base PackagesBase SystemBase System chroot chroot qemu qemu
  28. 28. copypacProject A Project B Package Package Package Package Change
  29. 29. linkpacProject A Project B Package Package (Package) Diff Diff
  30. 30. Tumbleweed● Tumbleweed is a project based on the current release and the “stable” projects.● Tumbleweed is initiated and maintained by Greg KH.
  31. 31. TumbleweedTumbleweed openSUSE:Tumbleweed openSUSE:TumbleweedStable Projects Current ReleaseGnome:Stable:3.2 KDE:Release:48 ...Gnome:Stable:3.2 KDE:Release:48 Virtualization Virtualization openSUSE:12.1 openSUSE:12.1