kind: pipeline type: docker name: Build y Deploy trigger: branch: - main event: - push steps: - name: build-and-publish-backend # Cambiamos la imagen a Kaniko image: gcr.io/kaniko-project/executor:v1.9.0-debug settings: # El destino final de la imagen, incluyendo el registro y la primera tag destination: 192.168.4.128:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-backend:latest # Para añadir más tags, las ponemos en una lista aquí destinations: - 192.168.4.128:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-backend:${DRONE_COMMIT_SHA:0:8} # El Dockerfile que se va a usar dockerfile: Backend/GestionIntegral.Api/Dockerfile # El contexto de la construcción (la raíz del repo) context: . # Credenciales para el registro (Kaniko las usa para el push) username: from_secret: GITEA_USER password: from_secret: ACTIONS_PAT # Flag para permitir la conexión a un registro inseguro (HTTP) insecure: true - name: build-and-publish-frontend image: gcr.io/kaniko-project/executor:v1.9.0-debug settings: destination: 192.168.4.128:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-frontend:latest destinations: - 192.168.4.128:5000/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME,,}-frontend:${DRONE_COMMIT_SHA:0:8} dockerfile: Frontend/Dockerfile context: . username: from_secret: GITEA_USER password: from_secret: ACTIONS_PAT insecure: true depends_on: - build-and-publish-backend - name: deploy-to-production # Este paso no cambia en absoluto 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: - 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 - | ssh $PROD_USER@$PROD_HOST << 'EOF' echo "--- CONECTADO AL SERVIDOR DE PRODUCCIÓN ---" cd /opt/gestion-integral export DB_SA_PASSWORD="${DB_PASSWORD}" export JWT_KEY="${JWT_KEY}" 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