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.nilmeans the group always runs. Set via the nestedscopeentity in the DSL, or directly when constructing structs.:ignore_global_scope(boolean()) — whentrue, this group is excluded fromscopes: :allbranch policy activation and falls back to file-based scope detection. Defaults tofalse. Set viascope(: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:nameif 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"}
]
}
Summary
Types
@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()] }