Add CI/CD (#1)

Reviewed-on: innovacion/Mayacontigo#1
This commit is contained in:
2025-11-25 05:54:58 +00:00
parent 11214c47f6
commit ccc7e7c786
17 changed files with 349 additions and 375 deletions

View File

@@ -0,0 +1,42 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: mayacontigo-inversionistas
namespace: apps
labels:
app: mayacontigo-inversionistas
spec:
replicas: 1
selector:
matchLabels:
app: mayacontigo-inversionistas
template:
metadata:
labels:
app: mayacontigo-inversionistas
spec:
imagePullSecrets:
- name: gitea-registry-cred
containers:
- name: mayacontigo-inversionistas
image: gitea.ia-innovacion.work/innovacion/mayacontigo-inversionistas:latest
env:
- name: VAULT_TOKEN
valueFrom:
secretKeyRef:
name: mayacontigo-inversionistas-secret
key: VAULT_TOKEN
ports:
- containerPort: 80
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 15
periodSeconds: 20

View File

@@ -0,0 +1,19 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mayacontigo-inversionistas-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: mayacontigo-inversionistas.app.ia-innovacion.work
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: mayacontigo-inversionistas-service
port:
number: 80

View File

@@ -0,0 +1,17 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: mayacontigo-inversionistas-vault
namespace: apps
spec:
refreshInterval: "15s"
secretStoreRef:
name: vault-backend
kind: ClusterSecretStore
target:
name: mayacontigo-inversionistas-secret
data:
- secretKey: VAULT_TOKEN
remoteRef:
key: mayacontigo-inversionistas
property: VAULT_TOKEN

View File

@@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: mayacontigo-inversionistas-service
labels:
app: mayacontigo-inversionistas
spec:
selector:
app: mayacontigo-inversionistas
ports:
- port: 80
targetPort: 80
protocol: TCP
type: ClusterIP

View File

@@ -6,8 +6,8 @@ from fastapi.responses import StreamingResponse
from pydantic import BaseModel
from . import services
from .config import config
from .agent import MayaInversionistas
from .config import config
@asynccontextmanager
@@ -49,5 +49,12 @@ async def send(message: Message, stream: bool = False):
generator = sse_stream(agent, message.prompt, message.conversation_id)
return StreamingResponse(generator, media_type="text/event-stream")
else:
response = await services.generate(agent, message.prompt, message.conversation_id)
response = await services.generate(
agent, message.prompt, message.conversation_id
)
return response
@app.get("/")
async def health():
return {"status": "ok"}