Group pipelines

Select a group in the browse tree and the pipeline view covers that group and every subgroup under it. One table, one request, however many projects sit beneath the node.

group-pipelines
Nine projects on screen, one node selected in the browse tree, one request to GitLab.

What you see

The same table, the same keys and the same preview pane as the project-scoped pipelines view. The project column carries the weight here, because the rows come from many repositories at once.

Columns

ColumnWhat it holds
statusFifteen states, each with its own glyph, colour and word
projectWhich repository the pipeline ran in
refBranch or tag
durationHow long it ran
queuedHow long it waited for a runner, which is the number that exposes a runner-capacity problem
coverageThe coverage figure the pipeline reported
failure reasonscript_failure and runner_system_failure are different problems
by / sourceWho or what started it: push, merge request, schedule, tag, API

source earns its column on a group view. A busy group's red is often scheduled dependency-bump pipelines, and seeing them at a glance, or filtering them out, is what keeps the view a signal.

The query

GitLab has no group-wide pipeline endpoint. Group.pipelines is absent from the GraphQL schema, and REST has no group equivalent. labdash reads pipelines through the group's projects instead:

group(fullPath: $path) {
  projects(includeSubgroups: true, first: 50) {
    nodes { pipelines(first: 50) { nodes { … } } }
  }
}

Measured on gitlab.com: 50 projects, 945 pipelines, 4.4 seconds, complexity 52 of 250. One round trip.

The fan-out is bounded. A group scope fetches a fixed number of pipelines per project, so a group with hundreds of projects still returns.

What you can do

KeyActionKeyAction
Rretry the pipelineLlogs of the first failing job
xcancel a running oneEnterjobs by stage in the preview
oopen in the browserwwatch it, and be notified when it lands

Scope and filters

b, Enter on the group, Tab to pipelines, 2 for failed, P to keep it. Selecting a group includes every subgroup beneath it.

source:push,merge-request in the filter bar excludes scheduled dependency bumps, which are the most common source of noise on a group view.

A pinned view carries its own refresh interval. A running-pipelines tab is worth 20 seconds; a merged-this-quarter tab is worth an hour, so one busy tab does not make the whole dashboard poll hard. See Refresh and caching.