Qué es NSDeploy
nsdeploy es la plataforma web de Nacarsoft para el despliegue automatizado de objetos Natural entre entornos ADABAS (vía SYSOBJH). Automatiza el pipeline completo —compilar, transferir y desplegar— con trazabilidad total, control de acceso por roles (RBAC) y soporte multi-entorno. Se opera desde el terminal (init/start/stop/status) y se usa desde el navegador en http://localhost:8080.
Los nombres de servidores, rutas y credenciales de los ejemplos son ficticios: adáptelos a su entorno real.
Casos de uso
1. Pipeline DEV → TST → PRD sin intervención manual
Promocionar la misma versión compilada por los tres entornos, con el mismo procedimiento siempre:
./build/nsdeploy init /tmp/miproyecto # 1. Inicializar el proyecto
./build/nsdeploy start /tmp/miproyecto # 2. Arrancar el servicio web
# 3. En http://localhost:8080: crear el paquete, desplegar a DEV,
# validar, y promocionar el mismo paquete a TST y después a PRD.
./build/nsdeploy status /tmp/miproyecto # 4. Comprobar el servicio
Cada despliegue deja log completo y resultado en el dashboard, así que una promoción a PRD es repetible y auditable.
2. Gestión de paquetes con dependencias y versionado
Agrupar objetos Natural relacionados en un paquete con nombre, descripción y dependencias entre objetos:
./build/nsdeploy start /tmp/miproyecto
# En el dashboard: Paquetes → Nuevo paquete → añadir objetos →
# resolver dependencias → desplegar.
El gestor resuelve las dependencias automáticamente y el histórico de paquetes permite volver a desplegar una versión anterior conocida.
3. Control de acceso granular (RBAC) por equipos
Separar quién puede desplegar a cada entorno mediante la cadena usuarios → grupos → roles → permisos:
./build/nsdeploy start /tmp/miproyecto
# Entrar como admin (admin / admin123, cambiarla de inmediato) e ir al
# panel de administración: crear grupos (p. ej. "desarrollo", "release"),
# asignar roles y conceder solo "desplegar a DEV" al equipo de desarrollo
# y "desplegar a PRD" al equipo de release.
4. Auditoría de cada despliegue
Responder a “¿quién desplegó qué, cuándo y con qué resultado?” desde el histórico inmutable del dashboard: usuario, paquete, entorno, fecha, resultado y log completo de cada ejecución. Útil para revisiones internas y ventanas de cambio de producción.
Interfaz


Referencia
Comandos CLI
Sintaxis: nsdeploy <comando> [dir] [flags] — [dir] es el directorio del proyecto (config.yaml + db/ + packages/ + logs/ + sysobjh/ + .nsdeploy.pid); por defecto .. --config <dir> es alias oculto de [dir].
| Comando | Descripción |
|---|---|
init [dir] | Crea la estructura del proyecto y el config.yaml inicial |
start [dir] | Arranca el servidor en segundo plano |
stop [dir] | Detiene el servidor |
status [dir] | Muestra el estado del servidor |
license | Muestra el estado de la licencia y el fingerprint de la máquina |
upgrade | Comprueba e instala la última versión desde el servidor de actualizaciones (requiere licencia válida) |
--license-fingerprint | Imprime el fingerprint de la máquina y sale |
--version | Muestra la versión |
Flags globales: --config <dir> (directorio del proyecto), --port <n> (sobrescribe el puerto), --debug (modo depuración).
Opciones principales de config.yaml
| Parámetro | Descripción |
|---|---|
server.host / server.port | Interfaz y puerto web (por defecto 0.0.0.0:8080) |
database.path | Fichero SQLite con usuarios, grupos, roles y permisos |
auth.jwtSecret / auth.jwtExpiryMin / auth.cookieName / auth.resetTokenExpiryMin | Secreto y caducidad de sesiones JWT |
correo.* / smtp.* | Notificaciones por correo (host, port, username, from) |
logging.* | Directorio y rotación de logs (dir, maxSizeMB, maxAgeDays) |
packages.rootDir / packages.sysobjhDir / packages.retentionDays / packages.maxPackages | Almacén y retención de paquetes |
environments.<NOMBRE>.* | Por entorno: fuser, naturalBin, pools de buffers, deployTarget, planificación schedule |
updates.url | Servidor de actualizaciones para upgrade |
Áreas de la interfaz web
- Dashboard: estado en tiempo real de los despliegues, creación de paquetes y log completo de cada ejecución.
- Paquetes: alta de paquetes (nombre, descripción, objetos), dependencias y versionado.
- RBAC (administración): usuarios → grupos → roles → permisos; cada permiso autoriza una acción concreta (desplegar a DEV/PRD, gestionar paquetes, ver auditoría…).
- Auditoría: histórico consultable e inmodificable (usuario, paquete, entorno, fecha, resultado, log).
Ejemplos comentados
# 1. Proyecto nuevo y arranque
./build/nsdeploy init /tmp/miproyecto
./build/nsdeploy start /tmp/miproyecto
./build/nsdeploy status /tmp/miproyecto
# → nsdeploy is running (PID 12345) — listening on 0.0.0.0:8080
# 2. Varios entornos con el mismo binario
./build/nsdeploy init /tmp/prod && ./build/nsdeploy start /tmp/prod
./build/nsdeploy init /tmp/dev && ./build/nsdeploy start /tmp/dev
# 3. Sobrescribir el puerto sin editar config.yaml
./build/nsdeploy start /tmp/miproyecto --port 8090
# 4. Licencia: estado y fingerprint
./build/nsdeploy license
./build/nsdeploy --license-fingerprint
# 5. Parar el servicio
./build/nsdeploy stop /tmp/miproyecto
Preguntas frecuentes
¿No arranca el servicio? Puerto ocupado: cambie server.port en config.yaml o use --port. Compruebe logs/nsdeploy.log.
¿Falla el despliegue a PRD? Verifique la conexión del entorno PRD en config.yaml (host, usuario, rutas FUSER, binario Natural) y que el origen SSH tenga acceso.
¿Licencia caducada? El trial dura 30 días: solicite una licencia firmada a Nacarsoft y colóquela en /opt/ns/licenses/nsdeploy.key.
¿No se ve el dashboard? Abra el puerto 8080 en el firewall y verifique http://localhost:8080/api/health.
¿Olvidó la contraseña de admin? Use el flujo de restablecimiento configurando correo.* / baseUrl en config.yaml (expiración: auth.resetTokenExpiryMin).