Skip to main content

CLI wrapper to trigger and tail Azure DevOps pipelines

Project description

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

demo

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.4.1.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.4.1-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pipelinectl-0.4.1.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.4.1.tar.gz
Algorithm Hash digest
SHA256 a9de1bfa7ef9100f8c5889ae45ee52e77908718eb94eaacaefdd8688452b7804
MD5 434dd60623474461460bde04b6fae2b7
BLAKE2b-256 a57fbd4d146a47d283912d064f56e664ddcf0a36becacd8c304cd26c11460a0b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pipelinectl-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 13.0 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.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4efe8c7594f55d98bb7a36e6c30b0faa6a9f25ff83de13ff3c879a8dff320e55
MD5 f2545508db0c722f50162ffce47181b7
BLAKE2b-256 1f7819ddf983d7cd3ed94025ac74457763a42abf1e2200095fbac4b75974ed28

See more details on using hashes here.

Provenance

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