diff --git a/.drone.yml b/.drone.yml index 4459f90..95e2528 100644 --- a/.drone.yml +++ b/.drone.yml @@ -12,60 +12,45 @@ steps: environment: MAVEN_OPTS: -Xmx2048m -XX:+TieredCompilation -XX:TieredStopAtLevel=1 commands: - - mvn clean verify #-Poffline --settings nexus-settings.xml - - mvn jacoco:report # Generar reporte de cobertura + - mvn clean verify + - mvn jacoco:report volumes: - name: maven-cache path: /root/.m2 - # # Paso 2: Análisis SonarQube con Maven + # Paso 2: Análisis SonarQube con Maven - name: sonarqube-analysis image: maven:3.9-eclipse-temurin-21-alpine environment: - #SONAR_HOST_URL: ${SONARQUBE_URL} # URL de tu servidor SonarQube - #SONAR_LOGIN: ${SONARQUBE_TOKEN} # Token de autenticación en SonarQube - #SONAR_PROJECT_KEY: ${SONARQUBE_PROJECT_KEY} # Clave del proyecto en SonarQube - SONAR_HOST_URL: http://10.0.0.126:9000 # URL de tu servidor SonarQube - SONAR_LOGIN: squ_465ae384ffda803d8e58d9ef0111bef1277c874a # Token de autenticación en SonarQube - SONAR_PROJECT_KEY: hhh # Clave del proyecto en SonarQube + SONAR_HOST_URL: http://10.0.0.126:9000 + SONAR_LOGIN: squ_465ae384ffda803d8e58d9ef0111bef1277c874a + SONAR_PROJECT_KEY: hhh commands: - #- mvn sonar:sonar # Ejecuta el análisis de SonarQube usando Maven - - mvn clean verify sonar:sonar -DskipTests #--settings nexus-settings.xml + - 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 (NUEVO) + + # Paso 3: Build y Push de Docker Image a Nexus usando plugin oficial - name: docker-build-push - image: docker:20.10.24 - environment: - NEXUS_USER: yandel # Usuario de Nexus con permisos push - NEXUS_PASSWORD: yandel # Contraseña del usuario - REGISTRY_ADDRESS: 10.0.0.126:8081 - REPOSITORY_NAME: docker-repository # Nombre del repositorio Docker en Nexus - commands: - # Login a Nexus Docker Registry - - docker login -u $NEXUS_USER -p $NEXUS_PASSWORD $REGISTRY_ADDRESS - - # Construir imagen con tag dinámico ${DRONE_BUILD_NUMBER} - - docker build -t $REGISTRY_ADDRESS/$REPOSITORY_NAME/${DRONE_REPO_NAME}:${DRONE_BUILD_NUMBER} -f src/main/docker/dockerfile . # -f para especificar ruta - - # Push de la imagen - - docker push $REGISTRY_ADDRESS/$REPOSITORY_NAME/${DRONE_REPO_NAME}:${DRONE_BUILD_NUMBER} - volumes: - - name: docker-sock - path: /var/run/docker.sock - + image: plugins/docker + settings: + 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 # Nombre del repositorio Docker en Nexus + REPOSITORY_NAME: docker-repository settings: - host: + host: - 10.0.0.117 - 10.0.0.116 username: @@ -73,7 +58,7 @@ steps: password: from_secret: ssh_password_117 port: 22 - command_timeout: 2m + command_timeout: 2m script: - echo "Iniciando despliegue..." - docker login -u yandel -p yandel 10.0.0.126:8081 @@ -81,13 +66,9 @@ steps: - 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 $NEXUS_PASSWORD $REGISTRY_ADDRESS/docker-repository/${DRONE_REPO_NAME}:${DRONE_COMMIT_SHA} - #- docker run -d --name mi-app -p 8082:8080 $NEXUS_PASSWORD $REGISTRY_ADDRESS/docker-repository/${DRONE_REPO_NAME}:${DRONE_COMMIT_SHA} - echo "Fin despliegue..." + volumes: - name: maven-cache host: path: /tmp/drone-maven-cache - - name: docker-sock - host: - path: /var/run/docker.sock # Montar socket de Docker diff --git a/.droneBK.yml b/.droneBK.yml new file mode 100644 index 0000000..4459f90 --- /dev/null +++ b/.droneBK.yml @@ -0,0 +1,93 @@ +kind: pipeline +type: docker +name: spring-boot-java21 + +workspace: + base: /drone/src + +steps: + # 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 #-Poffline --settings nexus-settings.xml + - mvn jacoco:report # Generar reporte de cobertura + 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: ${SONARQUBE_URL} # URL de tu servidor SonarQube + #SONAR_LOGIN: ${SONARQUBE_TOKEN} # Token de autenticación en SonarQube + #SONAR_PROJECT_KEY: ${SONARQUBE_PROJECT_KEY} # Clave del proyecto en SonarQube + SONAR_HOST_URL: http://10.0.0.126:9000 # URL de tu servidor SonarQube + SONAR_LOGIN: squ_465ae384ffda803d8e58d9ef0111bef1277c874a # Token de autenticación en SonarQube + SONAR_PROJECT_KEY: hhh # Clave del proyecto en SonarQube + commands: + #- mvn sonar:sonar # Ejecuta el análisis de SonarQube usando Maven + - mvn clean verify sonar:sonar -DskipTests #--settings nexus-settings.xml + volumes: + - name: maven-cache + path: /root/.m2 + when: + event: [push, pull_request] + + # Paso 3: Build y Push de Docker Image a Nexus (NUEVO) + - name: docker-build-push + image: docker:20.10.24 + environment: + NEXUS_USER: yandel # Usuario de Nexus con permisos push + NEXUS_PASSWORD: yandel # Contraseña del usuario + REGISTRY_ADDRESS: 10.0.0.126:8081 + REPOSITORY_NAME: docker-repository # Nombre del repositorio Docker en Nexus + commands: + # Login a Nexus Docker Registry + - docker login -u $NEXUS_USER -p $NEXUS_PASSWORD $REGISTRY_ADDRESS + + # Construir imagen con tag dinámico ${DRONE_BUILD_NUMBER} + - docker build -t $REGISTRY_ADDRESS/$REPOSITORY_NAME/${DRONE_REPO_NAME}:${DRONE_BUILD_NUMBER} -f src/main/docker/dockerfile . # -f para especificar ruta + + # Push de la imagen + - docker push $REGISTRY_ADDRESS/$REPOSITORY_NAME/${DRONE_REPO_NAME}:${DRONE_BUILD_NUMBER} + volumes: + - name: docker-sock + path: /var/run/docker.sock + + # 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 # Nombre del repositorio Docker en Nexus + 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 $NEXUS_PASSWORD $REGISTRY_ADDRESS/docker-repository/${DRONE_REPO_NAME}:${DRONE_COMMIT_SHA} + #- docker run -d --name mi-app -p 8082:8080 $NEXUS_PASSWORD $REGISTRY_ADDRESS/docker-repository/${DRONE_REPO_NAME}:${DRONE_COMMIT_SHA} + - echo "Fin despliegue..." +volumes: + - name: maven-cache + host: + path: /tmp/drone-maven-cache + - name: docker-sock + host: + path: /var/run/docker.sock # Montar socket de Docker