Documentación
Procesos de Calidad en el desarrollo de Software
Esta documentación es una base para poder implementar un código de calidad y aumentar la productividad de los entregables hacia el cliente, de una manera rápida y sistemática.
- Versión: 1.0
- Autor: Alvaro Rincones, Líder Técnico
- Creado: 22 Septiembre, 2024
- Actualizado: 22 Septiembre, 2024
Cualquier inquetud que tengas puedes comunicarte a través de los medios que dispone Imaginamos para la comunicación interna de los desarrolladores.
Guía de Instalación y Configuración de Git y GitHub Desktop
Esta documentación te guiará paso a paso para instalar Git, se recomendará la instalación de GitHub Desktop y te mostrará cómo configurar tu cuenta de GitHub utilizando SSH para una mayor seguridad. Sigue estos pasos cuidadosamente para asegurar una configuración correcta y eficiente.
Índice
- Crear una Cuenta en GitHub
- Instalar Git
- Instalar GitHub Desktop
- Configurar SSH en GitHub
- Verificación de la Configuración
1. Crear una Cuenta en GitHub
Antes de comenzar con la instalación de herramientas, es necesario crear una cuenta en GitHub utilizando tu correo corporativo proporcionado por Imaginamos.
Pasos para Crear una Cuenta en GitHub
- Accede a GitHub: Abre tu navegador web y dirígete a https://github.com.
- Registro de Nueva Cuenta: Haz clic en el botón "Sign up" ubicado en la esquina superior derecha.
- Completa la Información: Ingresa tu correo corporativo, crea una contraseña y selecciona un nombre de usuario único.
- Finalizar Registro: Verifica tu correo electrónico si es necesario.
2. Instalar Git
Git es un sistema de control de versiones esencial para el manejo de tus proyectos. A continuación, se explica cómo instalarlo en diferentes sistemas operativos.
Instalación en Windows
- Descargar Git: Ve a https://git-scm.com/download/win y descarga el instalador.
- Ejecutar el Instalador: Abre el archivo descargado y sigue las instrucciones del asistente de instalación.
- Verificar la Instalación: Abre Símbolo del sistema o
PowerShell y ejecuta el siguiente comando:
git --version
Instalación en macOS
- Usar Homebrew: Abre la terminal y ejecuta:
Luego instala Git con:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install git
- Verificar la Instalación: En la terminal, ejecuta:
git --version
Instalación en Linux
- Distribuciones Basadas en Debian/Ubuntu: Abre la terminal y ejecuta:
sudo apt update && sudo apt install git
- Verificar la Instalación: En la terminal, ejecuta:
git --version
3. Instalar GitHub Desktop
- Descargar GitHub Desktop: Ve a https://desktop.github.com y descarga el instalador.
- Ejecutar el Instalador: Abre el archivo descargado y sigue las instrucciones del asistente de instalación.
- Iniciar Sesión: Inicia sesión con las credenciales de tu cuenta de GitHub creada previamente.
4. Configurar SSH en GitHub
4.1 Generar Claves SSH
En Windows (Usando Git Bash)
- Abrir Git Bash: Busca "Git Bash" en el menú de inicio y ábrelo.
- Generar la Clave SSH: Ejecuta el siguiente comando:
ssh-keygen -t ed25519 -C "tu_email@imaginamos.com"
En macOS y Linux
- Abrir la Terminal: Abre la terminal en tu sistema operativo.
- Generar la Clave SSH: Ejecuta el siguiente comando:
ssh-keygen -t ed25519 -C "tu_email@imaginamos.com"
4.2 Agregar la Clave SSH a tu Cuenta de GitHub
- Copiar la Clave Pública: Ejecuta el siguiente comando en tu terminal para copiar la
clave pública al portapapeles:
clip < ~/.ssh/id_ed25519.pub
- Agregar la Clave en GitHub: Accede a GitHub, ve a "Settings" > "SSH and GPG keys", y haz clic en "New SSH key".
5. Verificación de la Configuración
Para verificar que la configuración de SSH fue exitosa, abre la terminal y ejecuta:
ssh -T git@github.com
Deberías recibir un mensaje confirmando que la autenticación fue exitosa.
Para cualquier duda o asistencia adicional, contacta al equipo de soporte técnico de Imaginamos.
Configuración de SonarQube en Local con Docker
1. Instalación y Configuración de SonarQube en Docker
Paso 1: Preparar el ambiente local
Requisitos:
- Tener Docker y Docker Compose instalados.
- 4 GB de RAM asignados a Docker.
Paso 2: Crear un archivo docker-compose.yml
Crea un archivo llamado docker-compose.yml
en el directorio raíz del proyecto y añade el
siguiente contenido:
version: "3"
services:
sonarqube:
image: sonarqube:lts-enterprise
container_name: sonarqube
ports:
- "9000:9000"
environment:
- SONAR_JDBC_URL=jdbc:postgresql://db:5432/sonarqube
- SONAR_JDBC_USERNAME=sonar
- SONAR_JDBC_PASSWORD=sonar
networks:
- sonarnet
volumes:
- sonarqube_data:/opt/sonarqube/data
- sonarqube_logs:/opt/sonarqube/logs
- sonarqube_extensions:/opt/sonarqube/extensions
db:
image: postgres:13
container_name: sonarqube_db
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
- POSTGRES_DB=sonarqube
networks:
- sonarnet
volumes:
- postgresql_data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
volumes:
postgresql_data:
sonarqube_data:
sonarqube_logs:
sonarqube_extensions:
Paso 3: Ejecutar SonarQube con Docker Compose
Ejecuta el siguiente comando en la terminal dentro del directorio donde está ubicado el archivo
docker-compose.yml
:
docker-compose up -d
Accede a SonarQube desde tu navegador en http://localhost:9000.
Paso 4: Configurar SonarQube
- Inicia sesión con las credenciales predeterminadas: admin/admin.
- Cambia la contraseña después de iniciar sesión.
Paso 5: Agregar un Proyecto a SonarQube
- Selecciona Create new project.
- Genera un token para el proyecto.
- Sigue las instrucciones para agregar el análisis de código a tu proyecto (por ejemplo, con Maven o Gradle).
Paso 6: Ejecutar el análisis de SonarQube en el proyecto
Añade el archivo sonar-project.properties
al directorio raíz del proyecto con el siguiente
contenido:
sonar.projectKey=nombre-del-proyecto
sonar.host.url=http://localhost:9000
sonar.login=token-generado
Luego, ejecuta el siguiente comando:
sonar-scanner
2. Configuración de Quality Gates (QG)
Paso 1: Acceder a Quality Gates
Desde la interfaz de SonarQube, selecciona Quality Gates en el menú principal.
Paso 2: Crear un nuevo Quality Gate
Haz clic en Create para crear un nuevo Quality Gate y define las reglas necesarias, como la cobertura mínima de código.
Paso 3: Asignar el Quality Gate al proyecto
Ve a Administration > Projects, selecciona tu proyecto y asigna el nuevo Quality Gate.
3. Automatización del Proceso
Considera integrar SonarQube en tus pipelines de CI/CD (como Jenkins, GitLab CI, GitHub Actions) para automatizar el análisis de código en cada commit o pull request.
4. Solución de Problemas Comunes
Asegúrate de verificar los registros de SonarQube si hay problemas de conexión o rendimiento. Algunos errores comunes incluyen:
- Problemas de memoria asignada a Docker.
- Fallos de conexión con la base de datos PostgreSQL.
- Errores de autenticación al usar tokens incorrectos.
Guía del Desarrollador
Es una guía general sobre las buenas prácticas que se deben seguir en el desarrollo de funcionalidades. También encontrarás toda la documentación técnica y los flujos de trabajo recomendados por Imaginamos.
Convención de Conventional Commits
La convención de Conventional Commits utilizada en Angular sigue una estructura específica que ayuda a estandarizar los mensajes de commit, facilitando el entendimiento y la revisión de cambios. A continuación se detalla el formato y algunos ejemplos:
Formato General:
<tipo>(<alcance opcional>): <descripción corta>
<cuerpo opcional>
<footer opcional>
Descripción de cada parte:
- Tipo: Describe la naturaleza del cambio. Algunos tipos comunes incluyen:
feat
: Para una nueva funcionalidad.fix
: Para corregir un bug.docs
: Para cambios en la documentación.style
: Para cambios de estilo (formato, indentación) que no afectan la lógica del código.refactor
: Para refactorización de código sin agregar o corregir funcionalidad.test
: Para agregar o modificar pruebas.chore
: Para cambios que no afectan el código de producción, como actualizaciones de dependencias.
- Alcance (opcional): El área o módulo afectado por el cambio, colocado entre paréntesis después del tipo de commit.
- Descripción corta: Una breve descripción del cambio que no debe exceder los 72 caracteres.
- Cuerpo opcional: Descripción más detallada que proporciona contexto o explicaciones adicionales.
- Footer opcional: Para incluir notas adicionales, como referencias a issues (por
ejemplo,
Closes #123
) o indicar breaking changes.
Ejemplos de Conventional Commits:
Agregar una nueva funcionalidad:
feat(users): agregar soporte para autenticación por OAuth
Corregir un bug:
fix(login): corregir el error al validar credenciales vacías
Actualizar la documentación:
docs(readme): agregar instrucciones de configuración inicial
Cambios de estilo:
style(header): corregir la indentación y eliminar espacios en blanco
Refactorización de código:
refactor(api): optimizar el manejo de errores en las peticiones
Cambiar el proceso de construcción o actualizar dependencias:
chore(deps): actualizar la versión de TypeScript a 4.3.5
Notas importantes:
La estructura de Conventional Commits ayuda a automatizar procesos como:
- Generar changelogs automáticamente.
- Gestionar el versionado semántico.
- Facilitar la revisión y entendimiento de los cambios realizados.
Puedes consultar la documentación oficial para obtener más detalles.
Introducción a Git Flow

Git Flow es una estrategia de branching (manejo de ramas) para Git que facilita la organización del ciclo de vida del desarrollo de software. Fue introducida por Vincent Driessen y se ha convertido en una metodología popular para gestionar el desarrollo colaborativo en equipos, permitiendo mantener la estabilidad del código en producción mientras se trabaja en nuevas características o correcciones.
El flujo Git Flow define una estructura clara de ramas con roles específicos para cada una de ellas:
- main: Es la rama principal, siempre lista para ser desplegada en producción. Solo contiene versiones estables del software.
- develop: Esta rama actúa como el punto de integración donde los desarrolladores combinan su trabajo. El código aquí está en constante evolución, pero debe estar lo suficientemente estable como para futuras versiones.
- feature branches: Son ramas temporales utilizadas para desarrollar nuevas características o mejoras. Una vez completada la tarea, se fusionan en la rama develop.
- release branches: Se crean a partir de develop cuando una nueva versión está lista
para ser lanzada. Aquí se hacen pruebas y ajustes finales antes de fusionarse tanto en
main
como endevelop
. - hotfix branches: Se utilizan para arreglar errores críticos en producción. Se crean a
partir de
main
y, una vez que el problema se soluciona, la corrección se fusiona enmain
ydevelop
.
Beneficios de Git Flow
- Organización clara: Diferentes ramas para diferentes propósitos permiten mantener el código más organizado.
- Control de versiones: Facilita la gestión de múltiples versiones del software en paralelo.
- Flujo controlado: Permite la integración continua y las pruebas antes de desplegar en producción, reduciendo riesgos.
Este flujo es ideal para proyectos donde se necesita mantener versiones de producción estables, mientras se desarrollan nuevas funcionalidades de forma simultánea.
Git Flow en Imaginamos

Proceso para la Implementación de Features/Fixes y Validación de Calidad de Código con SonarQube

-
Clonación del Repositorio
El desarrollador debe clonar el repositorio remoto al entorno local para contar con una copia actualizada del código fuente en su máquina. Esto garantiza que el trabajo se realiza con la versión más reciente del proyecto. -
Creación de una Nueva Rama (feature o fix)
Partiendo de la rama de desarrollo (por ejemplo,develop
), se crea una nueva rama que sigue el esquema de nombres establecido, utilizando prefijos comofeature/
ofix/
, dependiendo de si se trata de una nueva funcionalidad o de la corrección de un error. Esto permite aislar los cambios específicos del desarrollo en curso. -
Desarrollo de la Feature/Fix y Commits
En esta fase, se implementan los cambios necesarios para completar la feature o corregir el fix. Cada avance significativo en el desarrollo se guarda mediante un commit. Es importante que los mensajes de commit sigan el estándar de conventional commits definido por la empresa, asegurando claridad y consistencia en el historial de cambios. -
Ejecución del Escáner de SonarQube
Una vez que se han realizado los cambios en el código, se ejecuta el escáner de SonarQube para validar que el código cumple con los Quality Gates establecidos. Este análisis detecta posibles errores, vulnerabilidades y asegura el cumplimiento de estándares de calidad y seguridad. -
Validación de los Quality Gates en SonarQube
En este paso, se revisa si el código ha cumplido con los Quality Gates mínimos definidos. Dependiendo del resultado, hay dos escenarios posibles:-
No cumple con los Quality Gates
Si el código no cumple con los mínimos establecidos (por ejemplo, por la presencia de errores o baja cobertura de pruebas), el desarrollador debe realizar correcciones y agregar nuevos commits que solventen los problemas identificados. Después, se vuelve a ejecutar el escáner de SonarQube. -
Cumple con los Quality Gates
Si el código pasa los Quality Gates, el desarrollador puede proceder a subir los cambios al repositorio remoto, subiendo la rama que contiene la feature o fix implementada.
-
No cumple con los Quality Gates
-
Generación de la Pull Request (PR)
Con la rama ya subida al repositorio remoto, se genera una Pull Request (PR) que apunta a la rama de desarrollo principal (generalmentedevelop
omaster
). Este PR solicita la revisión de los cambios antes de ser integrados en la rama principal.-
Subida de Evidencias
Se adjunta una captura de pantalla o un reporte del análisis de SonarQube que muestra los resultados del escaneo, asegurando que los Quality Gates se han cumplido correctamente. -
Revisión por Parte del Equipo
El líder de equipo o un compañero desarrollador revisa la PR, verificando tanto la funcionalidad como la calidad del código, en base a las políticas del equipo. -
Corregir según Sugerencias
Si durante la revisión se encuentran aspectos por mejorar, el desarrollador debe corregir los cambios según las sugerencias, hacer los ajustes necesarios, y repetir el proceso desde el paso 3. -
Fusión del PR
Si la PR no tiene comentarios o sugerencias pendientes, se procede a fusionar la rama de la feature o fix en la rama de desarrollo principal, completando el ciclo de implementación.
-
Subida de Evidencias