Skip to content

[Packaging] Enable installation from public GitHub releases - #1413

Open
Naga Nandyala (naga-nandyala) wants to merge 2 commits into
mainfrom
docs/public-install
Open

Naga Nandyala (naga-nandyala) wants to merge 2 commits into
mainfrom
docs/public-install

Conversation

@naga-nandyala

@naga-nandyala Naga Nandyala (naga-nandyala) commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

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.

  • Replace authenticated gh release discovery/downloads with anonymous HTTP downloads in the Bash and Windows PowerShell CLI installers.
  • Keep Bash installation free of jq and Python dependencies: select exactly one complete, quoted GitHub asset URL for the requested repository/package/platform and reject ambiguous or invalid matches.
  • Support piped Bash/PowerShell execution, including lean selection through AZCLI_PACKAGE, without leaking PowerShell script state into the caller.
  • Add install/azps-install.ps1 to download the PowerShell bundle, delegate module/version/scope options to its packaged helper, and clean up temporary files and repositories.
  • Update installation, extension, manual/offline, and getting-started documentation.
  • Add download-only Bash and PowerShell extension-bundle helpers with optional release pinning; keep extraction and az extension add --path explicit and remove release-discovery plumbing from the guides.
  • Integrate public-download regression coverage into the existing ADO native lifecycle validators using the exact pipeline archives. Preserve existing offline/safety/runtime checks; do not add standalone test suites, a new matrix, GitHub workflow changes, or jq installation steps.

Testing Guide
Completed locally:

  • WSL/Linux: full and lean CLI install/reinstall/runtime/uninstall with jq, gh, and Python absent from PATH.

  • 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:

  • No macOS host was available for native runtime testing; macOS asset selection and shared Bash syntax were checked.
  • Remote ADO pipelines have not been triggered manually.
  • The full Linux lifecycle validator passed its installer/safety/public-download checks, then encountered the previously reproduced baseline failure in the published 0.1.7 archive: unresolved Agent dependencies (Azure.ResourceManager, Microsoft.Extensions.AI, and Microsoft.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


  • The PR title starts with [Component Name] for customer-facing changes or {Component Name} for non-customer-facing changes, and does not end with trailing punctuation or spaces.
  • Customer-facing changes include a useful release note in the PR title or the History Notes section.
  • I added or updated tests for behavior changes.
  • I updated documentation when behavior, setup, support, or security guidance changed.

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>
Copilot AI balanced review requested due to automatic review settings November 12, 2026 02:03

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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>
Copilot AI balanced review requested due to automatic review settings November 12, 2026 02:17

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues remain for the changes enabling installation from public GitHub releases without authentication.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants