summaryrefslogtreecommitdiff
path: root/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'api.py')
-rwxr-xr-xapi.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/api.py b/api.py
index bb6f598..2444c75 100755
--- a/api.py
+++ b/api.py
@@ -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)