chore: sync bdt.sh v2.5.0 (monorepo @ 79cb856)

This commit is contained in:
2026-06-19 06:26:41 -04:00
parent b16535057f
commit c2392b31ee

84
bdt.sh
View File

@@ -20,7 +20,7 @@ set -euo pipefail
# CONFIGURACION # CONFIGURACION
#=============================================================================== #===============================================================================
SCRIPT_VERSION="2.4.0" SCRIPT_VERSION="2.5.0"
SCRIPT_NAME="$(basename "$0")" SCRIPT_NAME="$(basename "$0")"
# Directorios - resolver symlinks para encontrar la ruta real # 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)." 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 <gateway|service-bus> [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 <gateway|service-bus> [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 # COMANDO: up - Levantar servicios
#=============================================================================== #===============================================================================
@@ -1247,7 +1323,7 @@ _bdt_completions() {
local cur="${COMP_WORDS[COMP_CWORD]}" local cur="${COMP_WORDS[COMP_CWORD]}"
local prev="${COMP_WORDS[COMP_CWORD-1]}" 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 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 up_targets="all infra apps tools frontend gateway canales-admin-web canales-worker service-bus postgres redis keycloak"
local envs="desarrollo calidad demo produccion" local envs="desarrollo calidad demo produccion"
@@ -1978,6 +2054,9 @@ cmd_help() {
echo -e " ${WHITE}jar-deploy${NC} <gateway|service-bus> [--build] [--no-cache]" echo -e " ${WHITE}jar-deploy${NC} <gateway|service-bus> [--build] [--no-cache]"
echo -e " Sube TU jar local al server (DEPLOY_SERVER) → build/libs → build+up remoto." 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 " Útil para .133 (no usa el registry de Gitea). Requiere ~/.bdt/config + sudo remoto."
echo -e " ${WHITE}deploy-jar${NC} <gateway|service-bus> [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 ""
echo -e " ${O3}${BOLD}JAR pre-compilado (image-build / image-build-amd64):${NC}" 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:" echo -e " Gradle NO corre. Copiá el JAR compilado ANTES de buildear:"
@@ -2018,6 +2097,7 @@ case "$cmd" in
build) cmd_build "$@" ;; build) cmd_build "$@" ;;
rebuild|rebuild-nc) cmd_rebuild "$@" ;; rebuild|rebuild-nc) cmd_rebuild "$@" ;;
jar-deploy|jardeploy) cmd_jar_deploy "$@" ;; jar-deploy|jardeploy) cmd_jar_deploy "$@" ;;
deploy-jar|deployjar) cmd_deploy_jar "$@" ;;
up|start) cmd_up "$@" ;; up|start) cmd_up "$@" ;;
down|stop) cmd_down "$@" ;; down|stop) cmd_down "$@" ;;
restart) cmd_restart "$@" ;; restart) cmd_restart "$@" ;;