You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Extend provider-neutral Linux and Windows runner setup with validated additional labels while retaining the required platform/backend labels. Accept an otherwise fresh Windows runner directory containing only a prewarmed _work directory.
Isolate VMSS identity checks, managed-disk and host preparation, reboot continuation, and managed-identity/Key Vault registration in scripts/setup/azure/. One example configuration per OS documents the Azure-specific inputs.
Build deterministic, hash-verified Azure guest packages from the repository's authoritative runner setup scripts and adjacent tool manifest. Reject mismatched Rust toolchains, unsafe configurations, and custom data over Azure's decoded size limit. Packaging does not modify Azure resources or GitHub runners.
Cover the adapters with offline configuration, package, identity, and installer tests, and wire Python, shell, and PowerShell checks into the existing CI actions.
This function is the security boundary preventing Network Service jobs from reaching IMDS, but the offline Windows tests never execute it; they only extract Get-RunnerName and Get-ExtraRunnerLabels. Add mocked coverage for rule creation and for rejecting a wrong principal, address, direction, action, or disabled rule so a firewall regression cannot pass CI.
Correct unsupported enableSsh guidance in failure advice
The failure advice points operators to enableSsh=false, but this adapter has no such parameter or configuration field and always runs the OpenSSH setup before the packaged installer. Recommend only an actionable option supported here, such as selecting an image with OpenSSH capability support.
The first-mount path skips the device-identity check above. Attached disks restored from the same snapshot can share a PARTUUID or UUID, so mounting through the generated fstab entry can select a disk other than the configured LUN and still report success. Compare the mounted device's MAJ:MIN with TARGETDEV after mounting too, before bootstrap uses the volume.
The reason will be displayed to describe this comment to others. Learn more.
It can be Python directly. The payload generator already installs python3 and orders bootstrap after cloud-final.service. It embeds all guest files in one cloud-init payload, so additional helper files do not require separate downloads. Neither distribution nor interpreter bootstrapping requires this Bash wrapper. A direct Python controller can handle configuration, identity, HTTP/token requests, reboot coordination, and runner orchestration while retaining the existing OS-specific Bash helpers. That structural conversion remains a separate, deferred refactor; the current correctness fixes do not change the controller language.
Keep the required CI labels while allowing extra pool labels. Accept the Windows work directory populated by runner prewarm without accepting a partial runner installation.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Persist and verify the Linux runner metadata block, require an exact Windows NVMe LUN, reject invalid bootstrap inputs and stale package outputs, and use generic runner names.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Invalidate stale disk completion before recording a pending reboot. Cover Windows disk bootstrap gating and metadata firewall enforcement with offline mocks, and replace unsupported OpenSSH recovery advice.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Provision distribution-appropriate disk tools, preserve mount ownership before fstab updates, and verify newly mounted devices and effective Dom0 defaults. Tighten Windows bootstrap ownership, scratch-path validation, and metadata firewall scope. Avoid restarting registered Linux runners and disable completed provisioning.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Install only MSHV boot components and remove unrelated runtime checks. Preserve metadata protection during serialized rule replacement, reject unsafe Windows ancestor and trailing-period paths, and pin ZIP creator metadata across platforms.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Require a full-device zero comparison before initializing unmarked Linux disks. Validate running firewall services, effective profiles, and the enforced ActiveStore rule before registration. Reject the reserved Linux job account as administrator and canonicalize packaged PowerShell newlines.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reject reserved DOS path components and use host-neutral gzip headers. Verify complete RAW disks with bounded-memory compiled reads, preserve unowned empty GPT layouts, and align continuation timeouts with full-device verification. Retain the supported Format-Volume Partition parameter.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Resolve omitted and null benchmark scratch paths on the configured managed data drive before validation. Package the explicit validated path, retain existing overlap rules and invalid-value rejection, and cover default collisions and packaged configuration.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Privileged disk preparation, credential isolation, and reboot handling need isolated Azure validation and human review, including the unresolved extension timeout risk.
This synchronous call keeps initial bootstrap inside Windows Custom Script Extension, including the full-device RAW-disk scan and prerequisite installation. The extension has a 90-minute execution limit, so provisioning that exceeds it is reported as failed despite the continuation task's four-hour budget. Registering an AtStartup task does not move the current invocation outside that limit. Stage bootstrap in an independent SYSTEM scheduled task and start it immediately, allowing the extension to return after successful handoff. Keep bootstrap completion and failure reporting separate from extension staging.
Keep package verification and staging inside the extension, but hand initial bootstrap to the persistent four-hour SYSTEM task. Preserve reboot and retry behavior, separate staging from completion, and log/rethrow bootstrap failures. Mock all scheduled-task operations and cover handoff/configuration/metadata failures.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Link the built fake OpenVMM on Unix so parallel child launches cannot inherit writable copies and fail with ETXTBSY. Keep Windows copying, golden recordings, test parallelism, and production launch behavior unchanged. Add a deterministic executable-linkage regression.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Addressed the extension-timeout finding from the latest review in 06b90fc: the extension now verifies/stages the package and starts the persistent SYSTEM task without waiting for bootstrap. The startup trigger, four-hour budget, and retries are preserved. Staging acknowledgement is separate from final readiness; bootstrap logs errors, emits a failure marker, and rethrows failures.
e4e1420 fixes the Linux CI failure in the CLI replay fixture: Unix roots now link the built fake OpenVMM instead of creating writable copies while other test threads launch children, eliminating that ETXTBSY exposure. Production launch behavior, Windows copies, parallelism, and recorded expectations are unchanged.
The repaired Linux CLI target (13 tests), Rust lint configurations, Azure package suite, and native Windows mocked cases pass locally. As of 14:11 PDT, CI run 39324816007 has passed the Linux/Windows Rust checks, Linux/Windows CLI checks, and lint/type/format. The overall matrix is still in progress with no failed jobs.
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
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.
Summary
_workdirectory.scripts/setup/azure/. One example configuration per OS documents the Azure-specific inputs.