diff --git a/.drone.yml b/.drone.yml index cde16cd..cd1d5e5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,80 +1,84 @@ -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: -- name: build-and-publish-backend - image: plugins/docker - settings: - # El registro es la IP pública para que Docker pueda subir la imagen - registry: - from_secret: REGISTRY_URL - # El repo se construye con el dueño y nombre del repo en Gitea - repo: ${{DRONE_REPO_OWNER}}/${{DRONE_REPO_NAME}}-backend - # El usuario y la contraseña (PAT) para el login - username: - from_secret: GITEA_USER - password: - from_secret: ACTIONS_PAT - # El Dockerfile a usar - dockerfile: Backend/GestionIntegral.Api/Dockerfile - # Las etiquetas - tags: - - latest - - ${{DRONE_COMMIT_SHA:0:8}} + 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 + - 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 SECCIÓN FINAL Y CORRECTA! --- -- 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 - - # --- ¡LA SINTAXIS CORRECTA! --- - # Le pasamos los secretos como variables de entorno al script - env_vars: - - DB_SA_PASSWORD=${DB_SA_PASSWORD_SECRET} - - JWT_KEY=${JWT_KEY_SECRET} - - REGISTRY_URL=${REGISTRY_URL} - - GITEA_USER=${GITEA_USER} - - ACTIONS_PAT=${ACTIONS_PAT} - - # El plugin usa 'script', no 'commands'. - script: - - cd /opt/gestion-integral - - export DB_SA_PASSWORD # Las variables ya están en el entorno, solo las exportamos - - export JWT_KEY - - docker login $REGISTRY_URL -u $GITEA_USER -p $ACTIONS_PAT - - docker compose pull - - docker compose up -d - - docker image prune -af + # --- ¡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 - depends_on: - - build-and-publish-frontend \ No newline at end of file + # 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 \ No newline at end of file