From c361842a917c6f5c9d3aef92d7e3c2c6d6b1c262 Mon Sep 17 00:00:00 2001 From: dmolinari Date: Mon, 16 Jun 2025 18:06:14 -0300 Subject: [PATCH] Retry 1806 --- .drone.yml | 75 +++++++++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/.drone.yml b/.drone.yml index 9495672..9d8e0fa 100644 --- a/.drone.yml +++ b/.drone.yml @@ -9,52 +9,65 @@ volumes: trigger: branch: - - main + - main event: - - push + - push steps: - name: build-and-publish-backend - image: plugins/docker + image: docker:latest # Usamos la imagen oficial de Docker CLI volumes: - name: dockersock path: /var/run/docker.sock - settings: - registry: - from_secret: REGISTRY_URL - repo: 192.168.4.128:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-backend - username: + environment: + # Pasamos las credenciales de forma segura como variables de entorno + GITEA_USER: from_secret: GITEA_USER - password: + ACTIONS_PAT: from_secret: ACTIONS_PAT - dockerfile: Backend/GestionIntegral.Api/Dockerfile - tags: - - latest - - ${DRONE_COMMIT_SHA:0:8} - insecure: true + REGISTRY_URL: + from_secret: REGISTRY_URL + commands: + # 1. Iniciar sesión en el registro de Gitea + - echo "Iniciando sesión en ${REGISTRY_URL}..." + - docker login -u $GITEA_USER -p $ACTIONS_PAT $REGISTRY_URL + + # 2. Definir los tags para la imagen + - export TAG_LATEST="${REGISTRY_URL}/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-backend:latest" + - export TAG_COMMIT="${REGISTRY_URL}/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-backend:${DRONE_COMMIT_SHA:0:8}" + - echo "Creando imagen con tags: ${TAG_LATEST} y ${TAG_COMMIT}" + + # 3. Construir la imagen de Docker + - docker build -t $TAG_LATEST -t $TAG_COMMIT -f Backend/GestionIntegral.Api/Dockerfile . + + # 4. Subir ambos tags al registro + - docker push $TAG_LATEST + - docker push $TAG_COMMIT - name: build-and-publish-frontend - image: plugins/docker + image: docker:latest volumes: - name: dockersock path: /var/run/docker.sock - settings: - registry: - from_secret: REGISTRY_URL - repo: 192.168.4.128:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-frontend - username: + environment: + GITEA_USER: from_secret: GITEA_USER - password: + ACTIONS_PAT: from_secret: ACTIONS_PAT - dockerfile: Frontend/Dockerfile - tags: - - latest - - ${DRONE_COMMIT_SHA:0:8} - insecure: true + REGISTRY_URL: + from_secret: REGISTRY_URL + commands: + - docker login -u $GITEA_USER -p $ACTIONS_PAT $REGISTRY_URL + - export TAG_LATEST="${REGISTRY_URL}/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-frontend:latest" + - export TAG_COMMIT="${REGISTRY_URL}/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-frontend:${DRONE_COMMIT_SHA:0:8}" + - docker build -t $TAG_LATEST -t $TAG_COMMIT -f Frontend/Dockerfile . + - docker push $TAG_LATEST + - docker push $TAG_COMMIT depends_on: - build-and-publish-backend - name: deploy-to-production + # Este paso ya estaba bien y no necesita cambios image: alpine:latest environment: SSH_KEY: @@ -74,30 +87,22 @@ steps: 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 - - # Exportamos las variables que necesita el docker-compose de la app export DB_SA_PASSWORD="${DB_PASSWORD}" export JWT_KEY="${JWT_KEY}" - - # 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 + - build-and-publish-frontend \ No newline at end of file