2

我想获得一个组中所有项目的列表,其中最后一个管道没有成功。

我当前的代码:

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

有效,但在 132 个项目上需要 70 多秒。

有没有更好/更快的方法?

4

1 回答 1

2

到目前为止,还没有办法在 Group 范围内向某个称为“管道”的对象发出请求,因为管道是项目范围,因此您需要在一个组中发出很多请求,准确地说是每个项目中的一个请求,它使事情变慢。

你可以用另一种方法思考,例如:在你的跑步者中列出失败的工作。

runners = g.runners.list(scope='active')

for r in runners:
    job=r.jobs.list(status='failed')
    if job != []:
        print(job)

于 2019-11-24T23:21:44.863 回答