Build Service

From openSUSE

(Redirected from Buildservice)

The openSUSE Build Service is an open and complete distribution development platform that provides infrastructure for a development of the future openSUSE distributions.

The service provides software developers with a tool to create and release open source software for openSUSE and other Linux distributions easily on different hardware architectures and for a broad user audience. Users can easily find the latest open source packages they are looking for and customize them. It provides a bridge between developers and users with feedback and rating functionality. For developers it is an efficient place to build up groups and work together through its project model.

Contents


Features


In the introduction section above, we mentioned that the Build Service is a complete distribution development platform providing the infrastructure required for development of future openSUSE based distributions.

It also features services that enable compilation and packaging for the other Linux distributions, like Fedora, Debian, Ubuntu, and many more.

Users of openSUSE can easily browse through user side of the web interface http://software.opensuse.org/ and download the latest packages.

Open interfaces allow external services (e.g. SourceForge) and web pages to interface with the Build Service and to use its resources.

In an advanced state, it will be accessible to anybody equipped with user/trust management and will be able to create further build targets (e.g. LSB, Xen images).


Advantages


For Users

  • Always get the newest software versions for their distribution. Using a trust relationship in the build service, the user can declare "I trust the Project xy" and can afterwards install packages only from this project.
  • Getting upgrades for older distributions. (Like getting a new KDE 3.5.7 for SL 10.0)
  • More unification between the different distributions. Packages from the build service can bring people together - thinking about "Why do they do such things? Why do they use these directories? - I want to get it for my distribution, too". (But this is something for the future... :-)

You can easily find and install software via the End User Interface. Additionally you can also install manually via any package manager, have a look here for detailed instructions.

Look at the video.

For Developers

openSUSE Build Service Developer Web Interface
Enlarge
openSUSE Build Service Developer Web Interface
  • No "compiler farms" of different hardware needed to build a package for different architectures.
  • Produce better software: some software-projects still use 16bit processes and wonder why their code doesn't compile on 32bit or 64bit platforms.
  • Automatic resolving of dependencies to other packages. If a package depends on another package, this package will be triggered for a rebuild automatically if the depending package is rebuilt.
  • Linking to other projects: Patches can be tested with the newest packages from other projects. For example: a developer has a patch for Amarok and wants to test it in a defined environment. He can create a link to the KDE project and use it as environment for his own tests. The result: his patched version of Amarok will always be triggered for a rebuild when the KDE project initiates a new build.

For embedded Developers

The OBS version supporting cross-development with qemu emulator is released in the normal OBS Code. Also, arm support has been activated in the public OBS. The use of the local build feature via osc/build is also fully supported. For a technical information read the Cross Development Concept and Example. For QEMU use, up to ARMv7 EABI and VFPv3 is in a usable state. Three classes exist in the scheduler for arm: armv4l, armv5el and armv7el.

There is a second approach used for powerpc architectures. PowerPC is a well supported server architecture, and the OBS also supports the use of native local builds and also worker build on powerpc machines. Due to security restrictions, the powerpc workers in the public OBS are not yet for public use. See the [[Build_Service/Roadmap OBS|Roadmap] for more details what is missing and when it will be available. Nevertheless, powerpc can be used now in private OBS installations if you have a powerpc machine running Linux for the OBS workers, or the local build process (chrooted OBS workers, local builds).

For Distributors

The Build Service is able to create complete distributions or modified images easily to be used in different ways. A first version of KIWI to create images for booting via network or to be used as Xen or VMware image has been released.

Roadmap


We have a Roadmap and we also maintain a log of smaller changes as well as some green-fields Concepts.

A list of proposed features is available in openFATE.

How to Use It


The Build Service Manual is available online, and currently a work in progress. The DocBook source to the manual is available via SVN (see below) and patches are welcome.

openSUSE Build Service Developer Web Interface
Enlarge
openSUSE Build Service Developer Web Interface

The Build Service can be used either via the Web Interface, via the Command Line Tool or any other tool using the public API. Packagers might also want to read the cross distribution package how to and the Build Service Tutorial.

To log into the Build Service you have to use your Novell account. For more information about login process, please read the login section in the Build_Service/Tutorial.

Some hints can be found on the Build Service Tips & Tricks site.


Google Summer of Code


There are a couple of proposals for projects related to the Build Service for Google's Summer of Code 2009. See the Build Service ideas on the GSoc page.

Projects of previous years:

Build Service Source Code


SVN Repository

The source and documentation of the Build Service tools is hosted on forge.novell.com. This repository contains the sources for the client tools as well the sources for the servers.

Use this command to check out the current source code:

svn co https://forgesvn1.novell.com/svn/opensuse/trunk/buildservice

Packages

Packages are around in the buildserver. The packages can be found in the openSUSE:/Tools repository. Look for packages named obs-* (openSUSE Build Server).

How To Contribute

As with most open source projects, please start to write patches or a concept what you plan to develop. People who have proven to deliver working code will get write access to the SVN repository.

There are some smaller projects which are a good start for discovering the code and joining the development team.

Documentation

  • The Tutorial wiki page shows the first steps to create your own projects and packages.
  • You can find the latest information on the News site.
  • We do provide two talks from FOSDEM about the Build Service. The first talk gives an overview about the idea of the Build Service and its architecture. The second talk describes the project model in detail and explains how to build for multiple distributions, including openSUSE, Fedora, Mandriva and Debian.
  • An important piece is the documentation for the API. The API is a simple and generic interface to work with the Build Server. You may use it to integrate it into your tools to submit code updates, check the current state of your projects or doing something very different and cool.
  • You do not like our Web Frontend or command line tool ? You can either improve it or write your own. The source for both is as well available in the forge repository.

Contact

Subscribe to the opensuse-buildservice mailing list (archive). Feedback is welcome, even more welcome are patches, new tools and new ideas.

Some of us do also hang around in #openSUSE-buildservice channel on freenode.

You can report bugs for the build service through Bugzilla.

Your openSUSE Build Service Team

Build Service Clients


The architecture based on a REST API allows to write different clients easily. That gives us the chance to address the needs of users with different experience. The clients can put different emphases on different usecases.

Web Client

The Web-based client for the openSUSE Build Service gives easy access to all the functions of the Build Service, and is the most complete graphical interface.

Command Line Clients

The osc commandline client gives access to all functions of the Build Service, and is the most complete command line interface:

Additionally, if you're a build service developer, you might be interested in using the build service rest API directly via curl:

KDE Rich Client

There has been a Google Summer of Code project that started to implement a KDE Rich Client, for more information see Rich Client

Graphical user interface (GUI) and Framework MonoOSC project logo from Robert Lihm <rlihm@suse.de>

openSUSE Build Service Developer Graphical User Interface
Enlarge
openSUSE Build Service Developer Graphical User Interface

MonoOSC is a project composed of two parts. A CSharp, C#, library used to access the openSUSE Build Service, OBS. The second part is a nice GUI which uses this library. MonoOSC requires the Mono 2.1 version of the distribution. more info can be find here (developpement in progress) : http://sourceforge.net/projects/monoosc/

openSUSE Build Service Repository : http://download.opensuse.org/repositories/home:/surfzoid/

PoweredBy Users

Build_Service/PoweredBy - list of people running local version of the openSUSE Buildservice