2025-06-15 23:06:51 -03:00
|
|
|
kind: pipeline
|
|
|
|
|
type: docker
|
|
|
|
|
name: Build y Deploy
|
2025-06-15 22:18:23 -03:00
|
|
|
|
2025-06-15 23:06:51 -03:00
|
|
|
trigger:
|
|
|
|
|
branch:
|
2025-06-16 18:07:22 -03:00
|
|
|
- main
|
2025-06-15 23:06:51 -03:00
|
|
|
event:
|
2025-06-16 18:07:22 -03:00
|
|
|
- push
|
2025-06-15 22:18:23 -03:00
|
|
|
|
2025-06-15 23:06:51 -03:00
|
|
|
steps:
|
|
|
|
|
- name: build-and-publish-backend
|
2025-06-16 18:44:51 -03:00
|
|
|
image: gcr.io/kaniko-project/executor:v1.9.0-debug
|
2025-06-16 18:07:22 -03:00
|
|
|
settings:
|
2025-06-16 18:50:31 -03:00
|
|
|
# El nombre del campo debe ser "repo" para el destino principal,
|
|
|
|
|
# y "tags" para las adicionales. El plugin de Drone lo traduce internamente para Kaniko.
|
|
|
|
|
repo: 192.168.4.128:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-backend
|
|
|
|
|
tags:
|
|
|
|
|
- latest
|
|
|
|
|
- ${DRONE_COMMIT_SHA:0:8}
|
2025-06-16 18:44:51 -03:00
|
|
|
dockerfile: Backend/GestionIntegral.Api/Dockerfile
|
|
|
|
|
context: .
|
2025-06-16 18:50:31 -03:00
|
|
|
# Las credenciales y la flag de inseguro se mantienen
|
2025-06-16 18:07:22 -03:00
|
|
|
username:
|
2025-06-15 23:06:51 -03:00
|
|
|
from_secret: GITEA_USER
|
2025-06-16 18:07:22 -03:00
|
|
|
password:
|
2025-06-15 23:06:51 -03:00
|
|
|
from_secret: ACTIONS_PAT
|
2025-06-16 18:07:22 -03:00
|
|
|
insecure: true
|
2025-06-15 22:18:23 -03:00
|
|
|
|
2025-06-16 12:48:22 -03:00
|
|
|
- name: build-and-publish-frontend
|
2025-06-16 18:44:51 -03:00
|
|
|
image: gcr.io/kaniko-project/executor:v1.9.0-debug
|
2025-06-16 18:07:22 -03:00
|
|
|
settings:
|
2025-06-16 18:50:31 -03:00
|
|
|
# Misma estructura para el frontend
|
|
|
|
|
repo: 192.168.4.128:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-frontend
|
|
|
|
|
tags:
|
|
|
|
|
- latest
|
|
|
|
|
- ${DRONE_COMMIT_SHA:0:8}
|
2025-06-16 18:44:51 -03:00
|
|
|
dockerfile: Frontend/Dockerfile
|
|
|
|
|
context: .
|
2025-06-16 18:07:22 -03:00
|
|
|
username:
|
2025-06-16 12:48:22 -03:00
|
|
|
from_secret: GITEA_USER
|
2025-06-16 18:07:22 -03:00
|
|
|
password:
|
2025-06-16 12:48:22 -03:00
|
|
|
from_secret: ACTIONS_PAT
|
2025-06-16 18:07:22 -03:00
|
|
|
insecure: true
|
2025-06-16 12:48:22 -03:00
|
|
|
depends_on:
|
|
|
|
|
- build-and-publish-backend
|
|
|
|
|
|
2025-06-15 23:06:51 -03:00
|
|
|
- name: deploy-to-production
|
2025-06-16 18:44:51 -03:00
|
|
|
# Este paso no cambia en absoluto
|
2025-06-15 23:06:51 -03:00
|
|
|
image: alpine:latest
|
|
|
|
|
environment:
|
|
|
|
|
SSH_KEY:
|
|
|
|
|
from_secret: PROD_SERVER_SSH_KEY
|
|
|
|
|
PROD_HOST:
|
|
|
|
|
from_secret: PROD_SERVER_HOST
|
|
|
|
|
PROD_USER:
|
|
|
|
|
from_secret: PROD_SERVER_USER
|
|
|
|
|
DB_PASSWORD:
|
|
|
|
|
from_secret: DB_SA_PASSWORD_SECRET
|
|
|
|
|
JWT_KEY:
|
|
|
|
|
from_secret: JWT_KEY_SECRET
|
|
|
|
|
REGISTRY:
|
|
|
|
|
from_secret: REGISTRY_URL
|
|
|
|
|
GITEA_USER:
|
|
|
|
|
from_secret: GITEA_USER
|
|
|
|
|
GITEA_PAT:
|
|
|
|
|
from_secret: ACTIONS_PAT
|
|
|
|
|
commands:
|
|
|
|
|
- apk add --no-cache openssh-client
|
|
|
|
|
- mkdir -p ~/.ssh
|
|
|
|
|
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
|
|
|
|
- chmod 600 ~/.ssh/id_rsa
|
|
|
|
|
- ssh-keyscan -H $PROD_HOST >> ~/.ssh/known_hosts
|
|
|
|
|
- |
|
|
|
|
|
ssh $PROD_USER@$PROD_HOST << 'EOF'
|
|
|
|
|
echo "--- CONECTADO AL SERVIDOR DE PRODUCCIÓN ---"
|
|
|
|
|
cd /opt/gestion-integral
|
|
|
|
|
export DB_SA_PASSWORD="${DB_PASSWORD}"
|
|
|
|
|
export JWT_KEY="${JWT_KEY}"
|
|
|
|
|
docker login ${REGISTRY} -u ${GITEA_USER} -p ${GITEA_PAT}
|
|
|
|
|
docker compose pull
|
|
|
|
|
docker compose up -d
|
|
|
|
|
docker image prune -af
|
|
|
|
|
echo "--- DESPLIEGUE COMPLETADO ---"
|
|
|
|
|
EOF
|
|
|
|
|
depends_on:
|
2025-06-16 18:21:59 -03:00
|
|
|
- build-and-publish-frontend
|