Describe the bug
The CI pipeline (azclitools/public) is red for every PR that modifies any extension, regardless of the change. The Integration Tests, Build Tests (Python 3.10–3.14), azdev linter, and azdev style jobs all fail because azdev extension add <ext> has become a silent no-op: it prints Adding extension '…', exits 0, but never actually registers/installs the extension. az extension list afterwards still shows only azure-devops, and azdev's discovery reports an empty Extensions: set. As a result:
azdev test finds no tests ('azext_<ext>' not found. If newly added, re-run with --discover), and
- the follow-up
azdev extension remove <ext> fails with extension(s) not installed: <ext> (exit 1), failing the job.
Reproduces on unrelated modules, so it is not caused by any PR's code:
Both fail identically, at the same log line numbers.
Related command
azdev extension add, azdev test, azdev extension remove (run by scripts/ci/test_source.py)
Errors
Adding extension '/mnt/vss/_work/1/s/src/image-gallery'...
...
Extensions: <- azdev sees ZERO extensions
Test on modules: azext_image_gallery
WARNING: 'azext_image_gallery' not found. If newly added, re-run with --discover
WARNING: No tests selected to run.
ERROR: extension(s) not installed: image-gallery
Traceback (most recent call last):
File ".../scripts/ci/test_source.py", line 87, in test_extension
run_command(cmd, check_return_code=True)
subprocess.CalledProcessError: Command '['azdev', 'extension', 'remove', 'image-gallery']' returned non-zero exit status 1.
Issue script & Debug output
Failing step logs:
azdev setup builds the toolchain fresh each run:
git clone -q --single-branch -b dev https://github.com/Azure/azure-cli.git ../azure-cli
Successfully installed azure-cli-core-2.88.0
pip install --upgrade "azdev==0.2.12"
Expected behavior
azdev extension add <ext> installs/registers the extension so that azdev test can discover and run its tests and azdev extension remove <ext> succeeds — i.e. Integration Tests / linter / style pass for PRs that only modify extension code.
Environment Summary
azure-cli 2.88.0
core 2.88.0
azdev 0.2.12
Extensions directory /opt/az/azcliextensions
Development extension sources /mnt/vss/_work/1/s
Python (Linux) 3.10.19
Additional context
Likely root cause: azdev==0.2.12 (released 2026-07-03, 3 days before these failures). The pipeline pins azdev==0.2.12, and that version's only changelog entry touches the exact command that's failing:
0.2.12 — Editable installs (azdev setup, azdev extension add, code generation) now pass --no-build-isolation so wheels build against the environment's pinned setuptools instead of an isolated PEP 517 build environment. This fixes editable-install failures introduced by the setuptools pinning.
So azdev extension add's editable-install path changed in 0.2.12 (now --no-build-isolation), which lines up exactly with the "prints Adding extension '…', exits 0, but never registers the extension" behavior. The previous released version (0.2.10; 0.2.11 was skipped on PyPI) did not touch this path. az --version reports azure-cli-core 2.88.0, so the CLI core itself looks fine — the regression aligns with the azdev bump rather than the azure-cli dev branch.
PyPI: https://pypi.org/project/azdev/0.2.12/ (uploaded 2026-07-03)
Suggested next steps:
- Temporarily pin the pipeline back to
azdev==0.2.10 to confirm/mitigate.
- Investigate whether
--no-build-isolation in azdev extension add silently fails the editable build (e.g. missing build backend / setuptools mismatch) and swallows the error (exit 0 despite no install).
Describe the bug
The CI pipeline (
azclitools/public) is red for every PR that modifies any extension, regardless of the change. TheIntegration Tests, Build Tests(Python 3.10–3.14),azdev linter, andazdev stylejobs all fail becauseazdev extension add <ext>has become a silent no-op: it printsAdding extension '…', exits 0, but never actually registers/installs the extension.az extension listafterwards still shows onlyazure-devops, and azdev's discovery reports an emptyExtensions:set. As a result:azdev testfinds no tests ('azext_<ext>' not found. If newly added, re-run with --discover), andazdev extension remove <ext>fails withextension(s) not installed: <ext>(exit 1), failing the job.Reproduces on unrelated modules, so it is not caused by any PR's code:
aks-preview) — build 327693--markerand--show-next-markerfromsig image-definition list-communityandsig image-version list-community#10072 (image-gallery, a trivial module) — build 327696Both fail identically, at the same log line numbers.
Related command
azdev extension add,azdev test,azdev extension remove(run byscripts/ci/test_source.py)Errors
Issue script & Debug output
Failing step logs:
azdev setupbuilds the toolchain fresh each run:Expected behavior
azdev extension add <ext>installs/registers the extension so thatazdev testcan discover and run its tests andazdev extension remove <ext>succeeds — i.e. Integration Tests / linter / style pass for PRs that only modify extension code.Environment Summary
Additional context
Likely root cause:
azdev==0.2.12(released 2026-07-03, 3 days before these failures). The pipeline pinsazdev==0.2.12, and that version's only changelog entry touches the exact command that's failing:So
azdev extension add's editable-install path changed in 0.2.12 (now--no-build-isolation), which lines up exactly with the "printsAdding extension '…', exits 0, but never registers the extension" behavior. The previous released version (0.2.10; 0.2.11 was skipped on PyPI) did not touch this path.az --versionreportsazure-cli-core 2.88.0, so the CLI core itself looks fine — the regression aligns with the azdev bump rather than theazure-clidevbranch.PyPI: https://pypi.org/project/azdev/0.2.12/ (uploaded 2026-07-03)
Suggested next steps:
azdev==0.2.10to confirm/mitigate.--no-build-isolationinazdev extension addsilently fails the editable build (e.g. missing build backend / setuptools mismatch) and swallows the error (exit 0 despite no install).