diff options
-rwxr-xr-x | api.py | 19 | ||||
-rwxr-xr-x | curl.sh | 4 |
2 files changed, 23 insertions, 0 deletions
@@ -188,9 +188,11 @@ class VCSWorker(API): MAX_CLONE_TIME = 1 MAX_REMOVE_TIME = 60 MAX_CREATE_REPO_TIME = 5 + MAX_SET_WEBHOOK_TIME = 60 MAX_PUSH_TIME = 60 GITLAB_DOMAIN = 'wmf-gitlab3.vm.liw.fi' GITLAB_PROJECT = 'liw' + WEBHOOK_URL = 'https://wmf2-controller.vm.liw.fi/webhook' def __init__(self, gitlab_token, artifact_token): self._gitlab_token = gitlab_token @@ -231,6 +233,7 @@ class VCSWorker(API): self._list_vars(T, D, P, name) and self._set_var(T, D, P, name, key, value) and self._list_vars(T, D, P, name) and + self._add_job_webhook(T, D, P, name) and self._push(dirname, D, P, ref, name)) if update(): @@ -308,6 +311,22 @@ class VCSWorker(API): ] return runcmd('.', argv, self.MAX_CREATE_REPO_TIME) + def _add_job_webhook(self, token, gitlab_domain, gitlab_project, name): + webhook_url = self.WEBHOOK_URL + logging.info('Adding webhook for jobs: %s', webhook_url) + name = urllib.parse.quote('%s/%s' % (gitlab_project, name), safe='') + + url = 'https://%s/api/v4/projects/%s/hooks' % (gitlab_domain, name) + argv = [ + 'curl', + url, + '-sv', '-X' 'POST', + '-d', 'url=%s' % webhook_url, + '-d', 'job_events=true', + '-HPRIVATE-TOKEN: %s' % token, + ] + return runcmd('.', argv, self.MAX_SET_WEBHOOK_TIME) + def _push(self, dirname, gitlab_domain, gitlab_project, ref, name): logging.info('Pushing %s to %s as %s', dirname, gitlab_domain, name) url = 'ssh://git@%s/%s/%s.git' % (gitlab_domain, gitlab_project, name) @@ -33,6 +33,10 @@ case "$cmd" in https://wmf2-deployer.vm.liw.fi/publish ;; + status) + runcurl https://wmf2-controller.vm.liw.fi/status + ;; + *) echo "eek" 1>&2 exit 1 |