The Mer Wiki now uses your Mer user account and password (create account on https://bugs.merproject.org/)


Mer Delivery System

From Mer Wiki
(Difference between revisions)
Jump to: navigation, search
(WIP)
(Explain MDS)
Line 5: Line 5:
 
MDS is a small collection of tools that both supports distributing Mer
 
MDS is a small collection of tools that both supports distributing Mer
 
binary releases and OBS build targets to vendors and accessing the
 
binary releases and OBS build targets to vendors and accessing the
local copy of the xrelease from a private vendor-managed OBS.
+
local copy of the release from a private vendor-managed OBS.
  
 
= Operations =
 
= Operations =
Line 34: Line 34:
  
 
The tools are updated periodically - simply run  
 
The tools are updated periodically - simply run  
 +
git pull
 +
 +
Eventually:
 
  git remote update
 
  git remote update
 
to update and then
 
to update and then
Line 63: Line 66:
 
  cd release-tools; make update
 
  cd release-tools; make update
  
This will...
+
This will re-synchnronise the package git repos, the OBS projects and
 +
reset the 'latest' link.
  
Running this periodicall will rsync from the upstream project ensure
+
It can be run periodically to ensure that up-to-date changes are
that up-to-date changes are available.
+
available.
  
== Setup an API sercvice for Mer releases ==
+
There is no mechanism at the moment to specify that certain releases
 +
should be made available.
 +
 
 +
== Setup an API service for Mer releases ==
  
 
MDS runs a simple http server that emulates the OBS api for a static release.
 
MDS runs a simple http server that emulates the OBS api for a static release.
Line 76: Line 83:
 
  python tools/fakeobs.py 8001 &
 
  python tools/fakeobs.py 8001 &
  
 +
=== Add the MDS project as a remote link ===
 +
 +
A local OBS can now add a 'remote link' to the MDS API service
 +
(FakeOBS) port 8001, /public, note, http, not-https. So assuming the
 +
MDS is running on a machine called 'mer' then this would work.
 +
 +
<project name="MerDS">
 +
  <title>Mer Delivery System</title>
 +
  <description>A 'remote link' to the MDS API service running against a local copy of Mer
 +
  </description>
 +
  <remoteurl>http://mer:8001/public</remoteurl>
 +
  <person userid="Admin" role="maintainer"/>
 +
  <person userid="Admin" role="bugowner"/>
 +
</project>
  
6. Setup OBS locally on your build environment of choice:
+
=== Use MDS repos as a build target ===
* As VMWare image
+
** download -vmx- image [http://download.opensuse.org/repositories/openSUSE:/Tools/images/ from here]
+
** load into VMWare Player
+
** add Network Adapter (Bridged mode!)
+
** add extra min 12GB HDD and mount it under /var/cache
+
** continue to setup [[Mer_OBS_Setup_Guide#Setting_Up_the_OBS_Install|here, stop before step 5]]
+
* On an existing openSUSE installation ([[OBS_Setup|OBS Setup]])
+
* Building only on VMs: [[Mer_OBS_VM_Setup_Guide|Mer OBS VM Setup Guide]].
+
  
7. Add a remote link for your FakeOBS's server, port 8001, /public, http, not-https ([[Mer_OBS_Setup_Guide#Add_a_remote_link|see how]])
+
Once your project is set-up, you can add Mer build targets to the OBS
 +
and they should start building automatically. Given a setup as above
 +
then a project meta would contain repositories similar to this:
  
8. Follow the rest of [[Mer_OBS_Setup_Guide#Setting_Up_the_OBS_Install|OBS Install]] until the end
+
<project name="MyMerUx">
 +
  <title>MyMerUx</title>
 +
  <description>
 +
  A UX building against Mer
 +
  </description>
 +
  <person userid="Admin" role="maintainer"/>
 +
  <person userid="Admin" role="bugowner"/>
 +
  <repository name="MyMerUX_Mer_Core_i586">
 +
    <path repository="Core_i586" project="MerDS:Core:i586"/>
 +
    <arch>i586</arch>
 +
  </repository>
 +
</project>
  
9. Once your project is set-up, OBS should start building it automatically (use Status Monitor to track the progress)
 
  
 +
You can [https://bugs.merproject.org/enter_bug.cgi?product=Mer%20Core
 +
log a bug] (against the .Release-tools component) or show up in #mer and
 +
poke Stskeeps if there's any questions.
  
Show up in #mer and poke Stskeeps if there's any questions
+
[[Category:mds]][[Category:obs]]

Revision as of 22:48, 29 January 2012

Mer provides the Mer Delivery System (MDS) to make it easy for vendors to track upstream Mer releases.

Contents

Overview

MDS is a small collection of tools that both supports distributing Mer binary releases and OBS build targets to vendors and accessing the local copy of the release from a private vendor-managed OBS.

Operations

MDS tools

Installation

The MDS is installed in the root of the data area which will store the Mer releases (several Gb). This may be a dedicated VM.

Ensure the system has the following installed:

Get the release tools

git clone http://review.merproject.org/p/mer/release-tools

Update

The tools are updated periodically - simply run

git pull

Eventually:

git remote update

to update and then

git checkout vXXX

to obtain the version required.

Mer release(s)

Setup

This step will pull (using rsync) all the git repositories for the Mer packages (nb: this is a huge download).

It will then build a list of the packages, create a set of mappings and prepare the OBS event stream.

Finally the OBS projects are cloned and extracted ready for the API service.

Note: You might need to set rsync proxy:

export RSYNC_PROXY=proxy.company.com:8080
cd release-tools; make

Update

An update simply requires:

cd release-tools; make update

This will re-synchnronise the package git repos, the OBS projects and reset the 'latest' link.

It can be run periodically to ensure that up-to-date changes are available.

There is no mechanism at the moment to specify that certain releases should be made available.

Setup an API service for Mer releases

MDS runs a simple http server that emulates the OBS api for a static release.

To start this 'fake obs server' (hence the original name for the packages):

python tools/fakeobs.py 8001 &

Add the MDS project as a remote link

A local OBS can now add a 'remote link' to the MDS API service (FakeOBS) port 8001, /public, note, http, not-https. So assuming the MDS is running on a machine called 'mer' then this would work.

<project name="MerDS">
 <title>Mer Delivery System</title>
 <description>A 'remote link' to the MDS API service running against a local copy of Mer
 </description>
 <remoteurl>http://mer:8001/public</remoteurl>
 <person userid="Admin" role="maintainer"/>
 <person userid="Admin" role="bugowner"/>
</project>

Use MDS repos as a build target

Once your project is set-up, you can add Mer build targets to the OBS and they should start building automatically. Given a setup as above then a project meta would contain repositories similar to this:

<project name="MyMerUx">
  <title>MyMerUx</title>
  <description>
  A UX building against Mer
  </description>
  <person userid="Admin" role="maintainer"/>
  <person userid="Admin" role="bugowner"/>
  <repository name="MyMerUX_Mer_Core_i586">
    <path repository="Core_i586" project="MerDS:Core:i586"/>
    <arch>i586</arch>
  </repository>
</project>


You can [https://bugs.merproject.org/enter_bug.cgi?product=Mer%20Core log a bug] (against the .Release-tools component) or show up in #mer and poke Stskeeps if there's any questions.

Personal tools