From 2442c49048b71cc92a5d940c0745e84f6a5a7213 Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Tue, 4 Feb 2025 01:49:31 +0100 Subject: [PATCH] ci: Use ReFS for our Windows CI (#23901) Based on uv's CI setup. Closes #ISSUE Release Notes: - N/A --- .github/workflows/ci.yml | 29 ++++++++++++++++++++++++++--- to_remove.file | 0 2 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 to_remove.file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a49a7ba79b..0dee4fc06e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -234,35 +234,58 @@ jobs: runs-on: hosted-windows-1 steps: # more info here:- https://github.com/rust-lang/cargo/issues/13020 + - name: Create Dev Drive using ReFS + run: | + $Volume = New-VHD -Path C:/zed_dev_drive.vhdx -SizeBytes 30GB | + Mount-VHD -Passthru | + Initialize-Disk -Passthru | + New-Partition -AssignDriveLetter -UseMaximumSize | + Format-Volume -FileSystem ReFS -Confirm:$false -Force + Write-Output $Volume + Write-Output "DEV_DRIVE=$($Volume.DriveLetter):" >> $env:GITHUB_ENV - name: Enable longer pathnames for git run: git config --system core.longpaths true - name: Checkout repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: clean: false + # actions/checkout does not let us clone into anywhere outside ${{ github.workspace }}, so we have to copy the clone... + - name: Copy Git Repo to Dev Drive + run: | + Copy-Item -Path "${{ github.workspace }}" -Destination "${{ env.DEV_DRIVE }}/zed" -Recurse - name: Cache dependencies uses: swatinem/rust-cache@f0deed1e0edfc6a9be95417288c0e1099b1eeec3 # v2 with: save-if: ${{ github.ref == 'refs/heads/main' }} + workspaces: ${{ env.DEV_DRIVE }}/zed cache-provider: "github" + env: + CARGO_HOME: ${{ env.DEV_DRIVE }}/.cargo + RUSTUP_HOME: ${{ env.DEV_DRIVE }}/.rustup - name: Configure CI run: | - mkdir -p ./../.cargo - cp ./.cargo/ci-config.toml ./../.cargo/config.toml + mkdir -p ${{ env.DEV_DRIVE }}/.cargo -ErrorAction Ignore + cp ./.cargo/ci-config.toml ${{ env.DEV_DRIVE }}/.cargo/config.toml - name: cargo clippy # Windows can't run shell scripts, so we need to use `cargo xtask`. run: cargo xtask clippy + env: + CARGO_HOME: ${{ env.DEV_DRIVE }}/.cargo + RUSTUP_HOME: ${{ env.DEV_DRIVE }}/.rustup - name: Build Zed run: cargo build + env: + CARGO_HOME: ${{ env.DEV_DRIVE }}/.cargo + RUSTUP_HOME: ${{ env.DEV_DRIVE }}/.rustup # Since the Windows runners are stateful, so we need to remove the config file to prevent potential bug. - name: Clean CI config file if: always() - run: Remove-Item -Path "./../.cargo" -Recurse -Force + run: Remove-Item -Path "${{ env.DEV_DRIVE }}/.cargo/config.toml" -Force bundle-mac: timeout-minutes: 120 diff --git a/to_remove.file b/to_remove.file new file mode 100644 index 0000000000..e69de29bb2