76 lines
2.5 KiB
YAML
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 |