diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d458ac78a4..1c22474d45 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -236,58 +236,47 @@ 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 + + - name: Create Dev Drive using ReFS + run: ./script/setup-dev-driver.ps1 + # 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 + Copy-Item -Path "${{ github.workspace }}" -Destination "${{ env.ZED_WORKSPACE }}" -Recurse - name: Cache dependencies uses: swatinem/rust-cache@f0deed1e0edfc6a9be95417288c0e1099b1eeec3 # v2 with: save-if: ${{ github.ref == 'refs/heads/main' }} - workspaces: ${{ env.DEV_DRIVE }}/zed + workspaces: ${{ env.ZED_WORKSPACE }} cache-provider: "github" - env: - CARGO_HOME: ${{ env.DEV_DRIVE }}/.cargo - RUSTUP_HOME: ${{ env.DEV_DRIVE }}/.rustup - name: Configure CI run: | - mkdir -p ${{ env.DEV_DRIVE }}/.cargo -ErrorAction Ignore - cp ./.cargo/ci-config.toml ${{ env.DEV_DRIVE }}/.cargo/config.toml + mkdir -p ${{ env.CARGO_HOME }} -ErrorAction Ignore + cp ./.cargo/ci-config.toml ${{ env.CARGO_HOME }}/config.toml - name: cargo clippy + working-directory: ${{ env.ZED_WORKSPACE }} # 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 + working-directory: ${{ env.ZED_WORKSPACE }} 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 "${{ env.DEV_DRIVE }}/.cargo/config.toml" -Force + run: Remove-Item -Path "${{ env.CARGO_HOME }}/config.toml" -Force bundle-mac: timeout-minutes: 120 diff --git a/script/setup-dev-driver.ps1 b/script/setup-dev-driver.ps1 new file mode 100644 index 0000000000..28a9c3ed6c --- /dev/null +++ b/script/setup-dev-driver.ps1 @@ -0,0 +1,28 @@ +# Configures a drive for testing in CI. +# todo(windows) +# The current version of the Windows runner is 10.0.20348 which does not support DevDrive option. +# Ref: https://learn.microsoft.com/en-us/windows/dev-drive/ + +$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 + +$Drive = "$($Volume.DriveLetter):" + +# Show some debug information +Write-Output $Volume +Write-Output "Using Dev Drive at $Drive" + +# Move Cargo to the dev drive +New-Item -Path "$($Drive)/.cargo/bin" -ItemType Directory -Force +Copy-Item -Path "C:/Users/runneradmin/.cargo/*" -Destination "$($Drive)/.cargo/" -Recurse -Force + +Write-Output ` + "DEV_DRIVE=$($Drive)" ` + "RUSTUP_HOME=$($Drive)/.rustup" ` + "CARGO_HOME=$($Drive)/.cargo" ` + "ZED_WORKSPACE=$($Drive)/zed" ` + "PATH=$($Drive)/.cargo/bin;$env:PATH" ` + >> $env:GITHUB_ENV