prueba/.drone.yml
MSI\migue 9e2a45e89d
Some checks reported errors
continuous-integration/drone/push Build encountered an error
hhh7
2025-04-02 16:45:00 -04:00

85 lines
3.1 KiB
YAML

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
- 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
# 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:8085
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
- docker build -t $REGISTRY_ADDRESS/$REPOSITORY_NAME/${DRONE_REPO_NAME}:${DRONE_COMMIT_SHA} -f src/main/docker/dockerfile . # -f para especificar ruta
# Push de la imagen
- docker push $REGISTRY_ADDRESS/$REPOSITORY_NAME/${DRONE_REPO_NAME}:${DRONE_COMMIT_SHA}
volumes:
- name: docker-sock
path: /var/run/docker.sock
# Paso 4: Despliegue en Servidor Externo
- name: deploy-to-server
image: appleboy/ssh
environment:
SSH_USER: "root"
SSH_HOST: "10.0.0.117"
SSH_PASSWORD: "admin123" # O usa SSH_KEY
REGISTRY_ADDRESS: "10.0.0.126:8085"
REPOSITORY_NAME: "docker-repository"
settings:
host: ${SSH_HOST}
username: ${SSH_USER}
password: ${SSH_PASSWORD} # ⚠️ Recomendado usar secretos en Drone
script:
- docker login -u $NEXUS_USER -p $NEXUS_PASSWORD $REGISTRY_ADDRESS
- docker pull $REGISTRY_ADDRESS/$REPOSITORY_NAME/${DRONE_REPO_NAME}:${DRONE_COMMIT_SHA}
- docker stop mi-app || true
- docker rm mi-app || true
- docker run -d --name mi-app -p 8082:8080 $REGISTRY_ADDRESS/$REPOSITORY_NAME/${DRONE_REPO_NAME}:${DRONE_COMMIT_SHA}
volumes:
- name: maven-cache
temp: {}
- name: docker-sock
host:
path: /var/run/docker.sock # Montar socket de Docker