[Buildbot-devel] mutliple svn branches

David Froger david.froger at gmail.com
Tue Nov 22 08:36:33 UTC 2011


Hy,

I'm new to buildbot, so sorry if the answer is evident...

What I'm trying to do is:

    svn checkout https://path/to/my/repo/trunk trunk
    svn checkout https://path/to/my/repo/data other_data_name

    cd trunk
    make
    ./configure

    cd trunk/tests/test0
    make test # read data from ../../../other_data_name


The documentation

    http://buildbot.net/buildbot/docs/current/manual/cfg-buildsteps.html

says:

    Alternatively,  if you are building from multiple branches,  then you should
    preferentially  create  the SVN  step  with  the  baseURL  and defaultBranch
    arguments instead:


I'm trying to  to so.  With the below master.cfg,  the  first SVN step correctly
download trunk branch.  I  expect  the  second  SVN  step  to  download the data
branch, but it just update the trunk branch.

I don't understand how %%BRANCH%% is set.  The doc of baseURL says:

    For flexibility,  baseURL may contain  a %%BRANCH%% placeholder,  which will
    be  replaced  either  by  the  branch  in  the  SourceStamp  or  the default
    specified in defaultBranch.

Does it means I have to set a SourceStamp for "trunk" and another for "data" ?

So my two questions are:

   - how to download both "trunk" and "data" branches?

   - Is it possible to download branch "data" into a directory "other_data_name", 
     like with the command line:
         svn checkout https://path/to/my/repo/data other_data_name ?
     I tried to use extra_args, but it ends up with something like:
         svn checkout https://path/to/my/repo/data . options extra_args

Thanks for reading and for any help.

Best regards,
David.



The master.cfg file:

c = BuildmasterConfig = {}

import os

####### BUILDSLAVES
from buildbot.buildslave import BuildSlave
c['slaves'] = [BuildSlave("ubuntu-10.04", "MX412%,")]
c['slavePortnum'] = 9989

####### CHANGESOURCES
# I do not setup change_source, because I'm forcing build manually
from buildbot.changes.svnpoller import SVNPoller

####### SCHEDULERS
# I do not setup schedulers, because I'm forcing build manually
c['schedulers'] = []

####### BUILDERS
from buildbot.process import factory
f = factory.BuildFactory()

# check out the source
from buildbot.steps.source.svn import SVN

#checkout source code
f.addStep( \
    SVN( \
        baseURL='https://path/to/my/repo/%%BRANCH%%',
        defaultBranch='trunk',
        username="myusername",
        password="mypassword",
        mode='incremental',
        haltOnFailure=True,
    ),
)

f.addStep( \
    SVN( \
        baseURL='https://path/to/my/repo/%%BRANCH%%',
        defaultBranch='data',
        username="myusername",
        password="mypassword",
        mode='incremental',
        haltOnFailure=True,
    ),
)

# configure
from buildbot.steps import shell
f.addStep( \
    shell.Configure( \
        workdir='./build/trunk',
        haltOnFailure=True,
    ),
)

# compile
f.addStep( \
    shell.Compile( \
        command=["make",],
        workdir='./build/trunk',
        haltOnFailure=True,
    ),
)

# run the tests (note that this will require that 'trial' is installed)
from buildbot.steps.shell import Test
f.addStep( \
    Test( \
        command=["make","test",]
        workdir='build/trunk/tests/test0',
    ),
)

from buildbot.config import BuilderConfig

c['builders'] = []
c['builders'].append(
    BuilderConfig(
      name="runtests",
      slavenames=["ubuntu-10.04"],
      factory=f,
      )
    )

####### STATUS TARGETS
c['status'] = []
from buildbot.status import html
from buildbot.status.web import authz
authz_cfg=authz.Authz(
    # change any of these to True to enable; see the manual for more
    # options
    gracefulShutdown = False,
    forceBuild = True, # use this to test your slave once it is set up
    forceAllBuilds = False,
    pingBuilder = False,
    stopBuild = False,
    stopAllBuilds = False,
    cancelPendingBuild = False,
)
c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg))
c['title'] = "myproject"
c['titleURL'] = "mywebsite"
c['buildbotURL'] = "http://localhost:8010/"

####### DB URL
c['db_url'] = "sqlite:///state.sqlite"
-- 




More information about the devel mailing list