From b3de8dba3a9fa1930c074020672e27a565f015fa Mon Sep 17 00:00:00 2001 From: dmolinari Date: Sun, 15 Jun 2025 23:06:51 -0300 Subject: [PATCH] Retry mil --- .drone.yml | 162 +++++++++++++++++++++++++++-------------------------- 1 file changed, 84 insertions(+), 78 deletions(-) diff --git a/.drone.yml b/.drone.yml index cd1d5e5..daa979d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,84 +1,90 @@ - kind: pipeline - type: docker - name: Build y Deploy +kind: pipeline +type: docker +name: Build y Deploy - trigger: - branch: - - main - event: - - push +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}} +steps: +- 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 +- 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 +- name: deploy-to-production + 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: + # Preparar el entorno SSH + - 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 + + # Ejecutar comandos remotos + - | + ssh $PROD_USER@$PROD_HOST << 'EOF' + echo "--- CONECTADO AL SERVIDOR DE PRODUCCIÓN ---" + cd /opt/gestion-integral - # 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 + # Exportamos las variables que necesita el docker-compose de la app + export DB_SA_PASSWORD="${DB_PASSWORD}" + export JWT_KEY="${JWT_KEY}" - depends_on: - - build-and-publish-frontend \ No newline at end of file + # Login, pull y deploy + 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: + - build-and-publish-frontend \ No newline at end of file