feat(ci): enhance caching strategy and update workflows for pnpm and Go
quality / commitlint (push) Skipped
quality / changes (push) Successful in 8s
quality / docker-check (push) Skipped
quality / openapi (push) Successful in 25s
quality / web (push) Successful in 1m16s
quality / go (push) Successful in 2m46s
quality / bird2 (push) Successful in 17s
CD / quality (push) Successful in 5m0s
CD / publish (push) Successful in 4m22s

- Updated CI workflows to export cache paths for pnpm and Go, improving cache efficiency and reducing package download times.
- Replaced corepack enable step with cache path exports in multiple workflows.
- Adjusted cache paths to utilize environment variables for better flexibility and clarity.
- Enhanced README documentation to reflect changes in caching mechanisms and runner configurations.
This commit is contained in:
Denozordec
2026-08-18 19:13:10 +07:00
parent e55d2c5aba
commit 1bfe460e4b
6 changed files with 186 additions and 29 deletions
+44
View File
@@ -0,0 +1,44 @@
#!/usr/bin/env sh
# Абсолютные пути для actions/cache: на act_runner «~» часто не раскрывается → cache miss.
set -eu
: "${GITHUB_ENV:?GITHUB_ENV required (Gitea/GitHub Actions)}"
HOME_DIR="${HOME:-}"
if [ -z "$HOME_DIR" ]; then
HOME_DIR="$(getent passwd "$(id -u)" 2>/dev/null | cut -d: -f6 || true)"
fi
HOME_DIR="${HOME_DIR:-/root}"
if command -v go >/dev/null 2>&1; then
GOMODCACHE="$(go env GOMODCACHE)"
GOCACHE="$(go env GOCACHE)"
GOPATH="$(go env GOPATH)"
else
GOMODCACHE="${HOME_DIR}/go/pkg/mod"
GOCACHE="${HOME_DIR}/.cache/go-build"
GOPATH="${HOME_DIR}/go"
fi
PNPM_STORE_DIR="${HOME_DIR}/.pnpm-store"
COREPACK_HOME="${HOME_DIR}/.cache/node/corepack"
GOBIN="${GOPATH}/bin"
GOLANGCI_LINT_CACHE="${HOME_DIR}/.cache/golangci-lint"
mkdir -p "$PNPM_STORE_DIR" "$COREPACK_HOME" "$GOMODCACHE" "$GOCACHE" "$GOBIN" "$GOLANGCI_LINT_CACHE"
{
echo "HOME_DIR=${HOME_DIR}"
echo "PNPM_STORE_DIR=${PNPM_STORE_DIR}"
echo "COREPACK_HOME=${COREPACK_HOME}"
echo "GOMODCACHE=${GOMODCACHE}"
echo "GOCACHE=${GOCACHE}"
echo "GOPATH=${GOPATH}"
echo "GOBIN=${GOBIN}"
echo "GOLANGCI_LINT_CACHE=${GOLANGCI_LINT_CACHE}"
} >> "$GITHUB_ENV"
echo "cache-env HOME_DIR=${HOME_DIR}"
echo "cache-env PNPM_STORE_DIR=${PNPM_STORE_DIR}"
echo "cache-env GOMODCACHE=${GOMODCACHE}"
echo "cache-env GOCACHE=${GOCACHE}"
echo "cache-env GOBIN=${GOBIN}"
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env sh
# Бинарь golangci-lint в GOBIN (кэш actions/cache), без goinstall и без hashFiles.
set -eu
VER="${GOLANGCI_LINT_VERSION:-v1.64.8}"
: "${GOBIN:?GOBIN required — run scripts/ci/export-cache-env.sh after setup-go}"
mkdir -p "$GOBIN"
export PATH="${GOBIN}:${PATH}"
if [ -n "${GOLANGCI_LINT_CACHE:-}" ]; then
mkdir -p "$GOLANGCI_LINT_CACHE"
export GOLANGCI_LINT_CACHE
fi
if [ ! -x "${GOBIN}/golangci-lint" ]; then
echo "install golangci-lint ${VER} -> ${GOBIN}"
curl -sSfL "https://raw.githubusercontent.com/golangci/golangci-lint/${VER}/install.sh" \
| sh -s -- -b "$GOBIN" "$VER"
fi
golangci-lint version
golangci-lint run
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env sh
# pnpm install из кэша Gitea (store + node_modules). Без повторного download при hit.
set -eu
: "${PNPM_STORE_DIR:?PNPM_STORE_DIR required — run scripts/ci/export-cache-env.sh first}"
export COREPACK_HOME="${COREPACK_HOME:-${HOME:-/root}/.cache/node/corepack}"
mkdir -p "$PNPM_STORE_DIR" "$COREPACK_HOME"
corepack enable
pnpm config set store-dir "$PNPM_STORE_DIR"
echo "pnpm store: $(pnpm store path)"
echo "PNPM_CACHE_HIT=${PNPM_CACHE_HIT:-}"
if [ "${PNPM_CACHE_HIT:-}" = "true" ]; then
if pnpm install --frozen-lockfile --offline; then
echo "pnpm install --offline (cache hit)"
exit 0
fi
echo "offline install failed — prefer-offline"
fi
pnpm install --frozen-lockfile --prefer-offline