diff --git a/.github/actions/free-disk-space/action.yml b/.github/actions/free-disk-space/action.yml new file mode 100644 index 00000000..3e2e999c --- /dev/null +++ b/.github/actions/free-disk-space/action.yml @@ -0,0 +1,32 @@ +name: Free disk space +description: > + Reclaim disk space on GitHub-hosted Ubuntu runners by removing large + preinstalled toolchains the build does not use. Needed because the + `--features embeddings-all` build (candle / tokenizers / hf-hub / image / + reqwest) plus the restored Rust build cache can otherwise exhaust the + runner's root disk ("No space left on device"). See issue #775. + + Linux-only: the caller gates this with `if: runner.os == 'Linux'`. The + removed paths are unused by the Rust / Python / Node toolchains these jobs + rely on, so they are safe to delete. + +runs: + using: composite + steps: + - name: Free disk space + shell: bash + run: | + echo "Disk usage before cleanup:" + df -h / + # Remove large preinstalled toolchains the build never touches. Each + # `|| true` keeps the step succeeding even if a path is already absent + # (paths differ slightly between runner images). + sudo rm -rf /usr/share/dotnet || true + sudo rm -rf /usr/local/lib/android || true + sudo rm -rf /opt/ghc || true + sudo rm -rf /usr/local/.ghcup || true + sudo rm -rf /opt/hostedtoolcache/CodeQL || true + # Reclaim space held by cached Docker images (none of these jobs use Docker). + sudo docker image prune --all --force || true + echo "Disk usage after cleanup:" + df -h / diff --git a/.github/workflows/periodic.yml b/.github/workflows/periodic.yml index 01a737f4..d0b0a29c 100644 --- a/.github/workflows/periodic.yml +++ b/.github/workflows/periodic.yml @@ -36,6 +36,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install protoc uses: ./.github/actions/install-protoc with: @@ -83,6 +87,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install toolchain uses: dtolnay/rust-toolchain@v1 with: @@ -126,6 +134,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install protoc uses: ./.github/actions/install-protoc with: @@ -174,6 +186,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install protoc uses: ./.github/actions/install-protoc with: @@ -222,6 +238,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install protoc uses: ./.github/actions/install-protoc with: @@ -270,6 +290,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Set up Python uses: actions/setup-python@v6 with: @@ -323,6 +347,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Set up Node.js uses: actions/setup-node@v6 with: @@ -366,6 +394,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -411,6 +443,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Set up PHP uses: shivammathur/setup-php@v2 with: diff --git a/.github/workflows/regression.yml b/.github/workflows/regression.yml index 01c50267..e4d6eaae 100644 --- a/.github/workflows/regression.yml +++ b/.github/workflows/regression.yml @@ -176,6 +176,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install protoc uses: ./.github/actions/install-protoc with: @@ -224,6 +228,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install toolchain uses: dtolnay/rust-toolchain@v1 with: @@ -268,6 +276,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install protoc uses: ./.github/actions/install-protoc with: @@ -317,6 +329,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install protoc uses: ./.github/actions/install-protoc with: @@ -366,6 +382,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install protoc uses: ./.github/actions/install-protoc with: @@ -415,6 +435,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Set up Python uses: actions/setup-python@v6 with: @@ -469,6 +493,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Set up Node.js uses: actions/setup-node@v6 with: @@ -542,6 +570,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -589,6 +621,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Set up PHP uses: shivammathur/setup-php@v2 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 30523b34..25bfe727 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,6 +37,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install protoc uses: ./.github/actions/install-protoc with: @@ -84,6 +88,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install toolchain uses: dtolnay/rust-toolchain@v1 with: @@ -127,6 +135,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install protoc uses: ./.github/actions/install-protoc with: @@ -175,6 +187,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install protoc uses: ./.github/actions/install-protoc with: @@ -223,6 +239,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Install protoc uses: ./.github/actions/install-protoc with: @@ -271,6 +291,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Set up Python uses: actions/setup-python@v6 with: @@ -324,6 +348,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Set up Node.js uses: actions/setup-node@v6 with: @@ -367,6 +395,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -413,6 +445,10 @@ jobs: - name: Run checkout uses: actions/checkout@v6 + - name: Free disk space + if: runner.os == 'Linux' + uses: ./.github/actions/free-disk-space + - name: Set up PHP uses: shivammathur/setup-php@v2 with: