-
Notifications
You must be signed in to change notification settings - Fork 0
/
deploy-script.py
executable file
·79 lines (63 loc) · 2.6 KB
/
deploy-script.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/env python3
"""
CyberAegis Deployment Script
Este script maneja el despliegue automatizado de CyberAegis
"""
import os
import subprocess
import argparse
import requests
import json
from pathlib import Path
class CyberAegisDeployer:
def __init__(self, environment='development'):
self.environment = environment
self.project_root = Path.cwd()
self.vercel_token = os.getenv('VERCEL_TOKEN')
self.project_id = os.getenv('VERCEL_PROJECT_ID')
def check_dependencies(self):
"""Verifica que todas las dependencias necesarias estén instaladas"""
print("🔍 Verificando dependencias...")
dependencies = ['node', 'npm', 'git']
for dep in dependencies:
try:
subprocess.run([dep, '--version'], capture_output=True)
except FileNotFoundError:
raise Exception(f"❌ {dep} no está instalado")
print("✅ Todas las dependencias están instaladas")
def build_project(self):
"""Construye el proyecto para producción"""
print("🏗️ Construyendo el proyecto...")
try:
subprocess.run(['npm', 'run', 'build'], check=True)
print("✅ Proyecto construido exitosamente")
except subprocess.CalledProcessError:
raise Exception("❌ Error durante la construcción del proyecto")
def run_tests(self):
"""Ejecuta las pruebas del proyecto"""
print("🧪 Ejecutando pruebas...")
try:
subprocess.run(['npm', 'test'], check=True)
print("✅ Pruebas completadas exitosamente")
except subprocess.CalledProcessError:
raise Exception("❌ Error en las pruebas")
def deploy_to_vercel(self):
"""Despliega el proyecto a Vercel"""
print("🚀 Desplegando a Vercel...")
if not self.vercel_token:
raise Exception("❌ VERCEL_TOKEN no está configurado")
headers = {
'Authorization': f'Bearer {self.vercel_token}',
'Content-Type': 'application/json',
}
try:
# Crear el despliegue
deployment_url = f'https://api.vercel.com/v13/deployments'
response = requests.post(deployment_url, headers=headers, json={
'name': 'cyberaegis',
'project': self.project_id,
'target': self.environment,
})
response.raise_for_status()
deployment_data = response.json()
print(f"✅ Despliegue iniciado: {deployment_data['url']}")