#!/usr/bin/env bash set -euo pipefail SCRIPT_VERSION="2.0.0" # ================================================ # FACTUGES SYNC - Docker Build Script (Simplificado) # ----------------------------------------------- # Uso: # ./build.sh [--load] # ================================================ # ---------- 1. Validación ---------- if [[ $# -eq 0 || "$1" == --* ]]; then echo "ERROR: Falta el parámetro " echo "Uso: ./build.sh [--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}" mkdir -p "$OUT_DIR" # ---------- 3. Info ---------- DATE=$(date +'%Y%m%d-%H%M%S') ISO_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") IMAGE_VERSION=$(sed -n 's/^version[[:space:]]*=[[:space:]]*\(.*\)$/\1/p' \ "$PROJECT_DIR/setup.cfg" | head -n1) IMAGE_VERSION="${IMAGE_VERSION:-0.0.0}" IMAGE_NAME="factuges-sync" TAG_VERSION="${IMAGE_NAME}:${COMPANY}-${IMAGE_VERSION}" TAG_LATEST="${IMAGE_NAME}:${COMPANY}-latest" echo "" echo "-------------------------------------------------------" echo " FACTUGES SYNC Build Script v${SCRIPT_VERSION}" echo " Compañía: ${COMPANY}" echo " Versión: ${IMAGE_VERSION}" echo " Fecha: ${DATE}" echo "-------------------------------------------------------" echo "" # ---------- 4. Build único ---------- echo "📦 Construyendo imagen Docker..." docker build --no-cache \ -t "${TAG_VERSION}" \ -t "${TAG_LATEST}" \ --build-arg COMPANY="${COMPANY}" \ -f "${PROJECT_DIR}/Dockerfile" "${PROJECT_DIR}" echo "✅ Imagen construida: ${TAG_VERSION}" # ---------- 5. Save tar ---------- TAR_V="${OUT_DIR}/${IMAGE_NAME}-${COMPANY}-v${IMAGE_VERSION}-${DATE}.tar" TAR_LATEST="${OUT_DIR}/${IMAGE_NAME}-${COMPANY}-latest.tar" docker save -o "${TAR_V}" "${TAG_VERSION}" "${TAG_LATEST}" cp -f "${TAR_V}" "${TAR_LATEST}" echo "📦 Imagen guardada:" echo " - ${TAR_V}" echo " - ${TAR_LATEST}" # ---------- 6. Manifest ---------- MANIFEST_FILE="${OUT_DIR}/manifest-${IMAGE_VERSION}-${DATE}.json" cat > "${MANIFEST_FILE}" <