| 
									
										
										
										
											2025-06-15 23:06:51 -03:00
										 |  |  | kind: pipeline
 | 
					
						
							|  |  |  | type: docker
 | 
					
						
							|  |  |  | name: Build y Deploy
 | 
					
						
							| 
									
										
										
										
											2025-06-15 22:18:23 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-15 23:06:51 -03:00
										 |  |  | trigger:
 | 
					
						
							|  |  |  |   branch:
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:07:22 -03:00
										 |  |  |   - main
 | 
					
						
							| 
									
										
										
										
											2025-06-15 23:06:51 -03:00
										 |  |  |   event:
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:07:22 -03:00
										 |  |  |   - push
 | 
					
						
							| 
									
										
										
										
											2025-06-15 22:18:23 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-15 23:06:51 -03:00
										 |  |  | steps:
 | 
					
						
							|  |  |  | - name: build-and-publish-backend
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:44:51 -03:00
										 |  |  |   # Cambiamos la imagen a Kaniko
 | 
					
						
							|  |  |  |   image: gcr.io/kaniko-project/executor:v1.9.0-debug
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:07:22 -03:00
										 |  |  |   settings:
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:44:51 -03:00
										 |  |  |     # El destino final de la imagen, incluyendo el registro y la primera tag
 | 
					
						
							|  |  |  |     destination: 192.168.4.128:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-backend:latest
 | 
					
						
							|  |  |  |     # Para añadir más tags, las ponemos en una lista aquí
 | 
					
						
							|  |  |  |     destinations:
 | 
					
						
							|  |  |  |       - 192.168.4.128:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-backend:${DRONE_COMMIT_SHA:0:8}
 | 
					
						
							|  |  |  |     # El Dockerfile que se va a usar
 | 
					
						
							|  |  |  |     dockerfile: Backend/GestionIntegral.Api/Dockerfile
 | 
					
						
							|  |  |  |     # El contexto de la construcción (la raíz del repo)
 | 
					
						
							|  |  |  |     context: .
 | 
					
						
							|  |  |  |     # Credenciales para el registro (Kaniko las usa para el push)
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:07:22 -03:00
										 |  |  |     username:
 | 
					
						
							| 
									
										
										
										
											2025-06-15 23:06:51 -03:00
										 |  |  |       from_secret: GITEA_USER
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:07:22 -03:00
										 |  |  |     password:
 | 
					
						
							| 
									
										
										
										
											2025-06-15 23:06:51 -03:00
										 |  |  |       from_secret: ACTIONS_PAT
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:44:51 -03:00
										 |  |  |     # Flag para permitir la conexión a un registro inseguro (HTTP)
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:07:22 -03:00
										 |  |  |     insecure: true
 | 
					
						
							| 
									
										
										
										
											2025-06-15 22:18:23 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-16 12:48:22 -03:00
										 |  |  | - name: build-and-publish-frontend
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:44:51 -03:00
										 |  |  |   image: gcr.io/kaniko-project/executor:v1.9.0-debug
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:07:22 -03:00
										 |  |  |   settings:
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:44:51 -03:00
										 |  |  |     destination: 192.168.4.128:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-frontend:latest
 | 
					
						
							|  |  |  |     destinations:
 | 
					
						
							|  |  |  |       - 192.168.4.128:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-frontend:${DRONE_COMMIT_SHA:0:8}
 | 
					
						
							|  |  |  |     dockerfile: Frontend/Dockerfile
 | 
					
						
							|  |  |  |     context: .
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:07:22 -03:00
										 |  |  |     username:
 | 
					
						
							| 
									
										
										
										
											2025-06-16 12:48:22 -03:00
										 |  |  |       from_secret: GITEA_USER
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:07:22 -03:00
										 |  |  |     password:
 | 
					
						
							| 
									
										
										
										
											2025-06-16 12:48:22 -03:00
										 |  |  |       from_secret: ACTIONS_PAT
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:07:22 -03:00
										 |  |  |     insecure: true
 | 
					
						
							| 
									
										
										
										
											2025-06-16 12:48:22 -03:00
										 |  |  |   depends_on:
 | 
					
						
							|  |  |  |     - build-and-publish-backend
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-15 23:06:51 -03:00
										 |  |  | - name: deploy-to-production
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:44:51 -03:00
										 |  |  |   # Este paso no cambia en absoluto
 | 
					
						
							| 
									
										
										
										
											2025-06-15 23:06:51 -03:00
										 |  |  |   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:
 | 
					
						
							|  |  |  |     - 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
 | 
					
						
							|  |  |  |     - |
 | 
					
						
							|  |  |  |       ssh $PROD_USER@$PROD_HOST << 'EOF'
 | 
					
						
							|  |  |  |         echo "--- CONECTADO AL SERVIDOR DE PRODUCCIÓN ---"
 | 
					
						
							|  |  |  |         cd /opt/gestion-integral
 | 
					
						
							|  |  |  |         export DB_SA_PASSWORD="${DB_PASSWORD}"
 | 
					
						
							|  |  |  |         export JWT_KEY="${JWT_KEY}"
 | 
					
						
							|  |  |  |         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:
 | 
					
						
							| 
									
										
										
										
											2025-06-16 18:21:59 -03:00
										 |  |  |     - build-and-publish-frontend
 |