summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Holland <william.holland@codethink.co.uk>2015-09-10 12:40:55 +0100
committerWill Holland <william.holland@codethink.co.uk>2015-09-10 12:48:20 +0100
commit1868baf1ba3602ce7cef3b59eccab1b499cfb6a5 (patch)
tree5f5a4bd41609dc09a6f0863a6aaf151b70079fa5
parentbedbbf7b0cc9dc418c5e0c20a7be59365798a876 (diff)
downloadbuildslave-scripts-1868baf1ba3602ce7cef3b59eccab1b499cfb6a5.tar.gz
Add script to manage build and deploy on trigger
-rw-r--r--builder_logic.py59
-rw-r--r--triggers/builders_trigger.sh1
2 files changed, 60 insertions, 0 deletions
diff --git a/builder_logic.py b/builder_logic.py
new file mode 100644
index 0000000..8f3b56c
--- /dev/null
+++ b/builder_logic.py
@@ -0,0 +1,59 @@
+import subprocess
+
+ORCHE_URL = 'http://127.0.0.1:8080/'
+BUILD_SCRIPT = 'bild_a_system.sh'
+DEPLOY_SCRIPT = 'deploy_a_system.sh'
+DEFINITIONS_DIR='/home/patrickdarley/definitions'
+
+whitelist = [
+ 'clusters/tlsa.morph',
+ 'systems/base-system-x86_64-generic.morph',
+ 'strata/build-essential.morph',
+ 'strata/core.morph',
+ 'strata/foundation.morph',
+ 'strata/bsp-x86_64-generic.morph',
+ ]
+
+def files_changed():
+ ''' return a list of files changed in latest commit to definitions'''
+ import os
+ owd = os.getcwd()
+ os.chdir(DEFINITIONS_DIR)
+ cmd = ['git', 'diff', '--name-only', 'HEAD~1', 'HEAD']
+ p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+ out, err = p.communicate()
+ os.chdir(owd)
+ return out.split()
+
+def find_systems_affected_by_change():
+ # TODO for each file changed, separate into chunks, strata, systems and clusters
+ # TODO for each strata get it's system
+ pass
+
+def find_clusters_affected_by_change():
+ changed systems = find_systems_affected_by_change()
+ # TODO for each system get it's custers
+
+def build(system):
+ return subprocess.call(['sh','%s' % BUILD_SCRIPT, '%s' % system])
+
+def deploy(cluster):
+ return subprocess.call(['sh','%s' % DEPLOY_SCRIPT, '%s' % cluster])
+
+def trigger_testing(build_id):
+ import requests
+ global url
+ url = '%sbuild_complete' % ORCHE_URL
+ payload = {'artefact':build_id}
+ r = requests.post(url,data=payload)
+ return r.ok
+
+if __name__ == '__main__':
+ _files_changed = files_changed()
+ for f in _files_changed:
+ if f in whitelist:
+ build_exit_val = build('systems/base-system-x86_64-generic.morph')
+ if build_exit_val: exit(build_exit_val)
+ deploy_exit_val = deploy('clusters/tlsa.morph')
+ if deploy_exit_val: exit(deploy_exit_val)
+ exit(trigger_testing())
diff --git a/triggers/builders_trigger.sh b/triggers/builders_trigger.sh
index 71d2ea0..0d99b02 100644
--- a/triggers/builders_trigger.sh
+++ b/triggers/builders_trigger.sh
@@ -1 +1,2 @@
echo "[$(date "+%F %R")] Builder triggered." >> ../../../../trigger_log
+python builder_logic.py