From f091aaa07ea8d582e4362dc32eb0658e8d765eec Mon Sep 17 00:00:00 2001 From: Joseph Schorr Date: Sun, 3 May 2015 09:58:48 -0700 Subject: [PATCH] Get basic support for GitLab working in the UI --- endpoints/gitlabtrigger.py | 7 ++++++- endpoints/trigger.py | 17 ++++++++++++----- static/directives/setup-trigger-dialog.html | 6 ++++++ static/js/services/trigger-service.js | 10 +++++++++- 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/endpoints/gitlabtrigger.py b/endpoints/gitlabtrigger.py index f9323f7ab..70aa15548 100644 --- a/endpoints/gitlabtrigger.py +++ b/endpoints/gitlabtrigger.py @@ -34,7 +34,12 @@ def attach_gitlab_build_trigger(): permission = AdministerRepositoryPermission(namespace, repository) if permission.can(): code = request.args.get('code') - token = gitlab_trigger.exchange_code_for_token(app.config, client, code) + token = gitlab_trigger.exchange_code_for_token(app.config, client, code, + redirect_suffix='/trigger') + if not token: + msg = 'Could not exchange token. It may have expired.' + abort(404, message=msg) + repo = model.get_repository(namespace, repository) if not repo: msg = 'Invalid repository: %s/%s' % (namespace, repository) diff --git a/endpoints/trigger.py b/endpoints/trigger.py index 4ae92ceae..b1145bc7d 100644 --- a/endpoints/trigger.py +++ b/endpoints/trigger.py @@ -1168,6 +1168,8 @@ class GitLabBuildTrigger(BuildTriggerHandler): def list_build_sources(self): gl_client = self._get_authorized_client() current_user = gl_client.currentuser() + if current_user is False: + raise RepositoryReadException('Unable to get current user') repositories = gl_client.getprojects() if repositories is False: @@ -1178,7 +1180,7 @@ class GitLabBuildTrigger(BuildTriggerHandler): owner = repo['namespace']['name'] if not owner in namespaces: namespaces[owner] = { - 'personal': owner == current_user.username, + 'personal': owner == current_user['username'], 'repos': [], 'info': { 'name': owner, @@ -1244,7 +1246,10 @@ class GitLabBuildTrigger(BuildTriggerHandler): def load_dockerfile_contents(self): gl_client = self._get_authorized_client() subdir = self.config.get('subdir', '') - path = subdir + '/Dockerfile' if subdir else 'Dockerfile' + if subdir == '/': + subdir = '' + + path = subdir + 'Dockerfile' if subdir else 'Dockerfile' repository = gl_client.getproject(self.config['build_source']) if repository is False: @@ -1254,6 +1259,7 @@ class GitLabBuildTrigger(BuildTriggerHandler): branches = find_matching_branches(self.config, branches) if branches == []: return None + branch_name = branches[0] if repository['default_branch'] in branches: branch_name = repository['default_branch'] @@ -1261,6 +1267,7 @@ class GitLabBuildTrigger(BuildTriggerHandler): contents = gl_client.getrawfile(repository['id'], branch_name, path) if contents is False: return None + return contents def list_field_values(self, field_name): @@ -1277,7 +1284,7 @@ class GitLabBuildTrigger(BuildTriggerHandler): return [] if field_name == 'tag_name': - tags = gl_client.getall(gl_client.getrepositorytags(repo['id'])) + tags = gl_client.getrepositorytags(repo['id']) if tags is False: return [] return [tag['name'] for tag in tags] @@ -1324,14 +1331,14 @@ class GitLabBuildTrigger(BuildTriggerHandler): metadata['commit_info']['committer'] = { 'username': committer['username'], 'avatar_url': committer['avatar_url'], - 'url': client.host + '/' + committer['username'], + 'url': gl_client.host + '/' + committer['username'], } if author is not None: metadata['commit_info']['author'] = { 'username': author['username'], 'avatar_url': author['avatar_url'], - 'url': client.host + '/' + author['username'] + 'url': gl_client.host + '/' + author['username'] } prepared = PreparedBuild(self.trigger) diff --git a/static/directives/setup-trigger-dialog.html b/static/directives/setup-trigger-dialog.html index d20398ec5..35d32de5d 100644 --- a/static/directives/setup-trigger-dialog.html +++ b/static/directives/setup-trigger-dialog.html @@ -25,6 +25,12 @@ next-step-counter="nextStepCounter" current-step-valid="state.stepValid" analyze="checkAnalyze(isValid)"> +
+
+