AgentSkillsCN

deploy-ssh

使用 Pydantic 模型、Query 验证与 Response 模型,快速创建 FastAPI 端点。触发条件:端点、路由、API、REST、GET、POST

SKILL.md
--- frontmatter
name: deploy-ssh
description: Apply when deploying to production servers via SSH/SMB. Covers Deploy-ToServer.ps1 (192.168.1.248) and Deploy-ToServer2.ps1 (192.168.1.72) scripts, service management, and verification.
license: MIT
compatibility: opencode
metadata:
  project: SGRRHH
  type: deployment
  protocol: ssh-smb
  servers: 192.168.1.248,192.168.1.72

Deploy SSH - SGRRHH

Script Principal

Ubicación: SGRRHH.Local/scripts/Deploy-ToServer.ps1

Configuración del Servidor

PropiedadValor
Host192.168.1.248
Usuario SSHequipo1
Ruta RemotaC:\SGRRHH
Share SMB\\192.168.1.248\SGRRHH
ServicioSGRRHH_Local

Archivos PROTEGIDOS

[!CAUTION] Estos archivos/carpetas NUNCA se sobrescriben ni eliminan:

RutaContenido
Data/Base de datos SQLite (sgrrhh.db)
certs/Certificados SSL (localhost+2.p12)
logs/Logs de la aplicación
backups/Backups locales
appsettings.jsonConfiguración local del servidor
appsettings.Development.jsonConfiguración desarrollo

Comandos de Deploy

Servidor 1 (Principal)

Deploy Incremental:

powershell
cd c:\Users\evert\Documents\rrhh\SGRRHH.Local
.\scripts\Deploy-ToServer.ps1

Deploy rápido:

powershell
.\scripts\Deploy-ToServer.ps1 -SkipBuild -Force

Servidor 2 (Secundario)

Deploy Incremental:

powershell
cd c:\Users\evert\Documents\rrhh\SGRRHH.Local
.\scripts\Deploy-ToServer2.ps1

Deploy rápido:

powershell
.\scripts\Deploy-ToServer2.ps1 -SkipBuild -Force

Opciones Disponibles (Ambos Servidores)

ParámetroFunción
-SkipBuildUsa el build existente (no recompila)
-ForceNo pide confirmación
-FullSyncSync completo con /MIR (⚠️ peligroso)
-IncludeDatabaseCopia la BD local al servidor

Otros Scripts Disponibles

ScriptFunción
Deploy-Production.ps1Deploy local (sin SSH)
Backup-Database.ps1Backup de la BD
Restore-Backup.ps1Restaurar backup
AutoUpdate-Service.ps1Actualización automática

Verificación Post-Deploy

Servidor 1

Conectividad SSH:

powershell
ssh equipo1@192.168.1.248 "echo OK"

Estado del servicio:

powershell
ssh equipo1@192.168.1.248 "sc query SGRRHH_Local"

Ver logs:

powershell
ssh equipo1@192.168.1.248 "type C:\SGRRHH\logs\*.log"

Servidor 2

Conectividad SSH:

powershell
ssh fores@192.168.1.72 "echo OK"

Verificar proceso:

powershell
ssh fores@192.168.1.72 "Get-Process | Where-Object {$_.Name -like '*SGRRHH*'}"

Ver logs:

powershell
ssh fores@192.168.1.72 "Get-Content C:\SGRRHH\logs\output.log -Tail 50"

Acceso Web:

  • Servidor 1: http://192.168.1.248:5002 | https://192.168.1.248:5003
  • Servidor 2: http://192.168.1.72:5002

Servicio Windows (NSSM)

  • Nombre: SGRRHH_Local
  • Gestionado con: nssm
  • Logs: C:\SGRRHH\logs con rotación (1 MB / 24h)
  • Ejecutable: C:\SGRRHH\SGRRHH.Local.Server.exe

Accesos Directos en Servidor

AccesoFunción
SGRRHH - ConsolaEjecución con ventana y logs en vivo
SGRRHH - Ver LogsTail del log actual

Certificado SSL

Ruta: C:\SGRRHH\certs\localhost+2.p12

Si falta el certificado, copiar antes de iniciar:

powershell
scp certs/localhost+2.p12 equipo1@192.168.1.248:C:/SGRRHH/certs/

Flujo de Deploy Completo

code
1. Compilar localmente (Release, self-contained, win-x64)
2. Detener servicio en servidor
3. Sincronizar archivos vía Robocopy/SMB
4. Preservar Data/, certs/, logs/
5. Iniciar servicio
6. Verificar salud de la aplicación

Troubleshooting

Error de esquema (columnas faltantes)

La DB no se migra automáticamente:

  1. Respaldar la DB actual
  2. Eliminar archivos .wal y .shm
  3. Copiar la DB válida

Error de conexión SMB

powershell
net use \\192.168.1.248\SGRRHH /user:equipo1