You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue tracks establishing the top-level azdo pipelines command group.
Command Group Description
Azure DevOps exposes an az pipelines surface for managing pipeline definitions, runs, variables, variable groups, folders, and supporting resources. azdo should introduce a dedicated pipelines group that organizes all pipeline-related subcommands under a single entry point while following the CLI ergonomics described in ISSUE-TRIAGE.md. This umbrella command wires the immediate children (variable-group, variable, build, runs, pool, queue, and future subgroups such as folders, agent-pools, etc.) as well as top-level leaves (show, create, delete, list, update, run).
azdo pipelines update (top-level leaf, tracked in feat: Implement azdo pipelines update command #257) — update a pipeline definition by ID (partial update, name/description/branch/yml-path/queue-id/folder-path)
azdo pipelines run (top-level leaf, tracked in feat: Implement azdo pipelines run command #258) — queue a pipeline run by ID or name (legacy QueueBuild path only; --parameters out of scope)
Additional subgroups are added here as they are triaged.
The parent group itself does not perform operations but supplies shared persistent flags (e.g., --organization, --project) and help text summarizing the available categories.
Scope & Defaults
Commands that operate at the project scope will adopt the [ORGANIZATION/]PROJECT positional argument pattern; when only PROJECT is provided, fall back to the configured default organization (per internal/cmd/util helpers).
Commands that operate at the org scope (e.g. pool show) take a positional ORGANIZATION instead.
Keep the group help consistent with the Azure CLI description while emphasizing azdo conventions (kebab-case flags, JSON export support).
Implementation Outline
Create internal/cmd/pipelines/pipelines.go that defines NewCmd(ctx util.CmdContext) *cobra.Command with Use: "pipelines", short and long descriptions, and registers child groups and top-level leaves via:
Additional AddCommand(...) calls for any future subgroup.
Import the new package in internal/cmd/root/root.go and call rootCmd.AddCommand(pipelines.NewCmd(ctx)).
Ensure ctx.Printer lookups and JSON flag helpers are only wired when leaf commands require them; the group command itself should only manage descriptive help.
Update docs/ via make docs once child commands land so that the command hierarchy appears in generated markdown.
Testing
Add/adjust CLI docs tests if present (e.g., snapshot expectations) after the group and initial children are wired.
Future child issues cover unit and acceptance tests for concrete commands.
This issue tracks establishing the top-level
azdo pipelinescommand group.Command Group Description
Azure DevOps exposes an
az pipelinessurface for managing pipeline definitions, runs, variables, variable groups, folders, and supporting resources.azdoshould introduce a dedicatedpipelinesgroup that organizes all pipeline-related subcommands under a single entry point while following the CLI ergonomics described inISSUE-TRIAGE.md. This umbrella command wires the immediate children (variable-group,variable,build,runs,pool,queue, and future subgroups such asfolders,agent-pools, etc.) as well as top-level leaves (show,create,delete,list,update,run).CLI Structure
azdo pipelines(group)azdo pipelines variable-group(subgroup, tracked in feat: Introduceazdo pipelines variable-groupsubgroup #117)azdo pipelines variable(subgroup, tracked in feat:azdo pipelines variablecommand group #118)azdo pipelines build(subgroup, tracked in feat: Introduceazdo pipelines buildcommand group #213) — legacy Build API surface; first leaf islist(feat: Implementazdo pipelines build listcommand #211);show(feat: Implementazdo pipelines build showcommand #241);cancel(feat: Implementazdo pipelines build cancelcommand #252);queue(feat: Implementazdo pipelines build queuecommand #253); nestedtagsubgroup (Introduceazdo pipelines build tagcommand group #276 — leaves:addfeat: Implementazdo pipelines build tag addcommand #277,deletefeat: Implementazdo pipelines build tag deletecommand #278,listfeat: Implementazdo pipelines build tag listcommand #279)azdo pipelines runs(subgroup, tracked in feat: Introduceazdo pipelines runscommand group #214) — modern Pipelines API surface; first leaf islist(feat: Implementazdo pipelines runs listcommand #212);show(feat: Implementazdo pipelines runs showcommand #242)azdo pipelines pool(subgroup, tracked in Introduce azdo pipelines pool command group #239) — agent pools (org-scoped); first leaf isshow(feat: Implementazdo pipelines pool showcommand #244)azdo pipelines queue(subgroup, tracked in Introduce azdo pipelines queue command group #240) — agent queues (project-scoped); first leaf isshow(feat: Implementazdo pipelines queue showcommand #245)azdo pipelines show(top-level leaf, tracked in feat: Implementazdo pipelines showcommand #243) — pipeline definition by IDazdo pipelines create(top-level leaf, tracked in feat: Implementazdo pipelines createcommand #254) — create a pipeline definitionazdo pipelines delete(top-level leaf, tracked in feat: Implementazdo pipelines deletecommand #255) — delete a pipeline definition by ID (destructive, with confirmation)azdo pipelines list(top-level leaf, tracked in feat: Implementazdo pipelines listcommand #256) — list pipeline definitions in a projectazdo pipelines update(top-level leaf, tracked in feat: Implementazdo pipelines updatecommand #257) — update a pipeline definition by ID (partial update, name/description/branch/yml-path/queue-id/folder-path)azdo pipelines run(top-level leaf, tracked in feat: Implementazdo pipelines runcommand #258) — queue a pipeline run by ID or name (legacyQueueBuildpath only;--parametersout of scope)The parent group itself does not perform operations but supplies shared persistent flags (e.g.,
--organization,--project) and help text summarizing the available categories.Scope & Defaults
[ORGANIZATION/]PROJECTpositional argument pattern; when onlyPROJECTis provided, fall back to the configured default organization (perinternal/cmd/utilhelpers).pool show) take a positionalORGANIZATIONinstead.azdoconventions (kebab-case flags, JSON export support).Implementation Outline
internal/cmd/pipelines/pipelines.gothat definesNewCmd(ctx util.CmdContext) *cobra.CommandwithUse: "pipelines", short and long descriptions, and registers child groups and top-level leaves via:AddCommand(variablegroup.NewCmd(ctx))(feat: Introduceazdo pipelines variable-groupsubgroup #117)AddCommand(variable.NewCmd(ctx))(feat:azdo pipelines variablecommand group #118)AddCommand(build.NewCmd(ctx))(feat: Introduceazdo pipelines buildcommand group #213 — legacy Build API subgroup; leaves:listfeat: Implementazdo pipelines build listcommand #211,showfeat: Implementazdo pipelines build showcommand #241,cancelfeat: Implementazdo pipelines build cancelcommand #252,queuefeat: Implementazdo pipelines build queuecommand #253; nestedtagsubgroup Introduceazdo pipelines build tagcommand group #276)AddCommand(runs.NewCmd(ctx))(feat: Introduceazdo pipelines runscommand group #214 — modern Pipelines API subgroup; leaves:listfeat: Implementazdo pipelines runs listcommand #212,showfeat: Implementazdo pipelines runs showcommand #242)AddCommand(pool.NewCmd(ctx))(Introduce azdo pipelines pool command group #239 — agent pools; leaves:showfeat: Implementazdo pipelines pool showcommand #244)AddCommand(queue.NewCmd(ctx))(Introduce azdo pipelines queue command group #240 — agent queues; leaves:showfeat: Implementazdo pipelines queue showcommand #245)AddCommand(show.NewCmd(ctx))(feat: Implementazdo pipelines showcommand #243 — top-levelpipelines showleaf; pipeline definition by ID)AddCommand(create.NewCmd(ctx))(feat: Implementazdo pipelines createcommand #254 — top-levelpipelines createleaf; non-interactive pipeline definition create)AddCommand(delete.NewCmd(ctx))(feat: Implementazdo pipelines deletecommand #255 — top-levelpipelines deleteleaf; destructive pipeline definition delete with confirmation)AddCommand(list.NewCmd(ctx))(feat: Implementazdo pipelines listcommand #256 — top-levelpipelines listleaf; list pipeline definitions)AddCommand(update.NewCmd(ctx))(feat: Implementazdo pipelines updatecommand #257 — top-levelpipelines updateleaf; partial-update pipeline definition)AddCommand(run.NewCmd(ctx))(feat: Implementazdo pipelines runcommand #258 — top-levelpipelines runleaf; queue a pipeline run)AddCommand(...)calls for any future subgroup.internal/cmd/root/root.goand callrootCmd.AddCommand(pipelines.NewCmd(ctx)).ctx.Printerlookups and JSON flag helpers are only wired when leaf commands require them; the group command itself should only manage descriptive help.docs/viamake docsonce child commands land so that the command hierarchy appears in generated markdown.Testing
References
azure-devops/azext_devops/dev/pipelines/commands.pyazdo pipelines variable-groupsubgroup #117 (variable-group), feat:azdo pipelines variablecommand group #118 (variable), feat: Introduceazdo pipelines buildcommand group #213 (build), feat: Introduceazdo pipelines runscommand group #214 (runs), Introduce azdo pipelines pool command group #239 (pool), Introduce azdo pipelines queue command group #240 (queue), Introduceazdo pipelines build tagcommand group #276 (build tag).azdo pipelines build listcommand #211 (build list), feat: Implementazdo pipelines runs listcommand #212 (runs list), feat: Implementazdo pipelines build showcommand #241 (build show), feat: Implementazdo pipelines runs showcommand #242 (runs show), feat: Implementazdo pipelines showcommand #243 (pipelines show), feat: Implementazdo pipelines pool showcommand #244 (pool show), feat: Implementazdo pipelines queue showcommand #245 (queue show), feat: Implementazdo pipelines build cancelcommand #252 (build cancel), feat: Implementazdo pipelines build queuecommand #253 (build queue), feat: Implementazdo pipelines createcommand #254 (pipelines create), feat: Implementazdo pipelines deletecommand #255 (pipelines delete), feat: Implementazdo pipelines listcommand #256 (pipelines list), feat: Implementazdo pipelines updatecommand #257 (pipelines update), feat: Implementazdo pipelines runcommand #258 (pipelines run), feat: Implementazdo pipelines build tag addcommand #277 (build tag add), feat: Implementazdo pipelines build tag deletecommand #278 (build tag delete), feat: Implementazdo pipelines build tag listcommand #279 (build tag list).