147 lines
5.2 KiB
YAML
147 lines
5.2 KiB
YAML
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/admin/prueba.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
|
|
settings:
|
|
host: smtp.ipage.com
|
|
port: 465
|
|
# username: miguel.claure@myapps.com.bo
|
|
# password: -MiguelC1209
|
|
username:
|
|
from_secret: email_user
|
|
password:
|
|
from_secret: email_pass
|
|
from: miguel.claure@myapps.com.bo
|
|
recipients:
|
|
- sureflatron3@gmail.com
|
|
subject: "Resultado del pipeline: ${DRONE_BUILD_STATUS}"
|
|
# no_starttls: true
|
|
# skip_verify: true
|
|
body: |
|
|
<html>
|
|
<body style="font-family: Arial, sans-serif; color: #333; background-color: #f9f9f9; padding: 20px;">
|
|
<div style="background: #ffffff; border-radius: 8px; padding: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);">
|
|
<h2 style="color: #2c3e50;">🚀 Resultado del Pipeline</h2>
|
|
<table style="width: 100%; border-collapse: collapse; margin-top: 20px;">
|
|
<tr>
|
|
<td style="font-weight: bold; padding: 8px; border-bottom: 1px solid #ddd;">Pipeline</td>
|
|
<td style="padding: 8px; border-bottom: 1px solid #ddd;">${DRONE_REPO_NAME}</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold; padding: 8px; border-bottom: 1px solid #ddd;">Estado</td>
|
|
<td style="padding: 8px; border-bottom: 1px solid #ddd;">${DRONE_BUILD_STATUS}</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold; padding: 8px; border-bottom: 1px solid #ddd;">Commit</td>
|
|
<td style="padding: 8px; border-bottom: 1px solid #ddd;">${DRONE_COMMIT}</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold; padding: 8px; border-bottom: 1px solid #ddd;">Autor</td>
|
|
<td style="padding: 8px; border-bottom: 1px solid #ddd;">${DRONE_COMMIT_AUTHOR}</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold; padding: 8px; border-bottom: 1px solid #ddd;">Revisión</td>
|
|
<td style="padding: 8px; border-bottom: 1px solid #ddd;">${DRONE_COMMIT_SHA}</td>
|
|
</tr>
|
|
</table>
|
|
<div style="margin-top: 30px; text-align: center;">
|
|
<a href="${DRONE_BUILD_LINK}" style="display: inline-block; padding: 10px 20px; background-color: #3498db; color: white; text-decoration: none; border-radius: 5px;">
|
|
Ver Detalles del Pipeline
|
|
</a>
|
|
</div>
|
|
<p style="font-size: 12px; color: #777; margin-top: 20px;">Este es un correo automático generado por el sistema de CI/CD.</p>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
when:
|
|
status:
|
|
- success
|
|
- failure
|
|
|
|
|
|
volumes:
|
|
- name: maven-cache
|
|
host:
|
|
path: /tmp/drone-maven-cache
|