# .drone.yml kind: pipeline type: docker name: Build y Deploy # --- DISPARADOR (TRIGGER) --- # Este pipeline se ejecutará solo cuando hagas push a la rama 'main' trigger: branch: - main event: - push # --- PASOS DEL PIPELINE --- steps: # --- PASO 1: CONSTRUIR LA IMAGEN DEL BACKEND --- - name: build-and-publish-backend image: plugins/docker settings: # --- Configuración del Registro --- # Usamos el registro de Gitea. El valor viene de los secretos de Drone. registry: from_secret: REGISTRY_URL # Drone inyecta automáticamente un secreto para autenticarse en el registro. # Usaremos un PAT (Token de Acceso Personal) de Gitea. username: from_secret: GITEA_USER password: from_secret: ACTIONS_PAT # --- Configuración de la Imagen --- # El nombre de la imagen en el registro. repo: ${{DRONE_REPO_OWNER}}/${{DRONE_REPO_NAME}}-backend # El Dockerfile a usar. dockerfile: Backend/GestionIntegral.Api/Dockerfile # Las etiquetas que le pondremos a la imagen. tags: - latest - ${{DRONE_COMMIT_SHA:0:8}} # Etiqueta con el hash corto del commit # --- PASO 2: CONSTRUIR LA IMAGEN DEL FRONTEND --- - name: build-and-publish-frontend image: plugins/docker settings: # La configuración del registro es la misma registry: from_secret: REGISTRY_URL username: from_secret: GITEA_USER password: from_secret: ACTIONS_PAT # --- Configuración de la Imagen --- repo: ${{DRONE_REPO_OWNER}}/${{DRONE_REPO_NAME}}-frontend dockerfile: Frontend/Dockerfile # Las etiquetas para la imagen del frontend. tags: - latest - ${{DRONE_COMMIT_SHA:0:8}} # Este paso depende del anterior para no ejecutarse en paralelo depends_on: - build-and-publish-backend # --- PASO 3: DESPLEGAR LA APLICACIÓN --- - name: deploy-to-production image: appleboy/drone-ssh settings: host: from_secret: PROD_SERVER_HOST username: from_secret: PROD_SERVER_USER key: from_secret: PROD_SERVER_SSH_KEY # --- Comandos a ejecutar en el servidor de producción --- script: # Navegamos a la carpeta donde está el docker-compose.yml de la aplicación - cd /opt/gestion-integral # Exportamos los secretos que necesita el docker-compose.yml - export DB_SA_PASSWORD=$${DB_SA_PASSWORD_SECRET} # Nota los $$ para escapar - export JWT_KEY=$${JWT_KEY_SECRET} # Login al registro de Gitea DENTRO del servidor de producción - docker login $${REGISTRY_URL_SECRET} -u $${GITEA_USER_SECRET} -p $${ACTIONS_PAT_SECRET} # 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 # Este paso depende de que las dos imágenes se hayan construido depends_on: - build-and-publish-frontend