Skip to main content

CLI wrapper to trigger and tail Azure DevOps pipelines

Project description

 ____  _            _ _              _   _
|  _ \(_)_ __   ___| (_)_ __   ___ | |_| |
| |_) | | '_ \ / _ \ | | '_ \ / _ \| __| |
|  __/| | |_) |  __/ | | | | |  __/| |_| |
|_|   |_| .__/ \___|_|_|_| |_|\___| \__|_|
         |_|          trigger · tail · ship

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

# Homebrew (macOS, recommended)
brew tap Borrelworst/pipelinectl
brew install Borrelworst/pipelinectl/pipelinectl

# PyPI
pip install pipelinectl

For local development:

pip install --editable ".[dev]"

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.3.2.tar.gz (14.0 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.3.2-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pipelinectl-0.3.2.tar.gz
Algorithm Hash digest
SHA256 cb786f70bdb37df87caf44f5a3a88e15d86dbd3b2b3ddbfdd7c4b5f94a6eabad
MD5 64b4aae53796b48a04fd6353d02cd78b
BLAKE2b-256 6e02ff4319ea7d6135ef1138740f6a1da0e47ac121cbfd94fd858250d04dfcdb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pipelinectl-0.3.2.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.3.2-py3-none-any.whl.

File metadata

  • Download URL: pipelinectl-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 12.9 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.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fa234fd61bed787d557e0f01f05934060686c5803c9a5531f3ebee70961582fd
MD5 3eaccc516a752ca0e14965f06be39b43
BLAKE2b-256 27e19ea8b1baba24eccd2d86b50460141033682cbfc1a2471bb7d2ea89826530

See more details on using hashes here.

Provenance

The following attestation bundles were made for pipelinectl-0.3.2-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