Pipeline de integración continua para una aplicación Java utilizando Jenkins, Maven y SonarQube. El proyecto analiza el código automáticamente con cada cambio en GitHub, compila, ejecuta pruebas y envía los resultados a SonarQube para revisión de calidad.
- 🔧 Java 21 — Código fuente de la app (
/authapp) - ⚙️ Maven — Build y ejecución de pruebas
- 🚀 Jenkins (Docker) — Automatiza el proceso CI/CD
- 📊 SonarQube (Docker) — Análisis estático de código
- 🐳 Docker Compose — Orquestación de servicios
| Jenkins | SonarQube |
|---|---|
![]() |
![]() |
- Docker
- Docker Compose
- Git
# Clona el repositorio
git clone https://github.com/brayandiazc/authapp-ci.git
cd authapp-ci
# Asegúrate de tener esta estructura:
# .
# ├── docker-compose.yml
# ├── jenkins/
# │ └── Dockerfile
# └── authapp/
# └── (código Java + pom.xml)
# Construye y levanta los contenedores
docker compose up --build -d
# Extrae la contraseña inicial de Jenkins
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword-
Accede a http://localhost:8080
-
Ingresa la contraseña inicial (ver paso anterior)
-
Instala los plugins sugeridos
-
Configura las herramientas:
-
Java 21 (verifica con
readlink -f $(which java)) -
Maven 3.x (
/usr/share/maven) -
SonarQube:
- Nombre:
SonarQube - URL:
http://sonarqube:9000
- Nombre:
-
-
Agrega un nuevo Pipeline Job:
- Origen: Git →
https://github.com/brayandiazc/authapp-ci.git - Branch:
main - Script Path:
Jenkinsfile
- Origen: Git →
pipeline {
agent any
tools {
jdk 'Java21'
maven 'Maven3'
}
environment {
SONARQUBE_ENV = 'SonarQube'
}
stages {
stage('Build y Test') {
steps {
dir('authapp') {
sh 'mvn clean test'
}
}
}
stage('SonarQube Analysis') {
steps {
withSonarQubeEnv("${SONARQUBE_ENV}") {
dir('authapp') {
sh '''
mvn sonar:sonar \
-Dsonar.projectKey=authapp \
-Dsonar.host.url=http://sonarqube:9000 \
-Dsonar.login=tu_token_aqui
'''
}
}
}
}
}
}🔐 Importante: genera tu token en SonarQube:
http://localhost:9000 > My Account > Security > Generate Tokens
El sistema ejecuta automáticamente mvn clean test dentro del pipeline CI.
docker compose downPara limpiar todo:
docker compose down -v --remove-orphans- Jenkins con Maven
- Análisis con SonarQube
- Notificaciones Slack
- Despliegue automático (CD)
# Fork → Rama → Cambios → Pull RequestMIT — ver LICENSE
⌨️ con ❤️ por Brayan Diaz C

