diff --git a/.drone.yml b/.drone.yml index 1c90ab0..d9addc0 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,68 +1,46 @@ -# .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 + - ${{DRONE_COMMIT_SHA:0:8}} -# --- 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: @@ -72,28 +50,24 @@ steps: 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 + environment: + SA_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: - 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 + - export DB_SA_PASSWORD=$SA_PASSWORD + - export JWT_KEY=$JWT_KEY + - docker login $REGISTRY -u $GITEA_USER -p $GITEA_PAT - 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 \ No newline at end of file