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 |