diff options
Diffstat (limited to 'api.py')
-rwxr-xr-x | api.py | 30 |
1 files changed, 29 insertions, 1 deletions
@@ -240,8 +240,9 @@ class VCSWorker(API): return (self._clone(url, ref, dirname) and self._remove(T, D, P, name) and self._create_repo(T, D, name) and - (time.sleep(5) or True) and + 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._push(dirname, D, P, ref, name)) if update(): @@ -291,6 +292,32 @@ class VCSWorker(API): ] return runcmd('.', argv, self.MAX_CREATE_REPO_TIME) + def _list_vars(self, token, gitlab_domain, gitlab_project, name): + logging.info('Getting variables for %s/%s', gitlab_project, name) + name = urllib.parse.quote('%s/%s' % (gitlab_project, name), safe='') + url = 'https://%s/api/v4/projects/%s/variables' % (gitlab_domain, name) + argv = ['curl', url, '-sv', '-HPRIVATE-TOKEN: %s' % token] + output = runcmd('.', argv, self.MAX_CREATE_REPO_TIME) + logging.info('Variables: %r', output) + print('Variables', output) + return True + + def _set_var(self, token, gitlab_domain, gitlab_project, name, key, value): + logging.info( + 'Setting variable for %s/%s: %s=%s', + gitlab_project, name, key, value) + name = urllib.parse.quote('%s/%s' % (gitlab_project, name), safe='') + url = 'https://%s/api/v4/projects/%s/variables' % (gitlab_domain, name) + argv = [ + 'curl', + url, + '-sv', '-X' 'POST', + '-d', 'key=%s' % key, + '-d', 'value=%s' % value, + '-HPRIVATE-TOKEN: %s' % token, + ] + return runcmd('.', argv, self.MAX_CREATE_REPO_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) @@ -311,6 +338,7 @@ def runcmd(cwd, argv, timeout): logging.error('Error while running command: %s', str(e)) return False + logging.debug('stdout: %r', p.stdout) if p.returncode != 0: logging.error('Command failed: %r', argv) logging.error('exit code: %d', p.returncode) |