Mailinglist Archive: opensuse-buildservice (258 mails)

< Previous Next >
[opensuse-buildservice] Integrating SCM with OBS
  • From: <brook.hong@xxxxxxxxx>
  • Date: Fri, 13 Aug 2010 10:45:36 +0200
  • Message-id: <74F2BFCC65034E4BAB1856275FB128ED2732E14BC5@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Hi ALL,

I had started a discussion about integrating SCM with OBS in our company.

And now when I checked back http://en.opensuse.org/Category:Build_Service, I
found there was an interesting wiki
page(http://en.opensuse.org/openSUSE:Build_Service_Concept_GitUpstreamSupport)
talking about the similar task, also noticed that some of you have started
relevant work.

Here I would like share my thoughts. Follows my writing in my earlier emails.
======================================
For example, we would like to have Meego OBS to build a package -- gstreamer,
which is located at http://git.gitorious.org/maemo-multimedia/gstreamer.git.

With current OBS, we need fetch all the code from gitorious, create a
compressed tar file, then upload the tar file, spec/dsc file to OBS source
server, these files will go into /srv/obs/sources/gstreamer/. OBS
scheduler(bs_sched) will detect the file change, and trigger a rebuild.

If source repository URL is included in the meta file of this package as below

<package project="devel" name="gstreamer">
<title>gstreamer</title>
<description>gstreamer</description>
<sources>http://git.gitorious.org/maemo-multimedia/gstreamer.git</sources>
</package>

Then create a new server in OBS, may be named as bs_scmagent, which focuses on
the following tasks --
* maintain a package list for all the packages whose meta data file includes a
source repository URL,
* connect to SCM server to detect code change,
* if changed, fetch code from SCM, tar them, put the new file into
/srv/obs/sources/gstreamer/, let bs_sched to trigger a rebuild.

bs_scmagent needs to support plugin, which is to give support for different
kinds of SCM.

For compatibility, a special value is needed to indicate that the files were
uploaded manually.

<package project="devel" name="gstreamer">
<title>gstreamer</title>
<description>gstreamer</description>
<sources>native</sources>
</package>


How to detect code change? For git, Polling seems to be the only solution
since it is distributed version control system.
Thus, we need tune up the polling way for performance consideration.
* polling not that frequently, for example, once n hours(n can be configured
from webui or osc, and is limited between a range)
* if developer wants his code change being built immediately, an osc action
will be involved, he can run "osc remoteupdatesource gstreamer" to tell
bs_scmagent to get latest code.
======================================

"osc git refresh" mentioned in
http://en.opensuse.org/openSUSE:Build_Service_Concept_GitUpstreamSupport seems
much like "osc remoteupdatesource" I proposed.

I like the idea of generating a diff from SCM as a patch for spec file, but I
don't like "git" as an action of "osc".
I prefer the interfaces to be clear, osc is osc, git is git, don't mess them up.
Also how about other SCMs except git?

What's your progress now?

----------------
Best Regards,
Brook Hong


--
To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-buildservice+help@xxxxxxxxxxxx

< Previous Next >
Follow Ups