Observed since 20 Oct, 19:46 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
CLI tool to trigger Azure DevOps pipelines
A command-line tool to trigger and manage Azure DevOps pipelines with ease.
brew tap SAGARSURI/tap
brew install adop-cli
pip install adop-cli
git clone https://github.com/SAGARSURI/adop.git
cd adop
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
ado-pipeline org add work
You'll be prompted to enter:
Required PAT Permissions:
ado-pipeline project add mobile-app
You'll be prompted for the Azure DevOps project name.
After configuring, add pipelines you want to manage:
# Import pipelines from Azure DevOps (interactive)
ado-pipeline pipeline import
# Or add manually
ado-pipeline pipeline add my-build "My Pipeline Name" --description "Build description"
# Add with parameters
ado-pipeline pipeline add android-build "Android_Build" \
--param "outputFormat:choice:apk:apk,aab" \
--param "deploy:boolean:false" \
--param "releaseNotes:string:"
# Bash - add to ~/.bashrc
eval "$(_ADO_PIPELINE_COMPLETE=bash_source ado-pipeline)"
# Zsh - add to ~/.zshrc
eval "$(_ADO_PIPELINE_COMPLETE=zsh_source ado-pipeline)"
Then restart your terminal or run source ~/.zshrc (or ~/.bashrc).
What it completes:
| Context | Example | Completes |
|---|---|---|
| Commands | ado-pipeline pl<Tab> | plan, pipeline |
| Pipeline aliases | ado-pipeline apply <Tab> | Your configured pipelines |
| Branch names | ado-pipeline apply my-build -b <Tab> | Git branches |
| Subcommands | ado-pipeline pipeline <Tab> | list, add, remove, etc. |
# 1. Setup (one-time)
ado-pipeline org add myorg # Add your Azure DevOps org
ado-pipeline project add myproject # Add your project
ado-pipeline pipeline import # Import pipelines
# 2. Daily usage
ado-pipeline pipeline list # See available pipelines
ado-pipeline plan my-build # Preview (dry-run)
ado-pipeline apply my-build -y -w # Trigger + watch
ado-pipeline status # Check build status
ado-pipeline open <BUILD_ID> # Open in browser
| Command | Description |
|---|---|
ado-pipeline plan <alias> | Dry-run - preview what will be triggered |
ado-pipeline apply <alias> | Trigger the pipeline |
| Option | Behavior |
|---|---|
| (none) | Auto-detects current git branch |
--branch, -b | Build from specified branch |
--pr | Build from pull request (uses refs/pull/{n}/merge) |
--skip-duplicate-check, -f | Bypass duplicate build check |
--watch, --follow, -w | Watch build progress until completion |
--branchand--prcannot be used together.
# Dry-run (preview only, no API call)
ado-pipeline plan android-dev-build
# Trigger build on current branch
ado-pipeline apply android-dev-build
# Trigger on specific branch
ado-pipeline apply android-dev-build --branch main
# Trigger from PR #123
ado-pipeline apply android-dev-build --pr 123
# With parameters
ado-pipeline apply android-dev-build -p deploy=true -p outputFormat=aab
# Skip confirmation + watch progress
ado-pipeline apply android-dev-build -y -w
# Show recent builds
ado-pipeline status
# Show more builds
ado-pipeline status -n 20
# Filter by pipeline
ado-pipeline status -P my-build
# Show only your builds
ado-pipeline status --mine
# Show logs for a build
ado-pipeline logs <BUILD_ID>
# Stream logs in real-time
ado-pipeline logs <BUILD_ID> -f
ado-pipeline cancel <BUILD_ID>
ado-pipeline cancel <BUILD_ID> -y # Skip confirmation
ado-pipeline open <BUILD_ID>
ado-pipeline diff <BUILD_ID_1> <BUILD_ID_2>
Shows side-by-side comparison of pipeline, branch, result, duration, and parameters.
ado-pipeline pipeline list
# List all pipelines from Azure DevOps
ado-pipeline pipeline list --remote
ado-pipeline pipeline list -r # Short form
Shows all pipelines available in your Azure DevOps project with their IDs and folders.
ado-pipeline pipeline add <alias> "<Azure DevOps Pipeline Name>"
# With parameters (format: name:type:default[:choices])
ado-pipeline pipeline add android-dev-build "Build_Android_Dev" \
--param "outputFormat:choice:apk:apk,aab" \
--param "deploy:boolean:false"
Parameter types: string, boolean, choice
# Interactive import with batch selection
ado-pipeline pipeline import
# Import all pipelines without prompting
ado-pipeline pipeline import --all
# Filter by name pattern (glob or regex)
ado-pipeline pipeline import --filter "Android*"
ado-pipeline pipeline import -f "Build_.*_Dev"
# Skip auto-fetching parameters (faster bulk import)
ado-pipeline pipeline import --all --no-params
The import command shows a numbered table and lets you select multiple pipelines at once:
Found 35 pipeline(s) to import:
# Pipeline Name Suggested Alias
1 Build_Android_Dev build-android-dev
2 Build_Android_Prod build-android-prod
...
Select pipelines (e.g., 1,3,5-10 or 'all' or 'none'): 1-5,10
Importing 6 pipeline(s)...
# Sync single pipeline
ado-pipeline pipeline sync my-build
# Sync all pipelines
ado-pipeline pipeline sync --all
# Interactive batch selection
ado-pipeline pipeline sync
Parameters are auto-fetched during import. Use sync to refresh if the pipeline's YAML changes.
# Remove single pipeline
ado-pipeline pipeline remove my-build
# Remove all pipelines (with confirmation)
ado-pipeline pipeline remove --all
# Interactive batch selection
ado-pipeline pipeline remove
The batch selection supports ranges like 1,3,5-10 or all:
Save frequently used build configurations for quick access.
# Save with deploy enabled
ado-pipeline fav add quick-build my-build --deploy
# Save with specific branch
ado-pipeline fav add release-build my-prod --branch main --deploy
ado-pipeline fav list
ado-pipeline fav run quick-build
ado-pipeline fav run quick-build -y -w # Skip confirmation + watch
ado-pipeline fav remove quick-build
# Initialize local project config (.ado-pipeline.json)
# Auto-detects org/project from Azure DevOps git remote
ado-pipeline init
# Show current configuration
ado-pipeline config show
Manage multiple Azure DevOps organizations and projects.
# Add organizations
ado-pipeline org add work # Prompts for Azure DevOps org + PAT
ado-pipeline org add personal
# List organizations (active marked with *)
ado-pipeline org list
# Switch organization
ado-pipeline org select personal
# Remove organization
ado-pipeline org remove old-org
# Add project to active org
ado-pipeline project add mobile-app
# List projects in active org
ado-pipeline project list
# Switch project
ado-pipeline project select web-app
# Remove project
ado-pipeline project remove old-project
# Show current context and source
ado-pipeline context
# Quick switch (org/project)
ado-pipeline use work/mobile-app
# -O (org) and -J (project) flags
ado-pipeline -O personal -J hobby status
ado-pipeline -O work -J mobile apply android-build
# Or use environment variables
ADO_ORG=personal ADO_PROJECT=hobby ado-pipeline status
Create a .ado-pipeline.json in your project directory to auto-select context:
# In your project directory
ado-pipeline init
The init command auto-detects your Azure DevOps org and project from the git remote:
Or manually create the file:
{
"org": "work",
"project": "mobile-app"
}
Now commands auto-detect context when you're in that directory:
cd ~/projects/mobile-app
ado-pipeline apply android # Uses work/mobile-app automatically
Context Resolution Priority:
-O, -J)ADO_ORG, ADO_PROJECT).ado-pipeline.json in current or parent dirs)Pass parameters with -p name=value:
ado-pipeline apply android-dev-build -p deploy=true -p outputFormat=aab
true/yes/1 or false/no/0ado-pipeline pipeline sync <alias>~/.azure-pipeline-cli/
├── active_context # Current org/project (e.g., "work/mobile-app")
└── orgs/
└── <org-name>/
├── config.json # PAT and Azure DevOps organization
└── projects/
└── <project-name>/
├── config.json # Azure DevOps project settings
├── pipelines.json # Pipeline definitions
└── favorites.json # Saved favorite configurations
Local project config (optional):
~/projects/my-app/
└── .ado-pipeline.json # Auto-selects org/project context
All config files have 0600 permissions (owner read/write only) since they may contain sensitive data.
| Variable | Description |
|---|---|
ADO_ORG | Override organization for the command |
ADO_PROJECT | Override project for the command |
ADO_BANNER | Control ASCII banner display: 0 to disable, 1 to force enable |
NO_COLOR | Standard variable to disable colors (also hides banner) |
The CLI suggests similar names if you make a typo:
Error: Pipeline 'my-bild' not found. Did you mean: my-build?
Run ado-pipeline pipeline list to see all available aliases.
Add pipelines first:
ado-pipeline pipeline import # Import from Azure DevOps
# or
ado-pipeline pipeline add <alias> "<pipeline-name>"
Set up an organization and project:
ado-pipeline org add work # Creates org, prompts for PAT
ado-pipeline project add myapp # Creates project in active org
The branch must exist on the remote. Push it first:
git push -u origin <branch>
A build with the same branch, commit, and parameters is already running. Options:
--skip-duplicate-check (-f) to trigger anyway: ado-pipeline apply my-build -fado-pipeline cancel <BUILD_ID>Make sure you've added the eval command to your shell config and restarted your terminal.
ado-pipeline cancel <BUILD_ID> -y
git clone https://github.com/SAGARSURI/adop.git
cd adop
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -v
src/ado_pipeline/
├── __init__.py # Version
├── api.py # Azure DevOps API client
├── banner.py # ASCII art banner
├── cli.py # CLI entry point (re-exports from cli/)
├── cli/ # CLI command modules
│ ├── __init__.py # Assembles all commands
│ ├── main.py # Main group and global options
│ ├── helpers.py # Shared helper functions
│ ├── org_cmd.py # Organization commands
│ ├── project_cmd.py # Project commands
│ ├── context_cmd.py # Context commands
│ ├── build_cmd.py # Build commands (plan, apply, status, etc.)
│ ├── pipeline_cmd.py # Pipeline management
│ ├── fav_cmd.py # Favorites commands
│ ├── config_cmd.py # Config commands
│ └── completions.py # Shell completion helpers
├── config.py # Configuration management
├── context.py # Hierarchical org/project context
├── duplicate.py # Duplicate build detection
├── favorites.py # Favorites system
├── git.py # Git provider detection and ADO URL parsing
├── pipelines.py # Pipeline definitions
└── plan.py # Execution plan generation
Tests run automatically on:
mainmainTests run against Python 3.10, 3.11, and 3.12.
Releases are automated via GitHub Actions:
pyproject.tomlsrc/ado_pipeline/__init__.pygit add pyproject.toml src/ado_pipeline/__init__.py
git commit -m "chore: bump version to X.Y.Z"
git tag vX.Y.Z
git push origin main --tags
See CONTRIBUTING.md for guidelines.
MIT License - see LICENSE for details.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.4.1 | 27 Jan 2026 | 6 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 19:46 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:eb679267d198ee5483cea30f947e85395bf04091e901586f58bcbb85d186b8aa