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.3.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.3.0-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pipelinectl-0.3.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.3.0.tar.gz
Algorithm Hash digest
SHA256 2213c7fcf5f4a4535ba741e474accf0c21104d98f40429482ffead2cab5672d6
MD5 0153ce85e0813d902e8e6562b84337e9
BLAKE2b-256 c0391ffbcd2178bc955cb24002559171fc247ddb2ee1c7930d3c07500269e85d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pipelinectl-0.3.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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 941a9f301fd6a3ead8b1884f9cd40712d771588d384150507efeb9291fc9d69d
MD5 e4b24eee6898cb206cfd88041088859d
BLAKE2b-256 afb1f57098ce2265aeb79b9d6ce49ed7c96767d7b5a3410f0938e0be724bcb59

See more details on using hashes here.

Provenance

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