Repository navigation
[Packaging] Enable installation from public GitHub releases - #1413
Open
Naga Nandyala (naga-nandyala) wants to merge 2 commits into
Open
Naga Nandyala (naga-nandyala) wants to merge 2 commits into
Naga Nandyala (naga-nandyala) wants to merge 2 commits into
Conversation
Replace authenticated GitHub CLI downloads with anonymous HTTP downloads, add the PowerShell module bootstrap, and update installation documentation. Keep Bash installation free of jq and Python dependencies and exercise public download paths in existing ADO lifecycle validators using exact pipeline artifacts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Naga Nandyala (naga-nandyala)
requested a review
from a team
as a code owner
November 12, 2026 02:03
There was a problem hiding this comment.
🟡 Changes recommended
The installer-download assertion is defined in a local scope, causing its script-level invocation to fail and halt Windows lifecycle validation before the download and runtime checks.
1 open issue
What changed in this PR
This PR enables AzCLIPS CLI and PowerShell installation from public GitHub releases without GitHub authentication, and extends the existing packaging validators to cover public downloads.
Changes:
- Replace authenticated CLI downloads with anonymous HTTP downloads and support piped installation and uninstallation.
- Add a PowerShell module bootstrap with option forwarding and temporary repository/file cleanup.
- Update installation documentation and add download fixtures backed by the exact pipeline archives.
| File | Description |
|---|---|
install/azps-install.ps1 |
Add public PowerShell module bootstrap and cleanup. |
install/azcli-uninstall.sh |
Support piped execution and self-contained help. |
install/azcli-uninstall.ps1 |
Isolate uninstaller state in a child scope. |
install/azcli-install.sh |
Download public assets without GitHub CLI or a JSON parser. |
install/azcli-install.ps1 |
Use public HTTP downloads and isolate script state. |
docs/pp-scenarios/scenario-1-get-started-and-profiles.md |
Update getting-started downloads and prerequisites. |
docs/azure-powershell/docs-conceptual/install-powershell-modules.md |
Document bootstrap options and offline installation. |
docs/azure-powershell/docs-conceptual/install-overview.md |
Introduce one-command public module installation. |
docs/azure-cli/docs-conceptual/install-overview.md |
Update installation, removal, and troubleshooting instructions. |
docs/azure-cli/docs-conceptual/install-cli-manual.md |
Clarify public archive access and manual installation. |
docs/azure-cli/docs-conceptual/install-cli-extensions.md |
Replace authenticated extension downloads with HTTP examples. |
devops/scripts/packaging/windows/zip/test_windows_zip_bundled_plus_ext.ps1 |
Add public-download fixtures and piped invocation checks. |
devops/scripts/packaging/powershell/test_signed_azps_cmdlets.ps1 |
Add bootstrap installation, forwarding, and cleanup checks. |
devops/scripts/packaging/macos/tarball/test_macos_tarball_bundled_plus_ext.sh |
Integrate shared download validation and piped removal. |
devops/scripts/packaging/linux/tarball/test_linux_tarball_bundled_plus_ext.sh |
Integrate shared download validation and piped removal. |
devops/scripts/packaging/common/validate_public_cli_download.sh |
Add shared metadata and download failure fixtures. |
devops/scripts/AGENTS.md |
Document installer validation behavior and constraints. |
.azure-pipelines/AGENTS.md |
Document public-download coverage in existing native jobs. |
Review effort: Balanced
Add standalone Bash and PowerShell download-only helpers with optional release pinning, safe output replacement, and failure cleanup. Keep extraction and installation explicit in the documentation, validate downloads using pipeline extension packages, and correct the Windows lifecycle assertion scope. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Related command
AzCLIPS CLI and PowerShell installation and uninstallation
Description
Azure/azclips is now public, so installation should not require GitHub CLI authentication or a separately installed JSON parser.
ghrelease discovery/downloads with anonymous HTTP downloads in the Bash and Windows PowerShell CLI installers.jqand Python dependencies: select exactly one complete, quoted GitHub asset URL for the requested repository/package/platform and reject ambiguous or invalid matches.AZCLI_PACKAGE, without leaking PowerShell script state into the caller.install/azps-install.ps1to download the PowerShell bundle, delegate module/version/scope options to its packaged helper, and clean up temporary files and repositories.az extension add --pathexplicit and remove release-discovery plumbing from the guides.jqinstallation steps.Testing Guide
Completed locally:
WSL/Linux: full and lean CLI install/reinstall/runtime/uninstall with
jq,gh, and Python absent fromPATH.Bash fixtures: missing/duplicate links, malformed metadata, query/path truncation, HTTP/nonmatching URLs, wrong repository/platform, misleading fields, HTTP failures, installation preservation, temporary-file cleanup, compact/multiline metadata, piped help, and truncated scripts.
Live GitHub metadata: full/lean asset selection for all six Bash platform labels (12 combinations).
Native Windows PowerShell 7.6.10: full/lean CLI download fixtures, runtime, piped uninstall, failure preservation, cleanup, and caller-scope isolation.
WSL PowerShell 7.6.0: existing signed-module validator plus public bootstrap installation/import of a pinned child module and default Az rollup, option forwarding (including guarded AllUsers forwarding), numeric version inference, existing-repository protection, and failure cleanup.
Bash syntax/ShellCheck, PowerShell script syntax and 32 documentation snippets, extension-download examples, ADO YAML parsing, and
git diff --check.Extension download helpers: passed fixture checks and live anonymous pinned downloads on WSL Bash, WSL PowerShell 7.6.0, and native Windows PowerShell 7.6.10. Checked default/pinned selection, invalid/duplicate/missing URLs, HTTP/partial/missing downloads, preservation of existing bundles, cleanup, scope isolation, and download-only behavior. Also corrected and verified the Windows lifecycle assertion is defined at script scope.
Limitations:
Azure.ResourceManager,Microsoft.Extensions.AI, andMicrosoft.Extensions.Caching.Abstractions). This PR does not change those packaged dependencies.History Notes
[CLI] Install public release packages without GitHub authentication or a standalone JSON parser
[PowerShell] Add a public module installation bootstrap with temporary repository cleanup
[CLI] Simplify extension bundle downloads with download-only Bash and PowerShell helpers
[Component Name]for customer-facing changes or{Component Name}for non-customer-facing changes, and does not end with trailing punctuation or spaces.