Files
edgar.friendly 6cc326e8ac
deploy-branch / deploy (push) Successful in 2m14s
deploy-branch / teardown (push) Skipped
refactor(scripts): lib de despliegue OOP (Env + colaboradores)
- scripts/lib/env.sh: modelo OOP. Env (aggregate root) compone las entidades
  SystemdUnit, NginxVhost y TlsCert, más servicios estáticos (Slug, Host,
  Port, Artifacts, Deps, Logger). Instancias = arrays asociativos globales
  accedidos vía nameref (local -n); la composición vive en Env::new.
- deploy.sh / teardown.sh: pasan a ser entrypoints finos (~33 líneas) que
  sourcean lib/env.sh. Comparten una única fuente de verdad para "qué es un
  entorno", eliminando la duplicación de slugify y el regex de vhost.
- Comportamiento idéntico al procedural: heredocs de systemd/nginx son
  byte-idénticos; orquestación de deploy y teardown verificados end-to-end.

Requiere bash >= 4.3 (namerefs), ya cubierto en el host runner.
2026-08-01 18:08:01 +02:00

34 lines
723 B
Bash
Executable File

#!/usr/bin/env bash
# deploy.sh — Despliega la rama actual a <slug>.localesp.es
# Toda la lógica vive en lib/env.sh (modelo OOP). Éste es sólo el entrypoint.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=lib/env.sh
. "$SCRIPT_DIR/lib/env.sh"
usage() {
echo "usage: $0 <branch>" >&2
exit 2
}
main() {
local branch root
branch="${1:-${GITHUB_REF_NAME:-}}"
if [ -z "$branch" ]; then
usage
fi
root="$(cd "$SCRIPT_DIR/.." && pwd)"
Logger::set_tag deploy
Env::new env "$branch" "$root"
Logger::info "$(Env::banner env)"
Env::deploy env
Logger::info "LISTO: $(Env::url env) ($(Env::summary env))"
}
main "$@"