Skip to main content

CLI wrapper to trigger and tail Azure DevOps pipelines

Project description

pipelinectl

A minimal CLI to trigger and tail Azure DevOps pipelines directly from your terminal — no browser, no copy-paste.

Why?

The typical workflow:

  1. Push code
  2. Open browser → select org → select project → select pipeline → select branch → click Run
  3. Wait for logs to appear
  4. Copy error → paste into Claude Code
  5. Fix → repeat

With pipelinectl:

pipelinectl push-run build-and-test
# ^ pushes, triggers, tails logs, exits non-zero on failure

Claude Code sees the error output directly if the pipeline fails.


Installation

pip install pipelinectl

For local development:

pip install --editable .

Setup

pipelinectl init

Prompts for:

  • Azure DevOps organization (e.g. mycompany)
  • Azure DevOps project (e.g. MyProject)
  • Personal Access Token (PAT) — needs Build: Read & execute and Pipeline Resources: Use
  • Default branch (fallback when not inside a git repo)

Config is saved to ~/.pipelinectl/config.toml with chmod 600.

Set ADO_PAT as an environment variable to override the PAT from config.


Commands

pipelinectl run PIPELINE

Trigger a pipeline and wait for it to finish.

pipelinectl run build-and-test                        # uses current git branch
pipelinectl run build-and-test --branch main          # explicit branch
pipelinectl run 42                                    # by numeric pipeline ID
pipelinectl run deploy -v ENV=staging -v REGION=westeurope  # queue-time variables
pipelinectl run install -P dev=true -P version=1.2   # YAML template parameters
pipelinectl run build-and-test --logs                 # stream live log output
pipelinectl run build-and-test --no-follow            # trigger only, don't wait
pipelinectl run build-and-test --push                 # git push first, then trigger

Branch resolution order: --branch flag → current git branch → config default_branch.

PIPELINE is matched by case-insensitive substring against pipeline names, or exact numeric ID. If multiple pipelines match, the command errors and lists them.

Exit code is 0 on success, 1 on failure.

Approval gates — when the pipeline reaches an approval gate, pipelinectl pauses and prompts you to approve or reject inline:

⏸  Approval required
   Approve? [y/N]:

pipelinectl push-run PIPELINE

Shortcut for run --push. Pushes the current branch then triggers the pipeline.

pipelinectl push-run build-and-test
pipelinectl push-run build-and-test --logs

pipelinectl list

List all pipelines in your project.

pipelinectl list
pipelinectl list --filter deploy

pipelinectl params PIPELINE

Show queue-time variables and template parameters for a pipeline.

pipelinectl params build-and-test
pipelinectl params 42

pipelinectl status PIPELINE

Show recent run history.

pipelinectl status build-and-test
pipelinectl status deploy --top 10

pipelinectl logs PIPELINE [RUN_ID]

Fetch logs from a previous run without re-triggering.

pipelinectl logs build-and-test           # most recent run
pipelinectl logs build-and-test 98765     # specific run ID
pipelinectl logs build-and-test --last 2  # 2nd most recent

Config file

~/.pipelinectl/config.toml:

[azure_devops]
organization   = "mycompany"
project        = "MyProject"
pat            = "xxxx"     # or use ADO_PAT env var
default_branch = "main"     # fallback when not in a git repo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pipelinectl-0.2.0.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pipelinectl-0.2.0-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

Details for the file pipelinectl-0.2.0.tar.gz.

File metadata

  • Download URL: pipelinectl-0.2.0.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pipelinectl-0.2.0.tar.gz
Algorithm Hash digest
SHA256 029093108b7f17374693d2f21ab988bb9363cfb1d22940919366638dbb992f0d
MD5 ed395de16349fbaf30e16f9b6ebfc9ce
BLAKE2b-256 89428bee8358c5d5c6b13f78eba6321590c7fd1b1f183f59121b93dd14333ce3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pipelinectl-0.2.0.tar.gz:

Publisher: publish.yaml on Borrelworst/pipelinectl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pipelinectl-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pipelinectl-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pipelinectl-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1071bda782a6d7f1e0a301e66944603688b08b350babf60876cbc754d26c9b2b
MD5 3c5dc843bef5b6768ca5c59d247f3b39
BLAKE2b-256 d518b0aba7491a5198f4a528601a84ed10b2526b44ee4864cfce02e9b6750f5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pipelinectl-0.2.0-py3-none-any.whl:

Publisher: publish.yaml on Borrelworst/pipelinectl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page