Make the following changes to master.cfg:
Connect to the buildslave
c['slaves'] = [BuildSlave("BuildSlave01", "mysecretpwd")]
Track repository – GitPoller
The gitpoller periodically fetches from a remote git repository and process any changes.from buildbot.changes.gitpoller import GitPoller c['change_source'] = [] c['change_source'].append(GitPoller( 'https://git01.codeplex.com/forks/mariangemarcano/xunit', gitbin='C:\\Program Files (x86)\\Git\\bin\\git.exe', workdir='gitpoller_work', pollinterval=300))
Add scheduler
There are different types of schedulers supported by buildbot and you can customize it. Let’s add a single branch scheduler to run the build whenever a change is committed to the repository and knightly schedulers to run the build once a day.from buildbot.schedulers.basic import SingleBranchScheduler from buildbot.schedulers.timed import Nightly from buildbot.changes import filter c['schedulers'] = [] c['schedulers'].append(SingleBranchScheduler( name="Continuous", change_filter=filter.ChangeFilter(branch='master'), treeStableTimer=3*60, builderNames=["Continuous"])) c['schedulers'].append(Nightly( name="Ninghtly", branch='master', hour=3, minute=30, onlyIfChanged=True, builderNames=["Ninghtly"]))
Define a Build Factory
It contains the steps that a build will follow. In our case, we need to get source from repository, compile xunit.net projects and run the tests.Get source from repository: Let’s do an incremental update for continuous build and compile debug; the full build will do a full repository checkout and compile using release configuration. The git factory needs to access git binaries, set the environment path to where you install it for example: C:\Program Files (x86)\Git\bin\.
Compile xunit.net and run tests: Let’s compile using MSbuild.exe and run the tests with xunit.console.exe. By setting flunkOnFailure=False/warnOnFailure=True, test failures will mark the overall build as having warnings.
from buildbot.process.factory import BuildFactory from buildbot.steps.source.git import Git from buildbot.steps.shell import ShellCommand def MSBuildFramework4(factory, configuration, projectdir): factory.addStep(ShellCommand(command=['%windir%\\Microsoft.NET\\Framework\\v4.0.30319\\MSbuild.exe', 'xunit.msbuild', '/t:Build', '/p:Configuration=%s' % configuration], workdir=projectdir, name="Compile xunit.net projects", description="Compiling xunit.net projects", descriptionDone="Copile xunit.net projects done")) def RunTests(factory, testproject, configuration, testdirectory): factory.addStep(ShellCommand(command=['src\\xunit.console\\bin\\%s\\xunit.console.exe' % configuration, '%s\\%s' % (testdirectory, testproject), "/html", "%s\\testresults.html" % testdirectory], workdir='build\\', name="Run %s" % testproject, description="Running %s" % testproject , descriptionDone="Run %s done" % testproject, flunkOnFailure=False, warnOnFailure=True)) factory_continuous = BuildFactory() factory_continuous.addStep(Git(repourl='https://git01.codeplex.com/forks/mariangemarcano/xunit', mode='incremental')) MSBuildFramework4(factory_continuous, 'Debug', 'build\\') RunTests(factory_continuous, 'test.xunit.dll', 'Debug', 'test\\test.xunit\\bin\\Debug') RunTests(factory_continuous, 'test.xunit.gui.dll', 'Debug', 'test\\test.xunit.gui\\bin\\Debug') factory_ninghtly = BuildFactory() factory_ninghtly.addStep(Git(repourl='https://git01.codeplex.com/forks/mariangemarcano/xunit', mode='full', method='clobber')) MSBuildFramework4(factory_ninghtly, 'Release', 'build\\') RunTests(factory_ninghtly, 'test.xunit.dll', 'Release', 'test\\test.xunit\\bin\\Release') RunTests(factory_ninghtly, 'test.xunit.gui.dll', 'Release', 'test\\test.xunit.gui\\bin\\Release')
Builder Configuration
from buildbot.config import BuilderConfig c['builders'] = [] c['builders'].append( BuilderConfig(name="Continuous", slavenames=["BuildSlave01"], factory=factory_continuous)) c['builders'].append( BuilderConfig(name="Ninghtly", slavenames=["BuildSlave01"], factory=factory_ninghtly))
Status notifications
You could also add MailNotifier to configure mail notifications.c['status'] = [] from buildbot.status import html from buildbot.status.web import authz, auth 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 = True, stopBuild = True, stopAllBuilds = False, cancelPendingBuild = True, ) c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg))
Every commit done will trigger a continuous build that automatically compiles and runs tests. In the waterfall page you can see the people who has committed changes to the branch (view image bellow).
Click on the person’s name to view commit’s detail information like repository, branch and revision. At the bottom there is a list of changed files. This is very helpful to track down any failures (view image bellow).
On my next blog post I’ll show you how to add customizations.
Excellent Blog! I would like to thank for the efforts you have made in writing this post. I am hoping the same best work from you in the future as well. I wanted to thank you for this websites! Thanks for sharing. Great websites!
ReplyDelete360Digitmg business analytics training in hyderabad