Subida a producción

This commit is contained in:
David Arranz 2025-12-01 09:55:54 +01:00
parent b8e250e417
commit 20f09c3b5e
6 changed files with 38 additions and 17 deletions

View File

@ -19,7 +19,7 @@ Mode = Literal["factuges", "verifactu", "all"]
def run_module(module: str) -> None: def run_module(module: str) -> None:
"""Lanza un módulo Python como subproceso y falla en caso de error.""" """Lanza un módulo Python como subproceso y falla en caso de error."""
subprocess.run([sys.executable, "-m", module], check=True) subprocess.run([sys.executable, "-m", module], check=False)
def resolve_mode(arg_mode: Optional[str]) -> Mode: def resolve_mode(arg_mode: Optional[str]) -> Mode:
@ -59,7 +59,7 @@ def main() -> None:
run_module("app.sync_verifactu_main") run_module("app.sync_verifactu_main")
else: # mode == "all" else: # mode == "all"
# Primero sincroniza FactuGES, luego Verifactu. # Primero sincroniza FactuGES, luego Verifactu.
# Si la primera falla, el proceso termina por el check=True. # Si la primera falla, el proceso no termina por el check=False.
run_module("app.sync_factuges_main") run_module("app.sync_factuges_main")
run_module("app.sync_verifactu_main") run_module("app.sync_verifactu_main")

View File

@ -1,5 +1,3 @@
# app/logger.py
from __future__ import annotations from __future__ import annotations
import logging import logging
@ -49,9 +47,9 @@ def create_logger(
# ------------------------------ # ------------------------------
# 2) Handler de fichero (solo prod) # 2) Handler de fichero (solo prod)
# ------------------------------ # ------------------------------
environment = os.getenv("ENV", "development").lower() is_production = os.getenv("ENV") == "production"
if log_path and environment in ("production", "prod"): if log_path and is_production:
p = Path(log_path) p = Path(log_path)
# Aseguramos directorios # Aseguramos directorios
@ -67,6 +65,19 @@ def create_logger(
h_file.setFormatter(formatter) h_file.setFormatter(formatter)
logger.addHandler(h_file) logger.addHandler(h_file)
# Verificación explícita
try:
test_msg = f"Log file active at: {p}"
h_file.acquire()
h_file.stream.write(f"{test_msg}\n")
h_file.flush()
h_file.release()
logger.info(test_msg)
except Exception as e:
logger.error(f"ERROR: cannot write to log file {p}: {e}")
raise
return logger return logger

View File

@ -23,13 +23,16 @@ def main():
logger = create_logger( logger = create_logger(
name="factuges-sync", name="factuges-sync",
log_path=log_dir / "sync_factuges.log", # Solo lo genera en producción log_path=log_dir / "sync_factuges.log", # Solo lo genera en producción
) )
logger.info("")
logger.info("============================================================") logger.info("============================================================")
logger.info(" FACTUGES Sync FactuGES - START ") logger.info("FACTUGES Sync FactuGES - START ")
logger.info(" Version: %s", version) logger.info("Version: %s", version)
logger.info(" UTC Now: %s", datetime.utcnow().isoformat()) logger.info("UTC Now: %s", datetime.utcnow().isoformat())
logger.info(" Environment: {config['ENV']}") logger.info("Environment: %s", config['ENV'])
logger.info("Log: %s", log_dir / "sync_factuges.log")
log_config(config) log_config(config)
@ -70,6 +73,7 @@ def main():
logger.info("== END (0) ==") logger.info("== END (0) ==")
logger.info("============================================================") logger.info("============================================================")
logger.info("")
sys.exit(0) sys.exit(0)
except Exception as e: except Exception as e:
@ -78,6 +82,7 @@ def main():
logger.error("Traceback:", exc_info=True) logger.error("Traceback:", exc_info=True)
logger.info("== END (1) ==") logger.info("== END (1) ==")
logger.info("============================================================") logger.info("============================================================")
logger.info("")
if conn_mysql is not None: if conn_mysql is not None:
conn_mysql.rollback() conn_mysql.rollback()

View File

@ -27,10 +27,11 @@ def main():
) )
logger.info("============================================================") logger.info("============================================================")
logger.info(" FACTUGES Sync Verifactu - START ") logger.info("FACTUGES Sync Verifactu - START ")
logger.info(" Version: %s", version) logger.info("Version: %s", version)
logger.info(" UTC Now: %s", datetime.utcnow().isoformat()) logger.info("UTC Now: %s", datetime.utcnow().isoformat())
logger.info(" Environment: {config['ENV']}") logger.info("Environment: %s", config['ENV'])
logger.info("Log: %s", log_dir / "sync_verifactu.log")
log_config(config) log_config(config)

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
SCRIPT_VERSION="2.0.0" SCRIPT_VERSION="2.0.1"
# ================================================ # ================================================
# FACTUGES SYNC - Docker Build Script (Simplificado) # FACTUGES SYNC - Docker Build Script (Simplificado)
@ -26,8 +26,10 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(realpath "${SCRIPT_DIR}/..")" PROJECT_DIR="$(realpath "${SCRIPT_DIR}/..")"
OUT_DIR="${PROJECT_DIR}/out/${COMPANY}" OUT_DIR="${PROJECT_DIR}/out/${COMPANY}"
rm -rf "$OUT_DIR"
mkdir -p "$OUT_DIR" mkdir -p "$OUT_DIR"
# ---------- 3. Info ---------- # ---------- 3. Info ----------
DATE=$(date +'%Y%m%d-%H%M%S') DATE=$(date +'%Y%m%d-%H%M%S')
ISO_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") ISO_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
@ -46,13 +48,15 @@ echo " FACTUGES SYNC Build Script v${SCRIPT_VERSION}"
echo " Compañía: ${COMPANY}" echo " Compañía: ${COMPANY}"
echo " Versión: ${IMAGE_VERSION}" echo " Versión: ${IMAGE_VERSION}"
echo " Fecha: ${DATE}" echo " Fecha: ${DATE}"
echo " Carga: ${LOAD}"
echo "-------------------------------------------------------" echo "-------------------------------------------------------"
echo "" echo ""
# ---------- 4. Build único ---------- # ---------- 4. Build único ----------
echo "📦 Construyendo imagen Docker..." echo "📦 Construyendo imagen Docker..."
docker build --no-cache \ #docker build --no-cache \
docker build \
-t "${TAG_VERSION}" \ -t "${TAG_VERSION}" \
-t "${TAG_LATEST}" \ -t "${TAG_LATEST}" \
--build-arg COMPANY="${COMPANY}" \ --build-arg COMPANY="${COMPANY}" \

View File

@ -1,6 +1,6 @@
[metadata] [metadata]
name = factuges-sync name = factuges-sync
version = 0.0.25 version = 0.1.4
description = ETL job to sync data from legacy DB to MariaDB description = ETL job to sync data from legacy DB to MariaDB
author = Rodax Software author = Rodax Software
author_email = info@rodax-software.com author_email = info@rodax-software.com