diff options
author | Will Holland <william.holland@codethink.co.uk> | 2015-09-10 12:40:55 +0100 |
---|---|---|
committer | Will Holland <william.holland@codethink.co.uk> | 2015-09-10 12:48:20 +0100 |
commit | 1868baf1ba3602ce7cef3b59eccab1b499cfb6a5 (patch) | |
tree | 5f5a4bd41609dc09a6f0863a6aaf151b70079fa5 | |
parent | bedbbf7b0cc9dc418c5e0c20a7be59365798a876 (diff) | |
download | buildslave-scripts-1868baf1ba3602ce7cef3b59eccab1b499cfb6a5.tar.gz |
Add script to manage build and deploy on trigger
-rw-r--r-- | builder_logic.py | 59 | ||||
-rw-r--r-- | triggers/builders_trigger.sh | 1 |
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 |