Skip to content

build(deps): bump worker PowerShell to 7.6.5 for hosted-image parity - #311

Open
kyle-sexton wants to merge 3 commits into
mainfrom
build/powershell-7.6.5
Open

build(deps): bump worker PowerShell to 7.6.5 for hosted-image parity#311
kyle-sexton wants to merge 3 commits into
mainfrom
build/powershell-7.6.5

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

No linked issue

Summary

Review-only drain of the github-hosted-powershell row of #283: PowerShell 7.6.4 → 7.6.5 in the worker image, restoring parity with GitHub's Ubuntu 24.04 hosted image.

Based on main and revertable on its own, but merge it last: #309#310 → this PR. See "Merge order" under Related — merging this before #310 silently regresses its own reviewed-decision record.

This PR carries the do-not-merge label and must not be merged autonomously. docs/releases.md ("Freshness policy"): never auto-merge controller, runner, image, toolchain, Scale Set Client, Action, or release changes, and a passing drift check is necessary but is not promotion approval.

Problem

docs/releases.md states that "PowerShell tracks the hosted manifest rather than getting ahead of it, preserving cloud parity." The current hosted manifest — actions/runner-images images/ubuntu/Ubuntu2404-Readme.md at commit c5170d2845dc0eb0f22853ec70bd4f1c891112ca (2026-08-21) — lists:

- PowerShell 7.6.5

The worker image is pinned at 7.6.4, so it is now behind the hosted image. Adopting 7.6.5 restores parity rather than leading it.

Fix

Moves the pin, its checksum, and the manifest-evidence references together:

  • Dockerfile: ARG POWERSHELL_VERSION=7.6.5, ARG POWERSHELL_SHA256=b34ab3b19acac1d3d4d0d3cfdb02acf62f457b0b6a962ff008132033f7566844.
  • release/dependencies.jsonpowerShell: version, linuxX64ArchiveSha256, source, hostedImageManifestCommit, hostedImageManifestSource.
  • release/dependencies.jsongh: hostedImageManifestCommit / hostedImageManifestSource also move to c5170d2, so both entries cite the manifest actually consulted rather than leaving two entries pointed at different manifest commits. The gh version pin is unchanged — the same manifest still lists GitHub CLI 2.97.0, re-verified as part of this change.
  • release/dependencies.jsonresolvedAt2026-08-27T08:00:00Z; it still claimed the pins were resolved on 2026-08-21, which stops being true once the PowerShell pin and both manifest references move. build(deps): bump setup-buildx-action to 4.3.0 and ci-workflows to v0.17.0 #291 set the precedent of matching resolvedAt to the reviewed-decision instant. No CI check reads that field.
  • release/dependency-drift-review.json: appends the reviewed decision for this row. The existing Go hold is left intact — that row is handled in build(deps): bump Go to 1.27.0 and the lint contract to golangci-lint 2.13.1 #310.
  • docs/worker-image.md: moves the documented reviewed baseline (PowerShell version, reviewed manifest commit, and the manifest link in the references section) to 7.6.5 at c5170d2, so the authoritative worker-image doc, the baked image, and the release evidence agree. Added in 893af64 in response to review.

Upstream change review, v7.6.4 → v7.6.5

A servicing patch. From the release notes:

  • Engine: "Fix the dot-sourcing behavior of pwsh -file for advanced-function scripts" — the only functional change.
  • Build/packaging: .NET SDK 10.0.302, Microsoft.PowerShell.Archive 1.2.6, OneBranch pipeline fixes, EXE signing condition fix, localized resources limited to MSIX packages, minimum-size arm64 package.
  • Tests: CI expanded to servicing branches.

No breaking changes and no security fixes are documented in this release. The one engine fix affects pwsh -file dot-sourcing of advanced-function scripts; the worker image installs pwsh for job steps and does not itself depend on that behavior.

Verification

Check Method Result
Hosted manifest actually lists 7.6.5 Fetched images/ubuntu/Ubuntu2404-Readme.md at c5170d2845dc0eb0f22853ec70bd4f1c891112ca line 217: - PowerShell 7.6.5
gh still at 2.97.0 in that manifest Same fetch line 110: - GitHub CLI 2.97.0 — pin unchanged
Release asset digest GET /repos/PowerShell/PowerShell/releases/tags/v7.6.5 powershell-7.6.5-linux-x64.tar.gzsha256:b34ab3b19acac1d3d4d0d3cfdb02acf62f457b0b6a962ff008132033f7566844
Checksum verified independently Downloaded the asset and hashed it locally rather than trusting release metadata alone sha256sumb34ab3b19acac1d3d4d0d3cfdb02acf62f457b0b6a962ff008132033f7566844matches
Worker image builds with the new pin docker build -t ci-runner-worker:pr-b-verify . success; the in-build sha256sum --check --strict step reported /tmp/powershell.tar.gz: OK
Installed runtime is actually 7.6.5 docker run --entrypoint pwsh … -Command '$PSVersionTable.PSVersion.ToString()' 7.6.5
gh in the built image unchanged docker run --entrypoint gh … --version gh version 2.97.0 (2026-07-31)
Release pin consistency ./scripts/Test-ReleasePins.ps1 (enforces the Dockerfile ARGs match release/dependencies.json) Release and workflow pins are internally consistent.
JSON validity JSON.parse on both release/*.json pass
No stale baseline left behind grep -rn '8926c75|7\.6\.4' across markdown, JSON, YAML, PowerShell, shell, and the Dockerfile no hits outside the historical from values in release/dependency-drift-review.json

No Go source changes, so the Go lanes are unaffected by this PR.

Related

Merge order: this PR goes LAST

#309#310 → this PR. This PR's content is independent of the other two, but the ordering is not optional, because all three touch release/dependency-drift-review.json.

If this PR merges before #310, #310's wholesale replacement then deletes the merged PowerShell decision and regresses it back to pending / "proposed", silently, because git sees the whole file replaced with no textual conflict. That would leave already-merged reviewed evidence contradicting itself.

Merging in the stated order avoids that. The resulting conflict here is small but semantic, not textual: resolve it by moving this PR's github-hosted-powershell entry into the new 2026-08-27 bumped array and deleting the pending block that stands in for it.

Fleet rollout

Required. PowerShell is baked into the worker image and release/dependencies.json is a compatibility-pair input feeding compatibility.json. Merging this PR changes nothing on any live runner: publication and promotion of a new compatibility pair run through the release workflow and the provisioning rolling-upgrade runbook, which is a separate operator procedure. This lane did not touch any runner host.


This PR was prepared by an automated agent lane. It is review-only: the agent did not merge it and will not, and deliberately left issue 283 open.

GitHub's Ubuntu 24.04 hosted-image manifest at commit c5170d2 lists
PowerShell 7.6.5. Per the docs/releases.md freshness policy, PowerShell
tracks that manifest rather than getting ahead of it, so adopting 7.6.5
restores cloud parity instead of leading it.

Moves the pin, its checksum, and the manifest-evidence references
together: Dockerfile POWERSHELL_VERSION / POWERSHELL_SHA256 and the
release/dependencies.json powerShell entry. The gh entry's
hostedImageManifestCommit also moves to c5170d2 so both entries cite the
manifest actually consulted; the same manifest still lists GitHub CLI
2.97.0, so the gh version pin itself is unchanged.

v7.6.5 is a servicing patch over v7.6.4 with one engine fix (dot-sourcing
behavior of `pwsh -file` for advanced-function scripts) plus .NET SDK and
packaging updates. The release notes document no breaking change and no
security fix.

The archive checksum was verified independently by downloading the asset
and hashing it, and the worker image was built locally: the in-build
`sha256sum --check --strict` passed and the resulting image reports
pwsh 7.6.5 and gh 2.97.0.

Review-only per the docs/releases.md freshness policy; carries the
do-not-merge label. Promotion additionally needs a new reviewed
compatibility pair and a rolling-host rollout.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@kyle-sexton kyle-sexton added dependencies Dependency updates (Dependabot / Renovate). do-not-merge Hard merge gate: do not merge while applied. labels Aug 27, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a7920451fa

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread release/dependencies.json
kyle-sexton and others added 2 commits August 27, 2026 05:48
docs/worker-image.md is the authoritative description of the worker
image's reviewed upstream baseline, and it still named PowerShell 7.6.4
at hosted-image manifest commit 8926c75 while the Dockerfile and
release/dependencies.json in this PR record 7.6.5 at c5170d2. Moves the
documented version, the reviewed manifest commit, and the manifest link
together so the doc, the baked image, and the release evidence agree.

Raised in review on #311; no remaining references to the old baseline
outside the historical dependency-drift-review record.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
release/dependencies.json still claimed the pins were resolved against
official sources at 2026-08-21T07:40:00Z, which is no longer true once
the PowerShell pin and both hosted-image manifest references move. #291,
the immediate predecessor of this drain, moved resolvedAt to the same
instant as the reviewed-decision record's reviewedAt; this follows that
precedent.

Metadata only. Test-ReleasePins.ps1 does not read this field, so nothing
in CI would have caught the stale value.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Dependency updates (Dependabot / Renovate). do-not-merge Hard merge gate: do not merge while applied.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant