summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Holland <william.holland@codethink.co.uk>2015-09-18 08:38:02 +0100
committerWill Holland <william.holland@codethink.co.uk>2015-09-18 08:38:02 +0100
commit933d275fc5759d8872cdf32832782fd84dc7d210 (patch)
tree362681ec2b0a8ed1ca2fdcfd04783956cce97390
parent7e8c7437fd55b4be79dec083684a846d630e814e (diff)
downloadorchestration-933d275fc5759d8872cdf32832782fd84dc7d210.tar.gz
Add Column abstraction to buildbot
This will make it easier to tweak CIAT
-rw-r--r--source/bottlerock.py2
-rw-r--r--source/master.cfg97
-rw-r--r--source/orch_config.py62
3 files changed, 72 insertions, 89 deletions
diff --git a/source/bottlerock.py b/source/bottlerock.py
index 3a34e4b..28d584d 100644
--- a/source/bottlerock.py
+++ b/source/bottlerock.py
@@ -5,7 +5,7 @@
from bottle import post, request, run, HTTPResponse
import imp
-orch_config = imp.load_source('module.name', '../source/orch_config.py')
+orch_config = imp.load_source('orch_config', '../source/orch_config.py')
LOGFILE = '../orch.log'
DEFINITIONS = 'ssh://git@cu010-trove.codethink.com/baserock/baserock/definitions'
diff --git a/source/master.cfg b/source/master.cfg
index 162df0f..8f2cf99 100644
--- a/source/master.cfg
+++ b/source/master.cfg
@@ -39,7 +39,7 @@ c['change_source'].append(PBChangeSource(
from buildbot.changes.filter import ChangeFilter
import imp
-orch_config = imp.load_source('module.name', '../../source/orch_config.py')
+orch_config = imp.load_source('orch_config', '../../source/orch_config.py')
categories = {}
for _c in orch_config.categories:
@@ -54,26 +54,12 @@ from buildbot.schedulers.basic import SingleBranchScheduler
from buildbot.schedulers.forcesched import ForceScheduler
from buildbot.changes import filter
c['schedulers'] = []
-c['schedulers'].append(SingleBranchScheduler(
- name = "trigger_firehose_sched",
- change_filter = categories['repo_update'],
+for column in orch_config.columns:
+ c['schedulers'].append(SingleBranchScheduler(
+ name = "%s_sched" % column.category,
+ change_filter = categories[column.category],
treeStableTimer = None,
- builderNames = ["1. Integration"]))
-c['schedulers'].append(SingleBranchScheduler(
- name = "trigger_builders_sched",
- change_filter = categories['definitions_update'],
- treeStableTimer = None,
- builderNames = ["2. Build"]))
-c['schedulers'].append(SingleBranchScheduler(
- name = "trigger_deploy_sched",
- change_filter = categories['build_complete'],
- treeStableTimer = None,
- builderNames = ["3. Deploy"]))
-c['schedulers'].append(SingleBranchScheduler(
- name = "trigger_testing_sched",
- change_filter = categories['deploy_complete'],
- treeStableTimer = None,
- builderNames = ["4. Test"]))
+ builderNames = [column.name]))
####### BUILDERS
@@ -81,75 +67,14 @@ c['schedulers'].append(SingleBranchScheduler(
# what steps, and which slaves can execute them. Note that any particular build will
# only take place on one slave.
-from buildbot.process.factory import BuildFactory
-from buildbot.steps.shell import ShellCommand
-from buildbot.plugins import steps, util
-
-firehose_factory = BuildFactory()
-firehose_factory.addStep(steps.Git(
- repourl=orch_config.buildslave_scripts,
- mode='incremental'))
-repo_name = util.Property('repo_name',default="no repo name given")
-firehose_cmd = ["sh","triggers/firehose_trigger.sh",repo_name]
-firehose_factory.addStep(ShellCommand(command=firehose_cmd))
-
-builders_factory = BuildFactory()
-builders_factory.addStep(steps.Git(
- repourl=orch_config.buildslave_scripts,
- mode='incremental'))
-builders_factory.addStep(ShellCommand(command=["sh","get_definitions.sh"]))
-force = util.Property('force',default="")
-builders_cmd = ["sh","triggers/builders_trigger.sh",force]
-builders_factory.addStep(ShellCommand(command=builders_cmd,
- timeout=orch_config.build_timeout))
-
-deploy_factory = BuildFactory()
-deploy_factory.addStep(steps.Git(
- repourl=orch_config.buildslave_scripts,
- mode='incremental'))
-deploy_factory.addStep(ShellCommand(command=["sh","get_definitions.sh"]))
-system = util.Property('system',default="no system given")
-buildslave_scripts_sha = util.Property('buildslave_scripts_sha',default="no buildslave-scripts sha given")
-definitions_sha = util.Property('definitions_sha',default="no definitions sha given")
-testing_sha = util.Property('testing_sha',default="no testing sha given")
-buildnumber = util.Property('buildnumber',default=0)
-deploy_cmd = ["sh","triggers/deploy_trigger.sh",
- system,
- buildnumber,
- buildslave_scripts_sha,
- definitions_sha,
- testing_sha]
-deploy_factory.addStep(ShellCommand(command=deploy_cmd,
- timeout=orch_config.deploy_timeout))
-
-testing_factory = BuildFactory()
-testing_factory.addStep(steps.Git(
- repourl=orch_config.buildslave_scripts,
- mode='incremental'))
-artefact = util.Property('artefact',default=0)
-testing_sha = util.Property('testing_sha',default="no_testing_sha_given")
-testing_cmd = ["sh","triggers/testing_trigger.sh",artefact,testing_sha]
-testing_factory.addStep(ShellCommand(command=testing_cmd))
-
from buildbot.config import BuilderConfig
c['builders'] = []
-c['builders'].append(
- BuilderConfig(name="1. Integration",
- slavenames=["example-slave"],
- factory=firehose_factory))
-c['builders'].append(
- BuilderConfig(name="2. Build",
- slavenames=["example-slave"],
- factory=builders_factory))
-c['builders'].append(
- BuilderConfig(name="3. Deploy",
- slavenames=["example-slave"],
- factory=deploy_factory))
-c['builders'].append(
- BuilderConfig(name="4. Test",
- slavenames=["example-slave"],
- factory=testing_factory))
+for column in orch_config.columns:
+ c['builders'].append(
+ BuilderConfig(name=column.name,
+ slavenames=["example-slave"],
+ factory=column.factory))
####### STATUS TARGETS
diff --git a/source/orch_config.py b/source/orch_config.py
index 4ecf94d..846d37e 100644
--- a/source/orch_config.py
+++ b/source/orch_config.py
@@ -4,8 +4,66 @@ categories = [
'build_complete',
'deploy_complete']
+buildslave_scripts = 'git://cu010-trove.codethink.com/cu010-trove/br6/buildslave-scripts.git'
+
+class Column:
+ def __init__(self,
+ name,
+ category,
+ trigger,
+ properties,
+ get_definitions=False):
+ self.name = name
+ self.category = category
+ self.trigger = trigger
+ self.properties = properties
+ self.get_definitions=get_definitions
+
+ from buildbot.process.factory import BuildFactory
+ from buildbot.steps.shell import ShellCommand
+ from buildbot.plugins import steps, util
+
+ self.util_properties = []
+ for property in self.properties.items():
+ self.util_properties.append(
+ util.Property(property[0],default=property[1]))
+
+ self.factory = BuildFactory()
+ self.factory.addStep(steps.Git(
+ repourl=buildslave_scripts,
+ mode='incremental'))
+ self.cmd = ['sh',self.trigger]+self.util_properties
+ if self.get_definitions:
+ get_defns_cmd = ['sh','get_definitions.sh']
+ self.factory.addStep(ShellCommand(command=get_defns_cmd))
+ self.factory.addStep(ShellCommand(command=self.cmd))
+
+columns = [
+ Column( name = "1. Integration",
+ category = "repo_update",
+ trigger = 'firehose_trigger.sh',
+ properties = {'repo_name':'no repo name given'}),
+ Column( name = "2. Build",
+ category = "definitions_update",
+ trigger = 'builders_trigger.sh',
+ properties = {"force":""}),
+ Column( name = "3. Deploy",
+ category = "build_complete",
+ trigger = 'deploy_trigger.sh',
+ properties = {
+ 'system':'no system give',
+ 'buildnumber':0,
+ 'buildslave_scripts_sha':'no buildslave-scripts SHA given',
+ 'definitions_sha':'no definitions SHA given',
+ 'testing_sha':'no testing SHA given'}),
+ Column( name = "4. Test",
+ category = "deploy_complete",
+ trigger = 'testing_trigger.sh',
+ properties = {
+ 'artefact':'no artefact given',
+ 'testing_sha':'no testing SHA given'})]
+
build_timeout = 1800
deploy_timeout = 1800
-buildslave_scripts = 'git://cu010-trove.codethink.com/cu010-trove/br6/buildslave-scripts.git'
web_user = "codething"
-web_password = "password"
+web_user_password = "password"