just playing with tangled

github: use the `D:` drive on Windows

Emily fbb14a1b be432750

+46 -1
+45 -1
.github/actions/setup-windows/action.yml
··· 3 3 This action configures the Windows builders to run tests. 4 4 runs: 5 5 using: "composite" 6 - steps: [] 6 + steps: 7 + # The GitHub Actions hosted Windows runners have a slow persistent 8 + # `C:` drive and a temporary `D:` drive with better throughput. The 9 + # repository checkout is placed on `D:` by default, but the user 10 + # profile is on `C:`, slowing down access to temporary directories 11 + # and the Rust toolchain we install. Since our build environment is 12 + # ephemeral anyway, we can save a couple minutes of CI time by 13 + # placing everything on `D:`. 14 + # 15 + # Some projects have reported even bigger wins by mounting a VHDX 16 + # virtual drive with a ReFS file system on it, with or without the 17 + # native Dev Drive feature available in Windows 2025, but it seems 18 + # to make things slightly slower for us overall compared to `D:`. 19 + # Further investigation and experimentation would be welcome! 20 + # 21 + # See: <https://chadgolden.com/blog/github-actions-hosted-windows-runners-slower-than-expected-ci-and-you> 22 + - name: 'Set up D: drive' 23 + shell: pwsh 24 + run: | 25 + # Set up D: drive 26 + 27 + # Short file names are disabled by default on the `D:` drive, 28 + # which breaks some of our tests. Enable them. 29 + # 30 + # This has a slight performance penalty, and won’t be possible 31 + # if we switch to ReFS/Dev Drives. The alternatives are to 32 + # reduce CI coverage for the security mitigation the tests are 33 + # checking, or arrange for those tests to take a separate path 34 + # to a drive that supports short file names to use instead of 35 + # the primary temporary directory. 36 + fsutil 8dot3name set D: 0 37 + 38 + # Move the temporary directory to `D:\Temp`. 39 + New-Item -Path D:\ -Name Temp -ItemType directory 40 + # Copy the effective permissions without inheritance. 41 + $Acl = Get-Acl -Path $env:TMP 42 + $Acl.SetAccessRuleProtection($true, $true) 43 + Set-Acl -Path D:\Temp -AclObject $Acl 44 + 45 + Add-Content -Path $env:GITHUB_ENV @" 46 + TMP=D:\Temp 47 + TEMP=D:\Temp 48 + RUSTUP_HOME=D:\.rustup 49 + CARGO_HOME=D:\.cargo 50 + "@
+1
.github/workflows/ci.yml
··· 69 69 with: 70 70 persist-credentials: false 71 71 - name: Set up Windows Builders 72 + if: startswith(matrix.os, 'windows') 72 73 uses: ./.github/actions/setup-windows 73 74 - name: Install Rust 74 75 uses: dtolnay/rust-toolchain@56f84321dbccf38fb67ce29ab63e4754056677e0