Develop and Maintain a Distro with Open Build Service

  • Upload
    suselab

  • View
    1.823

  • Download
    2

Embed Size (px)

Citation preview

  • 1. Develop and Maintain a Distro withOpen Build ServiceGary LinSoftware Engineer, SUSE [email protected]

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. Basic IdeaSource codePatchesPackage OBS(RPM, DEB, ...)Changelog Whatever 4. Supported Distributions 5. Supported Architectures i586 x86-64 PowerPC 32 PowerPC 64 IA64 ARMv7 ARMv5 6. How OBS works 7. Project and Package Project Each project contains the resources needed to buildone or more packages. These resources include source archives, patch files,spec files, etc. The project defines the build architectures and thegeneral settings. Package The packages are the build targets of the project. The package format could be any supported outputformat, e.g. RPM or DEB. 8. Frontend Web UI 9. Frontend - Commandline 10. Frontend to BackendFrontend Requests Create a package/projectQuery packages/projectsCheck in/modify sourcesBackendServers Delete a package...Submit changes 11. Backend Componentsschedulerschedulerpublishi586x86_64sjob descriptions ntevedispatchersrcserverpublisher srce s ck agejobs soupa downloadworkerrep serverserver wardendep packagessigner .........build resultsdownloadworkerrep serverserver 12. Collaboration 13. branchProject A home:userA:branches:ProjectA Project Settings Project SettingsProject Settings Project SettingsBuild ArchitecturesBuild Architectures Build ArchitecturesBuild ArchitecturesPackagePackage (Package) Diff Diff 14. submitrequestProject A home:userA:branches:ProjectA Package PackagePackage Diff Diff DiffDiff 15. Real-life case: openSUSE 16. Current Release All packages are in the release project and theupdate project, e.g. openSUSE:12.1 andopenSUSE:12.1:Update. Each package update must be reviewed bythe maintenance team and then be submittedto the update project. In general, every update has to be tracked bya bugzilla entry. 17. Maintenance ProcessopenSUSE 12.1:Update openSUSE 12.1:UpdateopenSUSE:Maintenance:IDXXXopenSUSE:Maintenance:IDXXXpackageA patchInfopackageAm brmr anch home:userA:branches:home:userA:branches: openSUSE 12.1openSUSE 12.1 openSUSE:12.1:Update openSUSE:12.1:UpdatepackageA patchInfopackageA 18. Next Release The packages for the next release are in thefactory project, e.g. openSUSE:Factory. All developments are happened in the develprojects. The package updates are reviewed by thedevel project maintainers. Any modification is allowed as long as themaintainer agrees. 19. openSUSE FactoryNext ReleaseopenSUSE:Factory openSUSE:FactoryDevel Projects Base:System Base:System Gnome:Factory Gnome:FactoryGnome:AppsGnome:Apps X11:XOrg X11:XOrg ...User Branchessr branch home:userA:branches:home:userA:branches:Gnome:Factory Gnome:Factory 20. Try it!openSUSE Build Servicehttp://build.opensuse.org 21. Questions? 22. Thank You! 23. ReferencesOpen Build Systemhttp://www.open-build-service.org/Build system comparisonhttp://en.opensuse.org/openSUSE:Build_Service_comparisonBuild Service Backend Key Componentshttp://en.opensuse.org/openSUSE:Build_Service_Backend_Key_ComponentsopenSUSE Build Systemhttps://build.opensuse.org/openSUSE Maintenance Setuphttp://doc.opensuse.org/products/draft/OBS/obs-reference-guide_draft/cha.obs.maintenance_setup.html 24. Backup Slides 25. Other Build Systems Fedora Koji Ubuntu Launchpad Mandriva Build System Project Build Build Bot Poky 26. Comparison Name Multi-Build for other Package formats Create Images ArchitecturedistributionsFedora Koji NNrpmYUbuntuYNdebNLaunchpadMandriva BuildYNrpmTODOSystemdeb, rpm, ebuild,Project Build YY NpkgBuild Bot YNN/ANPokyYNrpm, deb, ipg, tgz YOpen Buildrpm, deb, tgz,YY YService exe[*]* experimental 27. Package Build Build Server Local Build Sources Sources Sources SourcesDependenciesDependencies Dependencies DependenciesBase PackagesBase PackagesBase Packages Base PackagesBase SystemBase Systemchrootchrootqemu qemu 28. copypacProject A Project B Package Package Package Package Change 29. linkpacProject A Project B Package Package (Package)DiffDiff 30. Tumbleweed Tumbleweed is a project based on the currentrelease and the stable projects. Tumbleweed is initiated and maintained byGreg KH. 31. TumbleweedTumbleweedopenSUSE:Tumbleweed openSUSE:TumbleweedStable ProjectsCurrent ReleaseGnome:Stable:3.2 KDE:Release:48 ...Gnome:Stable:3.2 KDE:Release:48 VirtualizationVirtualization openSUSE:12.1openSUSE:12.1