# `Pipette.Group`
[🔗](https://github.com/tommeier/pipette-buildkite-plugin/blob/main/lib/pipette/group.ex#L1)

Group of Buildkite steps.

Groups bundle related steps under a shared label, scope binding, and
dependency graph. A group is activated when its bound scope matches
changed files (or when branch policy overrides targeting).

## Fields

  * `:name` (`atom()`) — unique identifier for this group
    (e.g. `:api`, `:web`, `:deploy`)
  * `:label` (`String.t() | nil`) — display label in the Buildkite UI
    (e.g. `":elixir: API"`)
  * `:scope` (`atom() | nil`) — scope that activates this group. `nil`
    means the group always runs. Set via the nested `scope` entity
    in the DSL, or directly when constructing structs.
  * `:ignore_global_scope` (`boolean()`) — when `true`, this group is
    excluded from `scopes: :all` branch policy activation and falls
    back to file-based scope detection. Defaults to `false`. Set via
    `scope(:name, ignore_global: true)` in the DSL.
  * `:depends_on` (`atom() | [atom()] | nil`) — other group name(s)
    that must complete before this group starts
  * `:only` (`String.t() | [String.t()] | nil`) — branch pattern(s)
    restricting this group to specific branches
  * `:key` (`String.t() | nil`) — explicit Buildkite group key
    (auto-derived from `:name` if omitted)
  * `:steps` (`[Pipette.Step.t()]`) — ordered list of command steps
    in this group

## Example

    %Pipette.Group{
      name: :api,
      label: ":elixir: API",
      scope: :api_code,
      depends_on: :lint,
      steps: [
        %Pipette.Step{name: :test, command: "mix test"}
      ]
    }

# `t`

```elixir
@type t() :: %Pipette.Group{
  __identifier__: term(),
  __spark_metadata__: term(),
  depends_on: atom() | [atom()] | nil,
  ignore_global_scope: boolean(),
  key: String.t() | nil,
  label: String.t() | nil,
  name: atom(),
  only: String.t() | [String.t()] | nil,
  scope: atom() | nil,
  scope_refs: [Pipette.ScopeRef.t()],
  steps: [Pipette.Step.t()]
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
