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
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:
@@ -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}"
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user