Uecko_ERP_FactuGES_sync/scripts/build-factuges-sync.sh

122 lines
3.3 KiB
Bash
Raw Normal View History

2025-11-30 11:25:10 +00:00
#!/usr/bin/env bash
set -euo pipefail
2025-12-11 09:31:15 +00:00
SCRIPT_VERSION="2.0.2"
2025-11-30 11:25:10 +00:00
# ================================================
2025-11-30 22:44:55 +00:00
# FACTUGES SYNC - Docker Build Script (Simplificado)
2025-11-30 11:25:10 +00:00
# -----------------------------------------------
# Uso:
# ./build.sh <company> [--load]
# ================================================
# ---------- 1. Validación ----------
if [[ $# -eq 0 || "$1" == --* ]]; then
2025-11-30 22:44:55 +00:00
echo "ERROR: Falta el parámetro <company>"
2025-11-30 11:25:10 +00:00
echo "Uso: ./build.sh <company> [--load]"
exit 1
fi
COMPANY="$1"
LOAD=false
[[ "${2:-}" == "--load" ]] && LOAD=true
# ---------- 2. Directorios ----------
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(realpath "${SCRIPT_DIR}/..")"
OUT_DIR="${PROJECT_DIR}/out/${COMPANY}"
2025-12-01 08:55:54 +00:00
rm -rf "$OUT_DIR"
2025-11-30 11:25:10 +00:00
mkdir -p "$OUT_DIR"
2025-12-01 08:55:54 +00:00
2025-11-30 11:25:10 +00:00
# ---------- 3. Info ----------
DATE=$(date +'%Y%m%d-%H%M%S')
ISO_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
2025-11-30 22:44:55 +00:00
IMAGE_VERSION=$(sed -n 's/^version[[:space:]]*=[[:space:]]*\(.*\)$/\1/p' \
"$PROJECT_DIR/setup.cfg" | head -n1)
2025-11-30 11:25:10 +00:00
IMAGE_VERSION="${IMAGE_VERSION:-0.0.0}"
2025-11-30 22:44:55 +00:00
IMAGE_NAME="factuges-sync"
TAG_VERSION="${IMAGE_NAME}:${COMPANY}-${IMAGE_VERSION}"
TAG_LATEST="${IMAGE_NAME}:${COMPANY}-latest"
2025-11-30 11:25:10 +00:00
echo ""
echo "-------------------------------------------------------"
echo " FACTUGES SYNC Build Script v${SCRIPT_VERSION}"
2025-11-30 22:44:55 +00:00
echo " Compañía: ${COMPANY}"
echo " Versión: ${IMAGE_VERSION}"
echo " Fecha: ${DATE}"
2025-12-01 08:55:54 +00:00
echo " Carga: ${LOAD}"
2025-11-30 11:25:10 +00:00
echo "-------------------------------------------------------"
echo ""
2025-11-30 22:44:55 +00:00
# ---------- 4. Build único ----------
echo "📦 Construyendo imagen Docker..."
2025-11-30 11:25:10 +00:00
2025-12-01 08:55:54 +00:00
#docker build --no-cache \
docker build \
2025-11-30 22:44:55 +00:00
-t "${TAG_VERSION}" \
-t "${TAG_LATEST}" \
--build-arg COMPANY="${COMPANY}" \
-f "${PROJECT_DIR}/Dockerfile" "${PROJECT_DIR}"
2025-11-30 11:25:10 +00:00
2025-11-30 22:44:55 +00:00
echo "✅ Imagen construida: ${TAG_VERSION}"
2025-11-30 11:25:10 +00:00
2025-11-30 22:44:55 +00:00
# ---------- 5. Save tar ----------
TAR_V="${OUT_DIR}/${IMAGE_NAME}-${COMPANY}-v${IMAGE_VERSION}-${DATE}.tar"
TAR_LATEST="${OUT_DIR}/${IMAGE_NAME}-${COMPANY}-latest.tar"
2025-11-30 11:25:10 +00:00
2025-11-30 22:44:55 +00:00
docker save -o "${TAR_V}" "${TAG_VERSION}" "${TAG_LATEST}"
cp -f "${TAR_V}" "${TAR_LATEST}"
2025-11-30 11:25:10 +00:00
2025-11-30 22:44:55 +00:00
echo "📦 Imagen guardada:"
echo " - ${TAR_V}"
echo " - ${TAR_LATEST}"
2025-11-30 11:25:10 +00:00
# ---------- 6. Manifest ----------
MANIFEST_FILE="${OUT_DIR}/manifest-${IMAGE_VERSION}-${DATE}.json"
cat > "${MANIFEST_FILE}" <<EOF
{
"company": "${COMPANY}",
"version": "${IMAGE_VERSION}",
"build_time": "${ISO_DATE}",
"docker_images": {
2025-11-30 22:44:55 +00:00
"sync": {
"versioned": "$(basename "${TAR_V}")",
"latest": "$(basename "${TAR_LATEST}")"
2025-11-30 11:25:10 +00:00
}
}
}
EOF
echo ""
echo "📄 Manifest generado: ${MANIFEST_FILE}"
echo ""
# ---------- 7. LOAD opcional ----------
if [[ "$LOAD" == true ]]; then
echo "📥 Subiendo imágenes al servidor..."
2025-12-11 09:31:15 +00:00
scp -P 49152 "${OUT_DIR}"/*.* \
2025-11-30 11:25:10 +00:00
rodax@vps-2.rodax-software.com:/opt/factuges/${COMPANY}/sync/
echo "📥 Cargando imágenes en Docker remoto..."
ssh -p 49152 rodax@vps-2.rodax-software.com <<EOF
2025-11-30 22:44:55 +00:00
docker load -i /opt/factuges/${COMPANY}/sync/$(basename "${TAR_V}")
docker load -i /opt/factuges/${COMPANY}/sync/$(basename "${TAR_LATEST}")
2025-11-30 11:25:10 +00:00
EOF
2025-11-30 22:44:55 +00:00
echo "✔ Imágenes cargadas"
2025-11-30 11:25:10 +00:00
fi
# ---------- 8. Resumen ----------
echo ""
echo "-------------------------------------------------------"
echo "🎯 BUILD COMPLETADO PARA '${COMPANY}'"
echo "🧩 Script version: ${SCRIPT_VERSION}"
echo "-------------------------------------------------------"
echo ""