From c2392b31ee5c3011c6b2068d19f7f3515c448728 Mon Sep 17 00:00:00 2001 From: Luis Eduardo Perez Date: Fri, 19 Jun 2026 06:26:41 -0400 Subject: [PATCH] chore: sync bdt.sh v2.5.0 (monorepo @ 79cb856) --- bdt.sh | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 82 insertions(+), 2 deletions(-) diff --git a/bdt.sh b/bdt.sh index cab9977..f2b19ca 100755 --- a/bdt.sh +++ b/bdt.sh @@ -20,7 +20,7 @@ set -euo pipefail # CONFIGURACION #=============================================================================== -SCRIPT_VERSION="2.4.0" +SCRIPT_VERSION="2.5.0" SCRIPT_NAME="$(basename "$0")" # Directorios - resolver symlinks para encontrar la ruta real @@ -587,6 +587,82 @@ cmd_jar_deploy() { ok "Deploy de ${svc} enviado a ${server}. Verificá salud con: ${GRAY}bdt logs ${svc} 100${NC} (o el health del server)." } +#=============================================================================== +# COMANDO: deploy-jar - No interactivo: mover un JAR externo → build/libs → build → up +# Versión scriptable de la "Opción 2" de rebuild (sirve para CI o uso directo). +# Por defecto: build SIN CACHÉ + limpia docker previo. Corre donde estés (en el server). +# Uso: bdt deploy-jar [ruta-jar] [--cache] [--no-clean] +# Sin ruta-jar → toma el .jar más reciente de JAR_INBOX (def /tmp). +#=============================================================================== + +cmd_deploy_jar() { + banner + local svc="" jar_path="" nocache="nocache" clean="1" a + for a in "$@"; do + case "$a" in + --cache) nocache="" ;; + --no-cache) nocache="nocache" ;; + --no-clean) clean="" ;; + --clean) clean="1" ;; + --*) warn "Flag desconocido: $a" ;; + *) if [[ -z "$svc" ]]; then svc="$a"; else jar_path="$a"; fi ;; + esac + done + + case "$svc" in + gateway|service-bus) ;; + *) err "Uso: bdt deploy-jar [ruta-jar] [--cache] [--no-clean]" + echo -e " ${GRAY}Sin ruta-jar usa el .jar más reciente en JAR_INBOX (${JAR_INBOX:-/tmp}).${NC}" + return 1 ;; + esac + + local dir; dir="$(repo_dir "$svc")" + [[ -z "$dir" ]] && { err "Servicio desconocido: ${svc}"; return 1; } + local inbox="${JAR_INBOX:-/tmp}" + + step "DEPLOY-JAR ${svc}" "$(svc_desc "$svc") — jar externo → build${nocache:+ sin caché} → up" + + # 1. Resolver el JAR (ruta explícita o el más reciente del inbox) + [[ -z "$jar_path" ]] && jar_path="$(ls -t "${inbox}"/*.jar 2>/dev/null | grep -v -- '-plain.jar' | head -1)" + [[ -z "$jar_path" || ! -f "$jar_path" ]] && { err "JAR no encontrado (${jar_path:-vacío}). Pasá la ruta o dejá un .jar en ${inbox}"; return 1; } + ok "JAR: ${jar_path} ($(du -h "$jar_path" | cut -f1))" + + # 2. Colocar en build/libs (uno solo — el Dockerfile copia *.jar) + mkdir -p "${dir}/build/libs" + rm -f "${dir}/build/libs"/*.jar + cp "$jar_path" "${dir}/build/libs/$(basename "$jar_path")" || { err "No se pudo copiar el JAR a build/libs"; return 1; } + ok "Colocado en ${dir}/build/libs/$(basename "$jar_path")" + + # 3. Limpiar Docker previo (por defecto sí) + if [[ -n "$clean" ]]; then + info "Limpiando Docker previo de ${svc} (contenedor + imagen)..." + docker rm -f "$(docker_name "$svc")" >/dev/null 2>&1 || true + docker rmi -f "bdt-${svc}:latest" >/dev/null 2>&1 || true + fi + + # 4. Build + up + _docker_build_local "$svc" "$nocache" || { err "Build de ${svc} falló"; return 1; } + info "Recreando contenedor ${svc}..." + ( cd "$INFRA_DIR" && $COMPOSE_CMD --profile apps --profile tools up -d --force-recreate "$svc" 2>&1 \ + | while read -r l; do echo -e " ${GRAY}${l}${NC}"; done ) + + # 5. Health + local url; url="$(svc_health_url "$svc")" + if [[ -n "$url" ]]; then + info "Esperando salud de ${svc} (hasta 120s)..." + local tries=0 code="000" + while (( tries < 24 )); do + code=$(curl -s -o /dev/null -w "%{http_code}" --max-time 3 "$url" 2>/dev/null || echo "000") + [[ "$code" =~ ^(200|302|401)$ ]] && break + sleep 5; tries=$((tries+1)) + done + cd "$BDT_ROOT" 2>/dev/null || true + [[ "$code" =~ ^(200|302|401)$ ]] && { ok "${svc} saludable (HTTP ${code})"; return 0; } || { err "${svc}: sin health OK (HTTP ${code}) — revisá: bdt logs ${svc} 100"; return 1; } + fi + cd "$BDT_ROOT" 2>/dev/null || true + ok "${svc} recreado" +} + #=============================================================================== # COMANDO: up - Levantar servicios #=============================================================================== @@ -1247,7 +1323,7 @@ _bdt_completions() { local cur="${COMP_WORDS[COMP_CWORD]}" local prev="${COMP_WORDS[COMP_CWORD-1]}" - local commands="clone pull install build rebuild jar-deploy up down restart status logs health verify-db verify-api deploy construir publish env update creds clean setup menu help image-login image-build image-push image-pull image-deploy image-build-amd64 server-deploy" + local commands="clone pull install build rebuild jar-deploy deploy-jar up down restart status logs health verify-db verify-api deploy construir publish env update creds clean setup menu help image-login image-build image-push image-pull image-deploy image-build-amd64 server-deploy" local services="frontend gateway service-bus canales-admin-web canales-worker apibank infrastructure database" local up_targets="all infra apps tools frontend gateway canales-admin-web canales-worker service-bus postgres redis keycloak" local envs="desarrollo calidad demo produccion" @@ -1978,6 +2054,9 @@ cmd_help() { echo -e " ${WHITE}jar-deploy${NC} [--build] [--no-cache]" echo -e " Sube TU jar local al server (DEPLOY_SERVER) → build/libs → build+up remoto." echo -e " Útil para .133 (no usa el registry de Gitea). Requiere ~/.bdt/config + sudo remoto." + echo -e " ${WHITE}deploy-jar${NC} [ruta-jar] [--cache] [--no-clean]" + echo -e " NO interactivo (CI/local en el server): mueve un jar externo → build/libs →" + echo -e " limpia docker → build --no-cache → up. Sin ruta usa el más reciente de JAR_INBOX (/tmp)." echo "" echo -e " ${O3}${BOLD}JAR pre-compilado (image-build / image-build-amd64):${NC}" echo -e " Gradle NO corre. Copiá el JAR compilado ANTES de buildear:" @@ -2018,6 +2097,7 @@ case "$cmd" in build) cmd_build "$@" ;; rebuild|rebuild-nc) cmd_rebuild "$@" ;; jar-deploy|jardeploy) cmd_jar_deploy "$@" ;; + deploy-jar|deployjar) cmd_deploy_jar "$@" ;; up|start) cmd_up "$@" ;; down|stop) cmd_down "$@" ;; restart) cmd_restart "$@" ;;