clone: disable: true kind: pipeline type: docker name: spring-boot-java21 workspace: base: /drone/src steps: - name: manual-clone image: alpine/git commands: - git clone http://10.0.0.126:3000/${DRONE_REPO}.git . # Paso 1: Build y tests con Maven (Java 21) - name: build-and-test image: maven:3.9-eclipse-temurin-21-alpine environment: MAVEN_OPTS: -Xmx2048m -XX:+TieredCompilation -XX:TieredStopAtLevel=1 commands: - mvn clean verify - mvn jacoco:report volumes: - name: maven-cache path: /root/.m2 # Paso 2: Análisis SonarQube con Maven - name: sonarqube-analysis image: maven:3.9-eclipse-temurin-21-alpine environment: SONAR_HOST_URL: http://10.0.0.126:9000 SONAR_LOGIN: squ_465ae384ffda803d8e58d9ef0111bef1277c874a SONAR_PROJECT_KEY: hhh commands: - mvn clean verify sonar:sonar -DskipTests volumes: - name: maven-cache path: /root/.m2 when: event: [push, pull_request] # Paso 3: Build y Push de Docker Image a Nexus usando plugin oficial - name: docker-build-push image: plugins/docker settings: registry: 10.0.0.126:8081 insecure: true repo: 10.0.0.126:8081/docker-repository/${DRONE_REPO_NAME} tags: ${DRONE_BUILD_NUMBER} username: yandel password: yandel dockerfile: src/main/docker/dockerfile # Paso 4: Despliegue en Servidor Externo - name: deploy-to-server image: appleboy/drone-ssh environment: REGISTRY_ADDRESS: 10.0.0.126:8081 REPOSITORY_NAME: docker-repository settings: host: - 10.0.0.117 - 10.0.0.116 username: from_secret: ssh_usuario_117 password: from_secret: ssh_password_117 port: 22 command_timeout: 2m script: - echo "Iniciando despliegue..." - docker login -u yandel -p yandel 10.0.0.126:8081 - docker stop mi-app || true - docker rm mi-app || true #- docker pull 10.0.0.126:8081/docker-repository/${DRONE_REPO_NAME}:${DRONE_BUILD_NUMBER} #- docker run -d --name mi-app -p 8082:8080 10.0.0.126:8081/docker-repository/${DRONE_REPO_NAME}:${DRONE_BUILD_NUMBER} - docker pull 10.0.0.126:8085/docker-repository/prueba:${DRONE_BUILD_NUMBER} - docker run -d --restart=always --name mi-app-prueba -p 8082:8080 10.0.0.126:8085/docker-repository/prueba:${DRONE_BUILD_NUMBER} - echo "Fin despliegue..." - - name: send-email image: drillster/drone-email failure: ignore settings: host: smtp.ipage.com port: 465 username: from_secret: email_user password: from_secret: email_pass from: miguel.claure@myapps.com.bo recipients: #- sureflatron@gmail.com - miguel.claure@myapps.com.bo subject: "Resultado del pipeline: ${DRONE_BUILD_STATUS}" # no_starttls: true # skip_verify: true body: |

🚀 Resultado del Pipeline

Pipeline ${DRONE_REPO_NAME}
Estado ${DRONE_BUILD_STATUS}
Commit ${DRONE_COMMIT}
Autor ${DRONE_COMMIT_AUTHOR}
Revisión ${DRONE_COMMIT_SHA}
Ver Detalles del Pipeline

Este es un correo automático generado por el sistema de CI/CD.

when: status: - success - failure volumes: - name: maven-cache host: path: /tmp/drone-maven-cache