84 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
|     kind: pipeline
 | |
|     type: docker
 | |
|     name: Build y Deploy
 | |
| 
 | |
|     trigger:
 | |
|       branch:
 | |
|       - main
 | |
|       event:
 | |
|       - push
 | |
| 
 | |
|     steps:
 | |
|     # --- Los pasos de build-and-publish no cambian, ya están bien ---
 | |
|     - 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}}
 | |
| 
 | |
|     - 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}}
 | |
|       depends_on:
 | |
|         - build-and-publish-backend
 | |
| 
 | |
|     # --- ¡LA VERSIÓN FINAL Y CORRECTA! ---
 | |
|     - name: deploy-to-production
 | |
|       image: appleboy/drone-ssh
 | |
|       # Ya no usamos 'settings', el plugin lee los secretos directamente del entorno del paso.
 | |
|       environment:
 | |
|         HOST:
 | |
|           from_secret: PROD_SERVER_HOST
 | |
|         USERNAME:
 | |
|           from_secret: PROD_SERVER_USER
 | |
|         KEY:
 | |
|           from_secret: PROD_SERVER_SSH_KEY
 | |
|         
 | |
|         # Pasamos TODOS los secretos que el script necesita como variables
 | |
|         # de entorno al contenedor del plugin.
 | |
|         DB_SA_PASSWORD:
 | |
|           from_secret: DB_SA_PASSWORD_SECRET
 | |
|         JWT_KEY:
 | |
|           from_secret: JWT_KEY_SECRET
 | |
|         REGISTRY_URL:
 | |
|           from_secret: REGISTRY_URL
 | |
|         GITEA_USER:
 | |
|           from_secret: GITEA_USER
 | |
|         ACTIONS_PAT:
 | |
|           from_secret: ACTIONS_PAT
 | |
|       
 | |
|       # El plugin usa 'script' y ahora las variables las tenemos que
 | |
|       # pasar como argumentos al script o usarlas directamente.
 | |
|       script:
 | |
|         # El comando 'export' es crucial para que 'docker compose' los vea
 | |
|         - export DB_SA_PASSWORD
 | |
|         - export JWT_KEY
 | |
|         - echo "Conectando a $HOST como $USERNAME..."
 | |
|         - cd /opt/gestion-integral
 | |
|         - docker login $REGISTRY_URL -u $GITEA_USER -p $ACTIONS_PAT
 | |
|         - docker compose pull
 | |
|         - docker compose up -d
 | |
|         - docker image prune -af
 | |
|         
 | |
|       depends_on:
 | |
|         - build-and-publish-frontend |