Files
GestionIntegralWeb/.gitea/workflows/deploy.yml
2025-06-14 22:11:02 -03:00

76 lines
2.5 KiB
YAML

name: Build y Deploy a Producción
on:
push:
branches:
- main # O la rama que uses para producción
jobs:
build:
name: Construir y Subir Imágenes Docker
runs-on: ubuntu-latest
steps:
- name: Checkout del código
uses: actions/checkout@v4
- name: Login al Registro de Gitea
uses: docker/login-action@v3
with:
registry: ${{ secrets.REGISTRY_URL }}
# Usamos el token de acceso personal para el login
username: ${{ gitea.actor }}
password: ${{ secrets.ACTIONS_PAT }}
- name: Construir y Subir API Backend
uses: docker/build-push-action@v5
with:
context: .
file: ./Backend/GestionIntegral.Api/Dockerfile
push: true
tags: |
${{ secrets.REGISTRY_URL }}/${{ gitea.repository }}/api:latest
${{ secrets.REGISTRY_URL }}/${{ gitea.repository }}/api:${{ gitea.sha_short }}
- name: Construir y Subir Frontend
uses: docker/build-push-action@v5
with:
# ¡Asegúrate de que esta ruta a tu frontend es correcta!
context: .
file: ./Frontend/Dockerfile
push: true
tags: |
${{ secrets.REGISTRY_URL }}/${{ gitea.repository }}/frontend:latest
${{ secrets.REGISTRY_URL }}/${{ gitea.repository }}/frontend:${{ gitea.sha_short }}
deploy:
name: Desplegar a Producción
runs-on: ubuntu-latest
needs: build
steps:
- name: Desplegar con Docker Compose
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.PROD_SERVER_HOST }}
username: ${{ secrets.PROD_SERVER_USER }}
key: ${{ secrets.PROD_SERVER_SSH_KEY }}
script: |
cd /opt/gestion-integral
# Pasamos los secretos como variables de entorno
export DB_SA_PASSWORD='${{ secrets.DB_SA_PASSWORD }}'
export JWT_KEY='${{ secrets.JWT_SECRET_KEY }}'
# Login al registro de Gitea DENTRO del servidor de producción
# Aquí también usamos el ACTIONS_PAT
docker login ${{ secrets.REGISTRY_URL }} -u ${{ gitea.actor }} -p ${{ secrets.ACTIONS_PAT }}
# Descargamos las nuevas versiones de las imágenes
docker compose pull
# Levantamos el stack con los cambios
docker compose up -d
# Limpiamos imágenes viejas que ya no se usan
docker image prune -af