The Mer Wiki now uses your Mer user account and password (create account on https://bugs.merproject.org/)
Mer Delivery System
(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 | + | 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. | ||
− | + | It can be run periodically to ensure that up-to-date changes are | |
− | that up-to-date changes are available. | + | available. |
− | == Setup an API | + | 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> | ||
− | + | === 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. | ||
− | + | [[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:
- git
- python
- make
- smmap: http://pypi.python.org/pypi/smmap
- async: http://pypi.python.org/pypi/async
- gitdb: http://pypi.python.org/pypi/gitdb
- gitpython homepage: http://pypi.python.org/pypi/GitPython/0.3.2.RC1
- gitpython install guide: http://packages.python.org/GitPython/0.3.2/intro.html#installing-gitpython
- cpio
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.