[release/13.5] Stabilize Azure Functions Core Tools install in CI - #19186
Conversation
Download the pinned 4.12.1 release archive directly instead of using the npm package's floating CDN payload. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 19186Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 19186" |
There was a problem hiding this comment.
Pull request overview
Note
Copilot could not run the full agentic suite for this review because it was automatically requested on a bot-authored pull request. Request a review from Copilot under Reviewers to retry with the full agentic suite. Improved support for bot-authored pull requests is coming soon.
Updates CI to install Azure Functions Core Tools from a pinned GitHub release (with checksum verification) instead of the npm package, and adds a test to lock in this workflow behavior.
Changes:
- Replace
npm i -g azure-functions-core-tools@4inrun-tests.ymlwith a pinned GitHub release download + SHA256 verification. - Add a unit test asserting the workflow uses the pinned release URL, checksum verification, and version check.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| tests/Infrastructure.Tests/Pipelines/NpmCliPackageTests.cs | Adds a regression test to ensure CI uses the pinned Core Tools GitHub release path. |
| .github/workflows/run-tests.yml | Switches Core Tools installation to a pinned zip download with SHA256 verification. |
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
| curl --fail --location --retry 3 --retry-all-errors \ | ||
| --output "$core_tools_archive" \ | ||
| "https://github.com/Azure/azure-functions-core-tools/releases/download/${core_tools_version}/Azure.Functions.Cli.linux-x64.${core_tools_version}.zip" | ||
| echo 'faf8fb8d50b5293df338bec70594b12f45730e9fe251805298859b2238cf627e '"$core_tools_archive" | sha256sum --check - |
| # The npm package floats a nested CDN payload from its postinstall script, so a bad publish | ||
| # can break CI even when the package version range has not changed. Download the same | ||
| # pinned release shape used by extension E2E instead. | ||
| core_tools_version='4.12.1' |
| curl --fail --location --retry 3 --retry-all-errors \ | ||
| --output "$core_tools_archive" \ | ||
| "https://github.com/Azure/azure-functions-core-tools/releases/download/${core_tools_version}/Azure.Functions.Cli.linux-x64.${core_tools_version}.zip" | ||
| echo 'faf8fb8d50b5293df338bec70594b12f45730e9fe251805298859b2238cf627e '"$core_tools_archive" | sha256sum --check - |
Mitch Denny (mitchdenny)
left a comment
There was a problem hiding this comment.
Approved for release/13.5. This is a focused CI-only backport that replaces the broken floating Core Tools CDN install with the pinned, checksummed release path validated on main.
Tests selector (audit mode)The full test matrix and all jobs still run in audit mode. The tests and jobs below are what selective CI would run under enforcement. Runs the full test matrix + all jobs (ALL) — a rule matching '.github/workflows/run-tests.yml' selects ALL Selection computed for commit |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
55854c7
into
release/13.5
|
✅ No documentation update needed. Step 5 branch taken: Exclusion reasons from Triggered signals: Per workflow rules, |
Backport of #19175 to release/13.5
/cc Mitch Denny (@mitchdenny) Adam Ratzman (@adamint)
Customer Impact
The shared Playground CI leg cannot install Azure Functions Core Tools because the floating npm
@4package resolves to4.13.2, whose Linux x64 CDN payload returns HTTP 404. This makes otherwise-unrelated release/13.5 PRs fail their required CI validation.Testing
The source PR passed all 353 executed CI checks. Local Linux x64 validation downloaded the pinned
4.12.1GitHub release, verified its SHA-256 checksum, and confirmedfunc --versionreports4.12.1. An Infrastructure regression test verifies the workflow remains pinned to the checksummed release path.Risk
Low. The change is limited to the Linux Azure Functions Core Tools setup used by the Playground/Azure test workflow, reuses the installation pattern already used by extension E2E tests, and does not change shipped product code.
Regression?
No — this is an external upstream npm/CDN publication failure rather than a regression in Aspire.