Add support for build status tags, which link to the Quay.io repo
This commit is contained in:
parent
39eaca346d
commit
3f806b10c2
16 changed files with 228 additions and 34 deletions
|
@ -1,5 +1,6 @@
|
|||
import logging
|
||||
import stripe
|
||||
import os
|
||||
|
||||
from flask import (abort, redirect, request, url_for, make_response, Response,
|
||||
Blueprint)
|
||||
|
@ -13,7 +14,7 @@ from util.invoice import renderInvoiceToPdf
|
|||
from util.seo import render_snapshot
|
||||
from util.cache import no_cache
|
||||
from endpoints.common import common_login, render_page_template
|
||||
|
||||
from util.names import parse_repository_name
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -196,3 +197,39 @@ def confirm_recovery():
|
|||
return redirect(url_for('web.user'))
|
||||
else:
|
||||
abort(403)
|
||||
|
||||
|
||||
@web.route('/repository/<path:repository>/status', methods=['GET'])
|
||||
@parse_repository_name
|
||||
@no_cache
|
||||
def build_status_badge(namespace, repository):
|
||||
token = request.args.get('token', None)
|
||||
is_public = model.repository_is_public(namespace, repository)
|
||||
if not is_public:
|
||||
repo = model.get_repository(namespace, repository)
|
||||
if not repo or token != repo.badge_token:
|
||||
abort(404)
|
||||
|
||||
# Lookup the tags for the repository.
|
||||
tags = model.list_repository_tags(namespace, repository)
|
||||
|
||||
# Lookup the current/recent build.
|
||||
status = 'none'
|
||||
build = model.get_recent_repository_build(namespace, repository)
|
||||
if build:
|
||||
if build.phase == 'error':
|
||||
status = 'failed'
|
||||
elif build.phase == 'complete':
|
||||
pass
|
||||
else:
|
||||
status = 'building'
|
||||
else:
|
||||
if list(tags):
|
||||
status = 'ready'
|
||||
|
||||
with open(os.path.join(app.root_path, 'buildstatus', status + '.svg')) as f:
|
||||
svg = f.read()
|
||||
|
||||
response = make_response(svg)
|
||||
response.content_type = 'image/svg+xml'
|
||||
return response
|
||||
|
|
Reference in a new issue