mirror of
https://github.com/coder/coder.git
synced 2026-11-01 04:47:17 +08:00
ci(.github): remove the go-cache action (#27250)
Closes https://github.com/coder/internal/issues/1619 Closes ENG-3039 Closes https://github.com/coder/internal/issues/1002 Closes ENG-3018 The `test-go-pg` Go cache grew until the post-job save could no longer complete within the job timeout, cancelling the job on every `main` run. Depot runners already provide remote Go build caching via [`GOCACHEPROG`](https://depot.dev/docs/cache/integrations/gocache), which writes every object it serves into `GOCACHE` and never evicts, so persisting `GOCACHE` with `actions/cache` on top just carries an ever-growing directory forward. #20510 removed the custom build cache steps for exactly this reason, and the `go-cache` action introduced in #25727 unintentionally reinstated them. The action is now removed entirely, along with its module cache persistence: a full cache miss plus cold `go mod download` on a Depot runner takes about 10 seconds, faster than any warm `actions/cache` restore of the module cache was. `setup-go-paths` is kept, as it points `GOCACHE` and friends at the Windows RAM disk, but its now-unused caching-related outputs are removed.
This commit is contained in:
@@ -1,76 +0,0 @@
|
||||
name: "Go cache"
|
||||
description: Restore and save Go build and module caches.
|
||||
inputs:
|
||||
cache-path:
|
||||
description: "Optional newline-delimited cache paths. Defaults to go env GOCACHE and GOMODCACHE."
|
||||
required: false
|
||||
default: ""
|
||||
key-prefix:
|
||||
description: "Prefix for the cache key."
|
||||
required: false
|
||||
default: "go"
|
||||
download-modules:
|
||||
description: "Whether to run go mod download after restoring cache."
|
||||
required: false
|
||||
default: "true"
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Compute Go cache key
|
||||
id: go-cache
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
if [[ -n "${INPUT_CACHE_PATH}" ]]; then
|
||||
paths="${INPUT_CACHE_PATH}"
|
||||
else
|
||||
paths="$(printf '%s\n%s' "$(go env GOCACHE)" "$(go env GOMODCACHE)")"
|
||||
fi
|
||||
|
||||
go_version="$(go env GOVERSION)"
|
||||
paths_hash="$(printf '%s\n' "${paths}" | git hash-object --stdin)"
|
||||
hash="$(
|
||||
{
|
||||
printf '%s\n' "${go_version}"
|
||||
for file in go.mod go.sum; do
|
||||
if [[ -f "${file}" ]]; then
|
||||
git hash-object "${file}"
|
||||
fi
|
||||
done
|
||||
} | git hash-object --stdin
|
||||
)"
|
||||
|
||||
{
|
||||
echo "path<<EOF"
|
||||
echo "${paths}"
|
||||
echo "EOF"
|
||||
echo "key=${INPUT_KEY_PREFIX}-${RUNNER_OS}-${RUNNER_ARCH}-${paths_hash}-${hash}"
|
||||
echo "restore-key=${INPUT_KEY_PREFIX}-${RUNNER_OS}-${RUNNER_ARCH}-${paths_hash}-"
|
||||
} >> "$GITHUB_OUTPUT"
|
||||
env:
|
||||
INPUT_CACHE_PATH: ${{ inputs.cache-path }}
|
||||
INPUT_KEY_PREFIX: ${{ inputs.key-prefix }}
|
||||
|
||||
- name: Restore Go cache, save on main
|
||||
if: ${{ github.ref == 'refs/heads/main' }}
|
||||
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: ${{ steps.go-cache.outputs.path }}
|
||||
key: ${{ steps.go-cache.outputs.key }}
|
||||
restore-keys: |
|
||||
${{ steps.go-cache.outputs.restore-key }}
|
||||
|
||||
- name: Restore Go cache read-only
|
||||
if: ${{ github.ref != 'refs/heads/main' }}
|
||||
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||
with:
|
||||
path: ${{ steps.go-cache.outputs.path }}
|
||||
key: ${{ steps.go-cache.outputs.key }}
|
||||
restore-keys: |
|
||||
${{ steps.go-cache.outputs.restore-key }}
|
||||
|
||||
- name: Download Go modules
|
||||
if: ${{ inputs.download-modules == 'true' }}
|
||||
shell: bash
|
||||
run: ./.github/scripts/retry.sh -- go mod download -x
|
||||
@@ -1,26 +1,9 @@
|
||||
name: "Setup Go Paths"
|
||||
description: Overrides Go paths like GOCACHE and GOMODCACHE to use temporary directories.
|
||||
outputs:
|
||||
gocache:
|
||||
description: "Value of GOCACHE"
|
||||
value: ${{ steps.paths.outputs.gocache }}
|
||||
gomodcache:
|
||||
description: "Value of GOMODCACHE"
|
||||
value: ${{ steps.paths.outputs.gomodcache }}
|
||||
gopath:
|
||||
description: "Value of GOPATH"
|
||||
value: ${{ steps.paths.outputs.gopath }}
|
||||
gotmp:
|
||||
description: "Value of GOTMPDIR"
|
||||
value: ${{ steps.paths.outputs.gotmp }}
|
||||
cached-dirs:
|
||||
description: "Go directories that should be cached between CI runs"
|
||||
value: ${{ steps.paths.outputs.cached-dirs }}
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Override Go paths
|
||||
id: paths
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
|
||||
with:
|
||||
script: |
|
||||
@@ -39,14 +22,6 @@ runs:
|
||||
core.exportVariable('GOPATH', gopathDir);
|
||||
core.exportVariable('GOTMPDIR', gotmpDir);
|
||||
|
||||
core.setOutput('gocache', gocacheDir);
|
||||
core.setOutput('gomodcache', gomodcacheDir);
|
||||
core.setOutput('gopath', gopathDir);
|
||||
core.setOutput('gotmp', gotmpDir);
|
||||
|
||||
const cachedDirs = `${gocacheDir}\n${gomodcacheDir}`;
|
||||
core.setOutput('cached-dirs', cachedDirs);
|
||||
|
||||
- name: Create directories
|
||||
shell: bash
|
||||
run: |
|
||||
|
||||
Reference in New Issue
Block a user