Saltar a contenido

Configuración de SonarQube

Configuración del Sistema

Variables de Entorno

SonarQube utiliza las siguientes variables de entorno para su configuración:

SONAR_JDBC_URL=jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME=sonar
SONAR_JDBC_PASSWORD=sonar

Configuración de Memoria

Para optimizar el rendimiento, se recomienda configurar la memoria JVM:

SONAR_WEB_JVM_OPTS="-Xmx2g -Xms1g"
SONAR_CE_JVM_OPTS="-Xmx2g -Xms1g"
SONAR_SEARCH_JVM_OPTS="-Xmx1g -Xms512m"

Configuración de Calidad

Reglas de Calidad

SonarQube incluye reglas predefinidas para múltiples lenguajes:

  • Java: 600+ reglas
  • JavaScript: 300+ reglas
  • Python: 200+ reglas
  • C#: 400+ reglas
  • PHP: 200+ reglas

Perfiles de Calidad

Se recomienda crear perfiles específicos para cada proyecto:

  1. Perfil Estricto: Para proyectos críticos
  2. Perfil Estándar: Para proyectos regulares
  3. Perfil Básico: Para proyectos de desarrollo

Integración con CI/CD

GitHub Actions

name: SonarQube Analysis
on: [push, pull_request]
jobs:
  sonarqube:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        fetch-depth: 0
    - name: SonarQube Scan
      uses: sonarqube-quality-gate-action@master
      env:
        SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
        SONAR_HOST_URL: https://sonar.seekdev.com

Jenkins Pipeline

pipeline {
    agent any
    stages {
        stage('SonarQube Analysis') {
            steps {
                withSonarQubeEnv('SonarQube') {
                    sh 'mvn clean verify sonar:sonar'
                }
            }
        }
        stage('Quality Gate') {
            steps {
                timeout(time: 1, unit: 'HOURS') {
                    waitForQualityGate abortPipeline: true
                }
            }
        }
    }
}

Configuración de Seguridad

Autenticación

SonarQube soporta múltiples métodos de autenticación:

  • LDAP: Integración con directorio activo
  • OAuth: Integración con proveedores OAuth
  • SAML: Autenticación SAML
  • Local: Usuarios locales

Autorización

Configurar grupos y permisos:

  • Administradores: Acceso completo
  • Usuarios: Acceso a proyectos asignados
  • Análisis: Solo ejecutar análisis

Monitoreo y Alertas

Métricas Clave

  • Cobertura de código: Porcentaje de código cubierto por tests
  • Duplicación: Porcentaje de código duplicado
  • Vulnerabilidades: Número de vulnerabilidades de seguridad
  • Code smells: Número de problemas de calidad

Alertas

Configurar alertas para:

  • Quality Gate fallido
  • Nuevas vulnerabilidades críticas
  • Degradación de cobertura de código
  • Aumento de deuda técnica

Backup y Recuperación

Backup Automático

# Backup de la base de datos
docker exec postgres-sonarqube pg_dump -U sonar sonar > sonarqube_backup.sql

# Backup de datos
docker run --rm -v sonarqube_data:/data -v $(pwd):/backup alpine tar czf /backup/sonarqube_data.tar.gz -C /data .

Restauración

# Restaurar base de datos
docker exec -i postgres-sonarqube psql -U sonar sonar < sonarqube_backup.sql

# Restaurar datos
docker run --rm -v sonarqube_data:/data -v $(pwd):/backup alpine tar xzf /backup/sonarqube_data.tar.gz -C /data