Files
gitea/smart-build.sh
T
petru eb0b9b2dee
release-nightly / nightly-binary (push) Has been cancelled
release-nightly / nightly-container (push) Has been cancelled
Add some fetch & builing scripts
2026-04-15 21:11:20 +00:00

75 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Încarcă NVM dacă este disponibil
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# Forțează folosirea versiunii 22
nvm use 22 > /dev/null 2>&1 || echo "⚠️ NVM nu a putut activa Node 22 automatically."
# --- 1. VERIFICARE INTEGRITATE ȘI CURĂȚARE CACHE INIȚIALĂ ---
echo "🔍 Verificare stare inițială..."
# Dacă compilarea anterioară a fost întreruptă, ștergem binarul parțial
if [ -f "gitea" ] || [ -f "gitea.exe" ]; then
echo "🧹 Am găsit resturi de la o compilare anterioară. Curăț..."
rm -f gitea gitea.exe
fi
# Verificăm dacă node_modules există. Dacă nu, forțăm pnpm install
if [ ! -d "node_modules" ]; then
echo "⚠️ node_modules lipsește. Forțez instalarea..."
pnpm install --frozen-lockfile
fi
# --- 2. LOGICĂ FRONTEND (CHECKSUM) ---
CHECKSUM_FILE=".frontend.hash"
CURRENT_HASH=$(find web_src package.json tailwind.config.js -type f -print0 2>/dev/null | xargs -0 sha1sum | sha1sum | awk '{print $1}')
if [ -f "$CHECKSUM_FILE" ] && [ "$CURRENT_HASH" == "$(cat $CHECKSUM_FILE)" ]; then
echo "✅ Frontend neschimbat."
else
echo "🚀 Modificări detectate. Se rulează pnpm build..."
pnpm install --frozen-lockfile && pnpm run build
echo "$CURRENT_HASH" > "$CHECKSUM_FILE"
fi
# --- 3. COMPILARE MULTI-PLATFORMĂ ---
TARGETS=("linux/amd64" "windows/amd64" "linux/arm/7")
mkdir -p dist
for TARGET in "${TARGETS[@]}"; do
IFS="/" read -r OS ARCH ARM_VER <<< "$TARGET"
EXT="" && [ "$OS" == "windows" ] && EXT=".exe"
SUFFIX="-$OS-$ARCH" && [ ! -z "$ARM_VER" ] && SUFFIX="-$OS-armv$ARM_VER"
OUTPUT="dist/gitea$SUFFIX$EXT"
echo "📦 Building for $OS/$ARCH ${ARM_VER:+(v$ARM_VER)}..."
# Setăm variabilele și compilăm
export GOOS=$OS
export GOARCH=$ARCH
export GOARM=$ARM_VER
export CGO_ENABLED=0
# Rulăm build-ul
make build TAGS="bindata"
# Verificăm dacă binarul a fost creat cu succes
if [ -f "gitea$EXT" ]; then
mv "gitea$EXT" "$OUTPUT"
echo "✅ Creat: $OUTPUT"
else
echo "❌ Eroare: Binarul pentru $OS/$ARCH nu a putut fi generat!"
exit 1 # Oprim totul dacă o platformă eșuează
fi
unset GOOS GOARCH GOARM
done
# --- 4. CURĂȚARE FINALĂ ---
echo "✨ Build finalizat cu succes în /dist"
go clean -cache