Есть ли эффективный способ поиска сбойных конвейеров на 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)

Другие вопросы по тегам