Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 32 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,19 @@ jobs:
name: Set Cargo target directory
shell: bash
run: |
# The self-hosted Windows runner root, matching $RunnerDir in
# clockworklabs/infra runner-manager.sh.j2 and the warmed layout
# created by warm-cache-windows.ps1.
windows_runner_work="C:/actions-runner/_work"
if [[ "${RUNNER_OS}" == "Linux" ]]; then
cargo_target_dir="${HOME}/actions-runner/_work/target"
elif [[ "${RUNNER_OS}" == "Windows" && -d "${windows_runner_work}" ]]; then
# Our Windows image ships a warmed target outside the workspace,
# because checkout wipes GITHUB_WORKSPACE on every run -- that one
# `else` branch was the entire reason Windows built cold. The
# directory only exists on the self-hosted image, so GitHub-hosted
# windows-latest (the update-flow job) still falls through below.
cargo_target_dir="${windows_runner_work}/target"
else
# Forward slashes keep the Windows path compatible with Cargo,
# PowerShell, GitHub Actions, and Git Bash filesystem commands.
Expand All @@ -117,15 +128,28 @@ jobs:

- &configure-sccache
name: Configure sccache
if: runner.os == 'Linux'
if: runner.os == 'Linux' || runner.os == 'Windows'
shell: bash
run: |
# `command -v` decides whether this runner was warmed at all, so an
# unwarmed image degrades to a cold-but-working build. It cannot
# supply RUSTC_WRAPPER on Windows though: it reports an MSYS path
# (/c/sccache/sccache.exe) that Cargo, a native Windows process,
# cannot execute. Hence the explicit per-OS paths below, which are
# written by the warm scripts in clockworklabs/infra.
if command -v sccache >/dev/null 2>&1; then
if [[ "${RUNNER_OS}" == "Windows" ]]; then
sccache_bin="C:/sccache/sccache.exe"
sccache_dir="C:/actions-runner/_work/sccache"
else
sccache_bin="/usr/local/bin/sccache"
sccache_dir="${HOME}/.cache/sccache"
fi
# sccache cannot cache incremental compilation artifacts, so
# disable Cargo's incremental mode whenever the wrapper is active.
echo "CARGO_INCREMENTAL=0" >>"${GITHUB_ENV}"
echo "RUSTC_WRAPPER=/usr/local/bin/sccache" >>"${GITHUB_ENV}"
echo "SCCACHE_DIR=${HOME}/.cache/sccache" >>"${GITHUB_ENV}"
echo "RUSTC_WRAPPER=${sccache_bin}" >>"${GITHUB_ENV}"
echo "SCCACHE_DIR=${sccache_dir}" >>"${GITHUB_ENV}"
echo "SCCACHE_CACHE_SIZE=20G" >>"${GITHUB_ENV}"
fi

Expand Down Expand Up @@ -243,13 +267,13 @@ jobs:

- &show-sccache-stats
name: Show sccache statistics
if: always() && runner.os == 'Linux'
if: always() && (runner.os == 'Linux' || runner.os == 'Windows')
shell: bash
run: |
if command -v sccache >/dev/null 2>&1; then
sccache --show-stats
else
echo "::notice::sccache is not installed on this Linux runner"
echo "::notice::sccache is not installed on this ${RUNNER_OS} runner"
fi

- name: Upload Cargo timing reports
Expand All @@ -275,7 +299,7 @@ jobs:
needs: [merge_queue_noop, lints]
if: ${{ needs.merge_queue_noop.outputs.skip != 'true' }}
name: Upload build artifacts (Windows)
runs-on: spacetimedb-windows-runner
runs-on: spacetimedb-windows-runner-staging
timeout-minutes: 15
env:
RUST_BACKTRACE: full
Expand Down Expand Up @@ -361,7 +385,7 @@ jobs:
smoketest_build_windows:
needs: [upload-build-artifacts-windows]
name: Build smoketests (Windows)
runs-on: spacetimedb-windows-runner
runs-on: spacetimedb-windows-runner-staging
timeout-minutes: 15
env:
RUST_BACKTRACE: full
Expand Down Expand Up @@ -537,7 +561,7 @@ jobs:
fail-fast: false
matrix:
partition: [1, 2, 3, 4]
runs-on: spacetimedb-windows-runner
runs-on: spacetimedb-windows-runner-staging
timeout-minutes: 30
env:
RUST_BACKTRACE: full
Expand Down
Loading