Work in progress: bitbucket support
This commit is contained in:
parent
d180524b23
commit
c480fb2105
12 changed files with 321 additions and 86 deletions
|
@ -20,7 +20,7 @@ from util.cache import no_cache
|
|||
from endpoints.common import common_login, render_page_template, route_show_if, param_required
|
||||
from endpoints.csrf import csrf_protect, generate_csrf_token, verify_csrf
|
||||
from endpoints.registry import set_cache_headers
|
||||
from endpoints.trigger import CustomBuildTrigger
|
||||
from endpoints.trigger import CustomBuildTrigger, BitbucketBuildTrigger, TriggerProviderException
|
||||
from util.names import parse_repository_name, parse_repository_name_and_tag
|
||||
from util.useremails import send_email_changed
|
||||
from util.systemlogs import build_logs_archive
|
||||
|
@ -495,6 +495,41 @@ def download_logs_archive():
|
|||
|
||||
abort(403)
|
||||
|
||||
|
||||
@web.route('/bitbucket/setup/<path:repository>', methods=['GET'])
|
||||
@require_session_login
|
||||
@parse_repository_name
|
||||
@route_show_if(features.BITBUCKET_BUILD)
|
||||
def attach_bitbucket_trigger(namespace, repository_name):
|
||||
permission = AdministerRepositoryPermission(namespace, repository_name)
|
||||
if permission.can():
|
||||
repo = model.get_repository(namespace, repository_name)
|
||||
if not repo:
|
||||
msg = 'Invalid repository: %s/%s' % (namespace, repository_name)
|
||||
abort(404, message=msg)
|
||||
|
||||
trigger = model.create_build_trigger(repo, BitbucketBuildTrigger.service_name(),
|
||||
None,
|
||||
current_user.db_user())
|
||||
|
||||
try:
|
||||
oauth_info = BitbucketBuildTrigger.get_oauth_url(trigger.uuid)
|
||||
|
||||
config = {
|
||||
'access_token': oauth_info['access_token']
|
||||
}
|
||||
|
||||
access_token_secret = oauth_info['access_token_secret']
|
||||
model.update_build_trigger(trigger, config, auth_token=access_token_secret)
|
||||
|
||||
return redirect(oauth_info['url'])
|
||||
except TriggerProviderException:
|
||||
trigger.delete_instance()
|
||||
abort(400, message='Could not retrieve OAuth URL from Bitbucket')
|
||||
|
||||
abort(403)
|
||||
|
||||
|
||||
@web.route('/customtrigger/setup/<path:repository>', methods=['GET'])
|
||||
@require_session_login
|
||||
@parse_repository_name
|
||||
|
|
Reference in a new issue