Есть ли эффективный способ поиска сбойных конвейеров на gitlab?
Я хотел бы получить список всех проектов в группе, где последний конвейер не удался.
Мой текущий код:
def failed_pipelines(groupid):
g = gitlab.Gitlab('https://gitlab.com', private_token=GITLAB_API_TOKEN)
group = g.groups.get(id=groupid)
for group_proj in group.projects.list(archived=False, simple=True, as_list=False):
project = g.projects.get(id=group_proj.id)
pipelines = project.pipelines.list(page=1, per_page=1)
if not pipelines:
continue
if pipelines[0].status != 'success':
yield project.name
работает, но занимает более 70 секунд на 132 проектах.
Есть ли способ лучше / быстрее?
1 ответ
До сих пор нет возможности сделать запрос к какому-либо объекту, называемому "конвейер" в области действия группы, поскольку конвейеры являются областью проекта, из-за этого вам нужно делать много запросов в группе, по одному запросу в каждом проекте, чтобы быть точным, это замедляет работу.
Вы можете подумать о другом подходе, например: перечислить неудачные задания ваших бегунов.
runners = g.runners.list(scope='active')
for r in runners:
job=r.jobs.list(status='failed')
if job != []:
print(job)