95 lines
2.2 KiB
YAML
95 lines
2.2 KiB
YAML
kind: pipeline
|
|
type: docker
|
|
name: Build y Deploy
|
|
|
|
trigger:
|
|
branch:
|
|
- main
|
|
event:
|
|
- push
|
|
|
|
steps:
|
|
- name: build-and-publish-backend
|
|
image: plugins/docker
|
|
settings:
|
|
registry:
|
|
from_secret: REGISTRY_URL
|
|
repo: ${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}-backend
|
|
username:
|
|
from_secret: GITEA_USER
|
|
password:
|
|
from_secret: ACTIONS_PAT
|
|
dockerfile: Backend/GestionIntegral.Api/Dockerfile
|
|
tags:
|
|
- latest
|
|
- ${DRONE_COMMIT_SHA:0:8}
|
|
insecure: true
|
|
daemon_mtu: 1450
|
|
|
|
- name: build-and-publish-frontend
|
|
image: plugins/docker
|
|
settings:
|
|
registry:
|
|
from_secret: REGISTRY_URL
|
|
repo: ${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}-frontend
|
|
username:
|
|
from_secret: GITEA_USER
|
|
password:
|
|
from_secret: ACTIONS_PAT
|
|
dockerfile: Frontend/Dockerfile
|
|
tags:
|
|
- latest
|
|
- ${DRONE_COMMIT_SHA:0:8}
|
|
insecure: true
|
|
daemon_mtu: 1450
|
|
depends_on:
|
|
- build-and-publish-backend
|
|
|
|
- name: deploy-to-production
|
|
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:
|
|
# Preparar el entorno SSH
|
|
- 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
|
|
|
|
# Ejecutar comandos remotos
|
|
- |
|
|
ssh $PROD_USER@$PROD_HOST << 'EOF'
|
|
echo "--- CONECTADO AL SERVIDOR DE PRODUCCIÓN ---"
|
|
cd /opt/gestion-integral
|
|
|
|
# Exportamos las variables que necesita el docker-compose de la app
|
|
export DB_SA_PASSWORD="${DB_PASSWORD}"
|
|
export JWT_KEY="${JWT_KEY}"
|
|
|
|
# Login, pull y deploy
|
|
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:
|
|
- build-and-publish-frontend
|