Pass trigger information on build status. Set up a trigger for the sample building repository. Allow to list the builds started from a trigger. Protect the callback with the proper auth for creating a trigger on a repo.
This commit is contained in:
parent
f60f9eb62a
commit
9e426816a5
7 changed files with 94 additions and 43 deletions
|
@ -1299,35 +1299,38 @@ def load_token_data(code):
|
|||
|
||||
|
||||
def get_repository_build(namespace_name, repository_name, build_uuid):
|
||||
joined = RepositoryBuild.select().join(Repository)
|
||||
fetched = list(joined.where(Repository.name == repository_name,
|
||||
Repository.namespace == namespace_name,
|
||||
RepositoryBuild.uuid == build_uuid))
|
||||
try:
|
||||
query = list_repository_builds(namespace_name, repository_name)
|
||||
return query.where(RepositoryBuild.uuid == build_uuid).get()
|
||||
|
||||
if not fetched:
|
||||
except RepositoryBuild.DoesNotExist:
|
||||
msg = 'Unable to locate a build by id: %s' % build_uuid
|
||||
raise InvalidRepositoryBuildException(msg)
|
||||
|
||||
return fetched[0]
|
||||
|
||||
|
||||
def list_repository_builds(namespace_name, repository_name,
|
||||
include_inactive=True):
|
||||
joined = RepositoryBuild.select().join(Repository)
|
||||
filtered = joined
|
||||
query = (RepositoryBuild
|
||||
.select(RepositoryBuild, RepositoryBuildTrigger, BuildTriggerService)
|
||||
.join(Repository)
|
||||
.switch(RepositoryBuild)
|
||||
.join(RepositoryBuildTrigger, JOIN_LEFT_OUTER)
|
||||
.join(BuildTriggerService, JOIN_LEFT_OUTER)
|
||||
.where(Repository.name == repository_name,
|
||||
Repository.namespace == namespace_name))
|
||||
|
||||
if not include_inactive:
|
||||
filtered = filtered.where(RepositoryBuild.phase != 'error',
|
||||
RepositoryBuild.phase != 'complete')
|
||||
fetched = list(filtered.where(Repository.name == repository_name,
|
||||
Repository.namespace == namespace_name))
|
||||
return fetched
|
||||
query = query.where(RepositoryBuild.phase != 'error',
|
||||
RepositoryBuild.phase != 'complete')
|
||||
|
||||
return query
|
||||
|
||||
|
||||
def create_repository_build(repo, access_token, resource_key, tag,
|
||||
display_name):
|
||||
display_name, trigger=None):
|
||||
return RepositoryBuild.create(repository=repo, access_token=access_token,
|
||||
resource_key=resource_key, tag=tag,
|
||||
display_name=display_name)
|
||||
display_name=display_name, trigger=trigger)
|
||||
|
||||
|
||||
def create_webhook(repo, params_obj):
|
||||
|
@ -1386,11 +1389,8 @@ def log_action(kind_name, user_or_organization_name, performer=None,
|
|||
metadata_json=json.dumps(metadata), datetime=timestamp)
|
||||
|
||||
|
||||
def create_build_trigger(namespace_name, repository_name, service_name,
|
||||
auth_token, user):
|
||||
def create_build_trigger(repo, service_name, auth_token, user):
|
||||
service = BuildTriggerService.get(name=service_name)
|
||||
repo = Repository.get(namespace=namespace_name, name=repository_name)
|
||||
|
||||
trigger = RepositoryBuildTrigger.create(repository=repo, service=service,
|
||||
auth_token=auth_token,
|
||||
connected_user=user)
|
||||
|
@ -1428,3 +1428,14 @@ def list_build_triggers(namespace_name, repository_name):
|
|||
def delete_build_trigger(namespace_name, repository_name, trigger_uuid):
|
||||
trigger = get_build_trigger(namespace_name, repository_name, trigger_uuid)
|
||||
trigger.delete_instance()
|
||||
|
||||
|
||||
def list_trigger_builds(namespace_name, repository_name, trigger_uuid,
|
||||
limit=None):
|
||||
query = (list_repository_builds(namespace_name, repository_name)
|
||||
.where(RepositoryBuildTrigger.uuid == trigger_uuid))
|
||||
|
||||
if limit:
|
||||
return query.limit(limit)
|
||||
else:
|
||||
return query
|
||||
|
|
Reference in a new issue