[Buildbot-devel] Setup of client's environment from client

Amber Yust ayust at yelp.com
Thu May 19 19:48:07 UTC 2011


Makefiles and make targets are useful things for having setup like this
coupled with the actual process.

Ideally, your ShellCommands would look like this:

ShellCommand(['make', 'test'])

~Amber

On Thu, May 19, 2011 at 12:45 PM, Philippe McLean <philippe.mclean at gmail.com
> wrote:

> my approach would be
>
> - reduce the number of required environment variables to a minimum
> (relative to some base path is convenient)
> - set build slave global environment variables on the build slave itself.
> That becomes part of your build slave setup. Usually unavoidable on windows.
> - create a bat/py front end in the source tree that does per build
> environment and execution (even better if your developers use this same
> script/setup)
> - use buildbot step environment variables for customization on each step
> - keep master.cfg as simple as possible
> - upgrade buildbot
>
> Every build step displays its environment in its log, so it's easy to find
> out what environment was created.
>
> On Thu, May 19, 2011 at 12:32 PM, Trask <trask at techsoft3d.com> wrote:
>
>> On 05/19/2011 12:17 PM, Philippe McLean wrote:
>>
>>> what are some examples of things you need to configure in the
>>> environment?
>>>
>>> On Thu, May 19, 2011 at 12:14 PM, Trask <trask at techsoft3d.com
>>> <mailto:trask at techsoft3d.com>> wrote:
>>>
>>>
>>>    * Buildbot: 0.8.3p1
>>>    * Twisted: 10.1.0
>>>    * Jinja: 2.5.2
>>>    * Python: 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) [GCC 4.4.5]
>>>    * Buildmaster platform: linux2
>>>
>>>    In order to follow best practices I am working to capture all
>>>    configuration information within the source itself so that it is
>>>    versioned, tagged, etc right along with everything else.
>>>
>>>    One particular part has been giving me problems: how to set up the
>>> slave
>>>    environment based upon code it has checked out in a buildstep. If I
>>> set
>>>    everything in master.cfg on the buildmaster, everything works fine,
>>>    however that does not capture the configuration data within the
>>>    ever-changing source.
>>>
>>>    My original idea was to run a "setup-environment.py" script which
>>> would
>>>    always be run prior to the other build steps. This doesn't work
>>> because
>>>    it is only modifying the environment for it's own process. Even if it
>>>    did modify the global environment that is not ideal due to likely
>>>    collisions with simultaneous usage of the machine.
>>>
>>>    My next attempt was to encapsulate every command within a "setup-env"
>>>    script. You pass the command to run to the script as an argument and
>>>    then it sets up the environment and then runs the command. I've gotten
>>>    this to work to a degree but is clearly not the proper way to
>>> accomplish
>>>    what I am trying to do.
>>>
>>>    BuildProperties seems promising but I haven't thought of a clean way
>>> to
>>>    use them. I could imagine running the "setup-env" script, having it
>>>    spit out the proper environment settings to use and then using
>>>    "SetProperty" with a custom function to set Properties which THEN get
>>>    translated into environment settings on the client. Hmmph.
>>>
>>>    This seems like an issue that would crop up for a lot of people so I
>>> am
>>>    interested in hearing how other people have solved this.
>>>
>>>    Thanks for any help!
>>>
>>>    ~Trask
>>>
>>>
>> Primarily it is 3rd party SDK locations, such as:
>>
>> MAXSDK_2011_INSTALL_DIR=C:\build\resources\3dsmax\3dsmax2011\maxsdk
>>
>> PARASOLID_INSTALL_DIR=C:\build\resources\parasolid\parasolid_23.0.156\intel_nt\base
>>
>> Most everything else that has traditionally used environment variables
>> could be provided on the command line to the build scripts.  These SDK dirs,
>> however, need to be configured in the environment for the builds to work.
>>
>> There are about 15 like this which each vary slightly upon the compiler
>> and 32 vs. 64 bit build.  Despite this variance, *these* will be the same on
>> any machine that does that same build.  However, there are other directories
>> that will always be different on a per-machine basis.
>>
>> I *could* do all of this setup on the master since the location of
>> everything is planned, but then that would mean I would be keeping
>> configuration data separate from the source itself.
>>
>> This isn't necessarily wrong but I have felt like the best long-term
>> solution is to keep the configuration with the source.  I guess this will
>> always have the flaw of the buildbot source moving on as well... Like: in 3
>> years if I want to build today's source, will I use "Buildbot 2014" to build
>> it or use a versioned install of Buildbot from May 19th 2011?  Does anyone
>> else plan for this sort of possibility?
>>
>> ~Trask
>>
>
>
>
> ------------------------------------------------------------------------------
> What Every C/C++ and Fortran developer Should Know!
> Read this article and learn how Intel has extended the reach of its
> next-generation tools to help Windows* and Linux* C/C++ and Fortran
> developers boost performance applications - including clusters.
> http://p.sf.net/sfu/intel-dev2devmay
> _______________________________________________
> Buildbot-devel mailing list
> Buildbot-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/buildbot-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://buildbot.net/pipermail/devel/attachments/20110519/3e198d45/attachment.html>


More information about the devel mailing list