mirror of
https://github.com/openai/codex.git
synced 2026-05-14 16:22:51 +00:00
Incorporate the uv Dev Drive setup pattern by remounting newly-created Dev Drive VHDs after filter changes, using the configured temp directory for Bazel repo contents cache, and moving Cargo target output onto the selected fast Windows drive while preserving the default target path on other platforms. Co-authored-by: Codex <noreply@openai.com>
76 lines
2.5 KiB
PowerShell
76 lines
2.5 KiB
PowerShell
# Configure a fast drive for Windows CI jobs.
|
|
#
|
|
# GitHub-hosted Windows runners do not always expose a secondary D: volume. When
|
|
# they do not, try to create a Dev Drive VHD and fall back to C: if the runner
|
|
# image does not allow that provisioning path.
|
|
|
|
function Use-FallbackDrive {
|
|
param([string]$Reason)
|
|
|
|
Write-Warning "$Reason Falling back to C:"
|
|
return "C:"
|
|
}
|
|
|
|
function Invoke-BestEffort {
|
|
param([scriptblock]$Script, [string]$Description)
|
|
|
|
try {
|
|
& $Script
|
|
} catch {
|
|
Write-Warning "$Description failed: $($_.Exception.Message)"
|
|
}
|
|
}
|
|
|
|
if (Test-Path "D:\") {
|
|
Write-Output "Using existing drive at D:"
|
|
$Drive = "D:"
|
|
} else {
|
|
try {
|
|
$VhdPath = Join-Path $env:RUNNER_TEMP "codex-dev-drive.vhdx"
|
|
$SizeBytes = 64GB
|
|
|
|
if (Test-Path $VhdPath) {
|
|
Remove-Item -Path $VhdPath -Force
|
|
}
|
|
|
|
New-VHD -Path $VhdPath -SizeBytes $SizeBytes -Dynamic -ErrorAction Stop | Out-Null
|
|
$Mounted = Mount-VHD -Path $VhdPath -Passthru -ErrorAction Stop
|
|
$Disk = $Mounted | Get-Disk -ErrorAction Stop
|
|
$Disk | Initialize-Disk -PartitionStyle GPT -ErrorAction Stop
|
|
$Partition = $Disk | New-Partition -AssignDriveLetter -UseMaximumSize -ErrorAction Stop
|
|
$Volume = $Partition | Format-Volume -FileSystem ReFS -NewFileSystemLabel "CodexDevDrive" -DevDrive -Confirm:$false -Force -ErrorAction Stop
|
|
|
|
$Drive = "$($Volume.DriveLetter):"
|
|
|
|
Invoke-BestEffort { fsutil devdrv trust $Drive } "Trusting Dev Drive $Drive"
|
|
Invoke-BestEffort { fsutil devdrv enable /disallowAv } "Disabling AV filter attachment for Dev Drives"
|
|
try {
|
|
Dismount-VHD -Path $VhdPath
|
|
Mount-VHD -Path $VhdPath | Out-Null
|
|
} catch {
|
|
Write-Warning "Remounting Dev Drive $Drive failed: $($_.Exception.Message)"
|
|
if (-not (Test-Path "$Drive\")) {
|
|
throw
|
|
}
|
|
}
|
|
Invoke-BestEffort { fsutil devdrv query $Drive } "Querying Dev Drive $Drive"
|
|
|
|
Write-Output "Using Dev Drive at $Drive"
|
|
} catch {
|
|
$Drive = Use-FallbackDrive "Failed to create Dev Drive: $($_.Exception.Message)"
|
|
}
|
|
}
|
|
|
|
$Tmp = "$Drive\codex-tmp"
|
|
New-Item -Path $Tmp -ItemType Directory -Force | Out-Null
|
|
|
|
$CargoTargetDir = "$Drive\codex-cargo-target"
|
|
New-Item -Path $CargoTargetDir -ItemType Directory -Force | Out-Null
|
|
|
|
@(
|
|
"DEV_DRIVE=$Drive"
|
|
"CARGO_TARGET_DIR=$CargoTargetDir"
|
|
"TMP=$Tmp"
|
|
"TEMP=$Tmp"
|
|
) | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|