mirror of
https://github.com/go-gitea/gitea.git
synced 2026-06-13 19:19:52 +00:00
360f34d7fa
Reduces the CI cache growth and disk pressure behind the flaky `No space left on device` failures in https://github.com/go-gitea/gitea/issues/37974. **`go-cache`** — the cache-seeder saved with a `restore-keys` prefix fallback, so every `go.sum` change restored the previous cache and re-saved the union; old module versions and stale build objects accumulated (~3 GB → ~7 GB) and overflowed disk on smaller runners. Drop `restore-keys` from the seeder **save** branches so each `go.sum` seeds a clean, size-bounded cache. PR runs keep `restore-keys` for warm-start fallback. **`free-disk-space`** — delete the unused preinstalled toolchains in parallel (~86 s → ~54 s) and log `df -h /` before/after. Measured during review: the hosted `ubuntu-latest` fleet is heterogeneous — most runners have ~89 GB free on `/` (a full pgsql integration shard peaks at ~17 GB used), but a minority arrive nearly full and fail mid cache-restore. The toolchain deletion is the headroom that keeps those runners green, so it stays; the cache bound shrinks the footprint for every runner. Authored with assistance from Claude (Opus 4.8). --------- Signed-off-by: silverwind <me@silverwind.io> Co-authored-by: bircni <bircni@icloud.com>
51 lines
2.5 KiB
YAML
51 lines
2.5 KiB
YAML
name: go-caches
|
|
description: Restore the go module, build, and golangci-lint caches. Save only on the cache-seeder workflow.
|
|
|
|
# Only the cache-seeder workflow saves; rename requires updating cache-seeder.yml.
|
|
# The lint job restores but does not save the gobuild cache, so only one writer
|
|
# (the gobuild job) populates it and there is no contention on the cache key.
|
|
# Seeder restores by exact key only (no restore-keys) so each go.sum seeds a clean
|
|
# cache and size stays bounded; do not add restore-keys here. PR runs keep them.
|
|
|
|
inputs:
|
|
lint-cache:
|
|
description: Restore (and save in cache-seeder) ~/.cache/golangci-lint
|
|
default: "false"
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- if: ${{ github.workflow == 'cache-seeder' }}
|
|
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
with:
|
|
path: ~/go/pkg/mod
|
|
key: gomod-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('go.sum') }}
|
|
- if: ${{ github.workflow != 'cache-seeder' }}
|
|
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
with:
|
|
path: ~/go/pkg/mod
|
|
key: gomod-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('go.sum') }}
|
|
restore-keys: gomod-${{ runner.os }}-${{ runner.arch }}
|
|
- if: ${{ github.workflow == 'cache-seeder' && inputs.lint-cache != 'true' }}
|
|
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
with:
|
|
path: ~/.cache/go-build
|
|
key: gobuild-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('go.sum') }}
|
|
- if: ${{ github.workflow != 'cache-seeder' || inputs.lint-cache == 'true' }}
|
|
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
with:
|
|
path: ~/.cache/go-build
|
|
key: gobuild-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('go.sum') }}
|
|
restore-keys: gobuild-${{ runner.os }}-${{ runner.arch }}
|
|
- if: ${{ inputs.lint-cache == 'true' && github.workflow == 'cache-seeder' }}
|
|
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
with:
|
|
path: ~/.cache/golangci-lint
|
|
key: golint-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('go.sum', '.golangci.yml') }}
|
|
- if: ${{ inputs.lint-cache == 'true' && github.workflow != 'cache-seeder' }}
|
|
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
with:
|
|
path: ~/.cache/golangci-lint
|
|
key: golint-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('go.sum', '.golangci.yml') }}
|
|
restore-keys: golint-${{ runner.os }}-${{ runner.arch }}
|