Pipette.Group (Pipette v0.5.1)

Copy Markdown View Source

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"}
  ]
}

Summary

Types

t()

@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()]
}