Open Build Service (OBS) Project Workshop

Slides:



Advertisements
Similar presentations
1 The IIPC Web Curator Tool: Steve Knight The National Library of New Zealand Philip Beresford and Arun Persad The British Library An Open Source Solution.
Advertisements

MCITP: Microsoft Windows Vista Desktop Support - Enterprise Section 1: Prepare to Deploy.
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
WDK Driver Test Manager. Outline HCT and the history of driver testing Problems to solve Goals of the WDK Driver Test Manager (DTM) Automated Deployment.
Talend 5.4 Architecture Adam Pemble Talend Professional Services.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Linux Operations and Administration
© 2013 IBM Corporation Get started on IBM Linux on Power SDK November 2013.
Nightly Releases and Testing Alexander Undrus Atlas SW week, May
Please Note: Information contained in this document is considered LENOVO CONFIDENTIAL For Lenovo Internal Use Only Do Not Copy or Distribute!! For Lenovo.
Customer Service and Support Sutherland Global Services Consultant Learning Services Microsoft Store.
GIT An introduction to GIT Source Control. What is GIT (1 of 2) ▪ “Git is a free and open source distributed version control system designed to handle.
SUSE Linux Enterprise Desktop Administration Chapter 12 Administer Printing.
April 30, 2007 openSUSE.org Build Service a short introduction Moiz Kohari VP Engineering.
Git workflow and basic commands By: Anuj Sharma. Why git? Git is a distributed revision control system with an emphasis on speed, data integrity, and.
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
July 2011CMSC 341 CVS/Ant 1 CMSC 341 Java Packages Ant CVS Project Submission.
1 Schema Registries Steven Hughes, Lou Reich, Dan Crichton NASA 21 October 2015.
Dudok de Wit David.  Documents management in a deskless company  SharePoint Online as a solution  Redesigning the documentary organization  Interoperability.
March 11, 2008 USCMS Tier-2 Workshop Oh Dear God Alain made a PowerPoint presentation 1.
Solutions using Microsoft Content Management Server 2002 Connector for SharePoint Technologies Sue Corke Mark Harrison Microsoft UK.
Design and Implementation of a Rationale-Based Analysis Tool (RAT) Diploma thesis from Timo Wolf Design and Realization of a Tool for Linking Source Code.
SWGData and Software Access - 1 UCB, Nov 15/16, 2006 THEMIS SCIENCE WORKING TEAM MEETING Data and Software Access Ken Bromund GST Inc., at NASA/GSFC.
Firmware - 1 CMS Upgrade Workshop October SLHC CMS Firmware SLHC CMS Firmware Organization, Validation, and Commissioning M. Schulte, University.
J.P. Wellisch, CERN/EP/SFT SCRAM Information on SCRAM J.P. Wellisch, C. Williams, S. Ashby.
Linux Operations and Administration
Software in the Data Protector Architecture
TEAM FOUNDATION VERSION CONTROL AN OVERVIEW AND WALKTHROUGH By: Michael Mallar.
Testing Infrastructure Wahid Bhimji Sam Skipsey Intro: what to test Existing testing frameworks A proposal.
Briefing and Planning meeting on INSPIRE validator implementation – Discussion 16/12/2015.
Enterprise Oracle Solutions Oracle Report Manager The New ADI and More Revised:June 20091Report Manager/SROAUG Presentation.
Introduction. Internet Worldwide collection of computers and computer networks that link people to businesses, governmental agencies, educational institutions,
Repository Manager 1.3 Product Overview Name Title Date.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
From Source Code to Packages for Various Distributions Andreas Jaeger Program Manager openSUSE
April 1st, 2009 Cobbler Provisioning Made Easy Jasper Capel.
Tools and technology usage in PFMS application lifecycle management process LEPL Financial-Analytical Service, Ministry of Finance October, 2015 Dimitri.
CS5220 Advanced Topics in Web Programming Version Control with Git
Patrick Desbrow, CIO & VP of Engineering October 29, 2014
How to be a SharePoint Developer
Cross-Distribution Packaging Made Easy OSDC 2011, Canberra
Open-O Integration Project Introduction
Stress Free Deployments with Octopus Deploy
Abstract After a SIG has been approved, one of the next steps is to get products out to users. During this talk, Niels will explain how the Storage SIG.
Information Systems and Network Engineering Laboratory II
From Source Code to Packages for Various Distributions
From Source Code to Packages and even whole distributions
CMS DCS: WinCC OA Installation Strategy
(on behalf of the POOL team)
ONYX 12.2.
LECTURE 2: Software Configuration Management
Introduction to Open Build Service SUSE Studio
A technical look at new capabilities and features
Software Documentation
Adding Assignments and Learning Units to Your TSS Course
API Documentation Guidelines
Maintenance module Martin Heigl CTO
LECTURE 3: Software Configuration Management
Dev Test on Windows Azure Solution in a Box
Design and Programming
Git CS Fall 2018.
SharePoint 2010 – SharePoint 101
Open Source Software Development Processes Version 2.5, 8 June 2002
SSDT and Database Project Basics
SUSE Linux Enterprise Desktop Administration
Configuration management
PyWBEM Python WBEM Client: Overview #2
MS Confidential : SharePoint 2010 Developer Workshop (Beta1)
Presentation transcript:

Open Build Service (OBS) Project Workshop My name is …. and I work on the OBS for …. This workshop is for members of open source projects or employees of software vendors that want to use the Open Build Service to deliver not only single packages but large collections of them, for instance a GNU/Linux distribution. It's an interactive workshop that requires you to know, a bit, about the OBS and how to use it. But don't worry I'm here to help you if you need me. In the end you will know a lot of best practices for working on large projects in the OBS. BTW most of the practices we developed together with the openSUSE project and the maintainers of their distributions. So I can garantue you that this is not only theoretics but has been tested on one of the largest Linux distributions out there.

Develop Large Projects

Develop Large Project Best Practices 1 Breaking Projects Down Multi-level review Multi-level integration

Develop Large Projects Breaking Project Down Large projects, like the openSUSE distribution, with many contributors have staging areas where software stacks get integrated Project Devel Project Branched Project devel Package Package Package branch branch Request Request A package may define a staging area (devel project). Modifications can be tested there before breaking the large project. The maintainers can manage themselves in the devel project Submissions can be coordinated

Develop Large Projects Contributor Branch/Submit Terminal X frank@laptop $ osc branch openSUSE:Factory gcal Note: The branch has been created of a different project, Base:System, which is the primary location of where development for that package takes place. That's also where you would normally make changes against. A direct branch of the specified package can be forced with the --nodevelproject option. A working copy of the branched package can be checked out with: osc co home:frank:branches:Base:System/gcal frank@laptop $ osc submitreq -m "Updated gcal to version 3.6" created request id 0815 After Making the Changes

Develop Large Projects Developer Asseses Requests Terminal X you@laptop $ joe@home $ osc request list Base:System 0815 State:new By:frank When:2012-08-16T15:00:14 submit: home:frank:branches:Base:System/gcal -> Base:System Descr: Updated gcal to version 3.6 joe@home $ osc request show -d 0815 ... joe@home $ osc request accept 0815 -m "Thank you for your contribution :-)" Result of change request state: ok joe@home $ osc submitreq Base:System gcal openSUSE:Factory -m "updated to 3.6" created request id 2342 After Integrating the Changes

Collaborating on Packages Assess Requests Terminal X Terminal X martin@work $ osc request list openSUSE:Factory 0815 State:new By:frank When:2012-08-16T15:00:14 submit: home:frank:branches:Base:System/gcal -> Base:System Descr: Updated gcal to version 3.6 martin@work $ osc request accept 0815 -m "Accepted, thank you for the update!" Result of change request state: ok you@laptop $

Develop Large Projects Multi-level review openSUSE:Factory Martin Base:System Joe home:frank Frank Review Review A package may define a staging area (devel project). Modifications can be tested there before breaking the large project. The maintainers can manage themselves in the devel project Submissions can be coordinated

Develop Large Projects Multi-level integration openSUSE:Factory Martin Base:System Joe home:frank Frank Integration Integration A package may define a staging area (devel project). Modifications can be tested there before breaking the large project. The maintainers can manage themselves in the devel project Submissions can be coordinated

Maintain Large Projects

Example: Make an official update home:tom:branches... Incident Request (Source only) Maintenance team approval required openSUSE:Maintenance Reviewer: Factory team? Approver: maintenance team openSUSE:Maintenance:99 Release Request (Source & Binaries) Update ID gets generated openSUSE:X.y:Update Reviewer: QA team Reviewer: Factory team Approver: maintenance team

openSUSE Update Project Layout bc (link) bc.208 (src&bin) patchinfo.208 (src: patchinfo.xml) (bin: updateinfo.xml&rpms) Package Container Code Stream Repository bc.114 (src&bin) Product Update Channel tar (link) tar.114 (src&bin) standard repo Update channel 114 & 208 are incident numbers. 114: one incident for bc & tar package 208: one incident for bc package

Image build using KIWI

OBS KIWI Imaging Source Package Image OBS OBS user submits source to OBS and gets a product

OBS Imageing compared to other KIWI solutions 1/2 Running KIWI manually: All KIWI functionalities are usable. Best way to hack on KIWI. Build happens local. Imaging in Studio: For fast and easy image creation. Easy and integrated testing of the image. Workflow and tool guided image creation. Interactive working style. Server side image creation

OBS Imageing compared to other KIWI solutions 2/2 Imaging in Build Service: Batched processed image building depending on single package build results. Recommended for product/installation medias. Low-Level / Command line interface only. Allows usage of modified kiwi tool or kiwi descriptions in own project. Server side and local building options. Integrating of regular image builds into maintenance process for official products. Supports multiple KIWI version per Image (using it from the projects).

Image Builds from OBS POV OBS knows currently these types of packages: rpm/spec builds deb/dsc builds KIWI Image (aka known as appliance image) KIWI Product Image (aka Installation Media) Planned: QA builds MS Windows builds → Image builds are just another “package” build for the Build Service.

Limitations of Image builds within OBS The OBS has as highest goal a clean and reproducable image build, as soon as possible (eg. not waiting for OpenOffice build when not needed). As a result we have the following limitations compared to plain KIWI usage: Only OBS repositories can be used. Own/modified boot description templates needs to get packaged. Used packages must be unambiguous ! Currently no pattern support. Server may wait for building packages and does not start immediately. → Local osc build works at any time. Non-ISO build results are stored in tar ball, extended with Build number.

How to setup a KIWI repo Create a repository in a project. Enable wanted architectures No other repository needed in project config. KIWI's xml is specifing it. Create project config, setting this repository to Type: kiwi Repotype: none Create a package Submit adapted KIWI config files.

What needs to be changed in KIWI configs for OBS ? The config.xml needs to be suffixed as .kiwi Repositories needs to be specified as obs://$PROJECT/$REPOSITORY obs:// refers always to the used build service. Example: obs://openSUSE:11.1/standard Content of root directory needs to get packaged as root.tar or root.tar.bz2 In case of expansion error “have choice” just select a package and add it to your package list.

Examples openSUSE Factory Live CD in → openSUSE:Factory:Live Project KDE:Media Live CDs in → KDE:Medias Project OBS worker images (netboot deployment) in → openSUSE:Tools Project Product preload rescue disk in → internal Devel:Moblin Project JeOS based on SLES 10 and 11 in → internal Devel:JeOS Project

Future Plans Support patterns Integrate into QA system for testing a produced build automatically (NOT interactive). Connect to SUSE Studio somehow for kiwi config exchange

Installation Media Creation (aka Product Creation)

What are Products ? Products are SUSE specific. Products are medias with plain rpm packages, to be handled via YaST or zypper. The Media may be bootable. Medias can be CD iso files, DVD iso files or FTP trees. The media may support multiple architectures. Examples are the openSUSE 11.1 DVD or the Non-OSS FTP tree Add-On.

A Product from KIWI POV A product KIWI config looks complete different to a system image. (Own section) No automatic dependency solving between packages. It works only with local rpm repositories currently. KIWI needs to deal with RPM package which are used for installation Meta packages (get extracted on the media) Generate meta data

A Product In Detail A typical product media consist of: An rpm repository Meta data Patterns (prepared package selections) Bootable initrd starting YaST for installation Theming EULA / License Information A product may consist of multiple product medias !

Example Product OpenSUSE 11.1 comes as: DVD5 for i586, x86_64 and ppc each DVD9 for i586 and x86_64 together FTP tree for i586 and x86_64 together FTP tree for ppc and ppc64 together NET boot media i586, x86_64 and ppc each OpenSUSE 11.1 Non-OSS comes as: CD for i586, x86_64 and ppc each FTP tree for ppc

The Problem Each product media needs An own kiwi config An own release flavor package Meta packages to be put one the media. This means in each of them is some data which needs to be kept in sync. Like package lists or the Beta/RC version.

The Solution We have product configs in Build Service, specifing all medias for a Product. Multiple Products from one code stream can share definitions(eg SLE-11 or openSUSE:11.1). The OBS product converter creates All kiwi config files A spec file for release packages, including all flavors. Patterns on media (in future) Product definitions are stored in “_product” package, all resulting sources gets generated as “_product:....” packages on checkin time.

Nice New Features KIWI allows to collect automatically all required source and debug packages. Not Yet: One place to maintain package lists for products and patterns. Not Yet: Automatic dependency solving for products optional.

Examples and Documentation openSUSE 11.1 was the first product using this. SLE-11 based products followed. Product Definition wiki pages And of course the general KIWI documentation describing how to create an installation source manually.

Future Adapt KIWI after PDB migration Obsolete some meta packages Obsolete some autobuild tools with native implementation → Significant speed up hopefully Support Driver Update Disks in KIWI Support pattern generation based on product config Code/return value cleanup Media overflow handling ? Optional package dependency resolving ? KIWI remote repository support ?

Learn more about the Open Build Service www.openbuildservice.org