Cada persona implicada en el ciclo de vida de un producto digital, ya sea desarrollador de aplicaciones, responsable de proyecto, miembro del equipo técnico o cliente final, necesita trazabilidad a lo largo de todo el proceso para entender qué cambió, cuándo y por qué.
Por qué versionar una aplicación es imprescindible
- Seguimiento detallado de cambios y nuevas funcionalidades
- Gestión de errores y depuración más rápida y eficaz
- Definición de compatibilidades y dependencias
- Comunicación clara con usuarios y clientes
- Preparación de paquetes de actualización
- Actualizaciones periódicas de seguridad
- Soporte y mantenimiento del producto
Cuando hablamos de trazabilidad, nos referimos a que todo cambio, sea cual sea su objetivo, debe estar asociado a una versión del producto. Así, cualquier ajuste se puede rastrear con precisión, los errores de código o de la aplicación se localizan en menos tiempo y con menos recursos, y la comunicación con el usuario sobre lo que incluye la versión X es directa y verificable.
A continuación se presenta una forma práctica de implementar el versionado y la generación de un changelog basado en commits. Para la demostración se utilizan PowerShell, YAML y un proyecto en C#.
Esquema de versionado propuesto en formato w.x.y.z
w mayor definido manualmente
x año actual en tiempo de ejecución
y mes actual en tiempo de ejecución
z contador incremental que se reinicia al inicio de cada mes
Ejemplo w.x.y.z 1.25.3.1, 1.25.3.2, 1.25.4.1
Una vez definido el algoritmo de generación, necesitamos un script que lo ejecute y tenga en cuenta la versión actual del proyecto. En un proyecto C#, la versión suele definirse en el archivo AssemblyInfo.cs; crear un archivo compartido GeneralAssemblyInfo.cs permite unificar la versión en toda la solución cuando hay varios proyectos.
Los atributos que almacenan la versión son AssemblyVersion, AssemblyFileVersion y AssemblyInformationalVersion. Al generar una nueva versión, el script debe actualizar estos atributos en el archivo correspondiente.
El script generate-new-version.ps1 contiene la lógica de ejecución y actualización. Puedes consultarlo y reutilizarlo desde el repositorio público en GitHub a través de este script de versionado con PowerShell. Para simplificar su uso en local, crea un archivo bat que invoque el script con los parámetros necesarios y evita errores por valores olvidados.
Cómo generar un changelog basado en commits
Mensajes de commit claros, relevantes y bien estructurados son esenciales para mantener un historial entendible del proyecto. Un buen mensaje explica el propósito del cambio sin necesidad de abrir el código, facilita localizar cuándo se introdujo un problema y acelera la depuración.
La estructura de changelog que proponemos es sencilla y legible, por ejemplo encabezado con v0.0.0.0 y una lista de entradas con hash corto, autor y resumen del cambio. Esto permite identificar de un vistazo qué ha cambiado entre versiones.
El script de soporte implementa tres funciones clave Get-CommitMessage para recuperar el mensaje, Get-CommitHash para obtener el hash del commit y Add-ChangeLog para registrar la entrada en el archivo de historial.
Parámetros de entrada recomendados nombre de la aplicación, si se debe generar una nueva versión, si se hace pull automático de la rama principal, si se hace commit y push automáticos, nombre de rama origen y destino, y ruta de ejecución de la solución. La implementación completa puede verse en el script generate-change-log.ps1.
Si eres el único desarrollador o el equipo es pequeño, puedes ejecutar el script en local sin problemas. Para ahorrar tiempo, automatiza con un bat y estandariza los parámetros.
Automatización con Azure DevOps
Para llevar esto a un flujo automatizado se definen dos pipelines YAML run_gen_changelog_version.yaml para generar la nueva versión y el changelog y run_solution_build.yaml para compilar la solución. La idea es ejecutarlos como validación previa al merge de una feature hacia la rama estable develop mediante políticas de rama.
Configuración de pipelines añade los YAML al repositorio y crea los pipelines en Azure DevOps. Define variables como commit_user_email y repository_full_path en el pipeline de versión y para la compilación ajusta solutionPath y sdkVersion en variables locales del YAML.
Servicio de compilación de rama otorga permisos de Contribute al Build Service del repositorio para permitir commits y pushes automatizados desde la tubería.
Políticas de rama en develop activa Build Validation para ejecutar ambos pipelines y Status Checks para bloquear el merge hasta que las validaciones pasen. Al crear el pull request, las políticas se disparan, se hace la cola de ejecución y el pipeline de versionado actualiza la versión y el changelog dentro del propio PR.
Resultados esperados el PR muestra los cambios en el archivo de versión y el changelog, las compilaciones superadas y un historial claro de lo que se publica en cada versión.
Cómo te ayuda Q2BSTUDIO
En Q2BSTUDIO somos una empresa de desarrollo de software con foco en aplicaciones a medida, software a medida, automatización y excelencia operativa. Implementamos pipelines y buenas prácticas de versionado en entornos modernos, integrando Azure DevOps, Git, pruebas automatizadas, seguridad y despliegues en la nube. Si buscas acelerar tus entregas y ganar trazabilidad, te ayudamos a diseñar e implantar procesos de integración y entrega continua con estándares de calidad y seguridad corporativa. Descubre cómo optimizamos tus despliegues y gobierno de la nube con nuestros servicios cloud aws y azure y cómo eliminamos tareas repetitivas y riesgos operativos con soluciones de automatización de procesos.
Además, somos especialistas en inteligencia artificial e ia para empresas, agentes IA y soluciones de ciberseguridad integradas con pipelines DevSecOps. Completamos tu ecosistema con servicios inteligencia de negocio y analítica avanzada con power bi para convertir datos en decisiones.
Si quieres llevar tu ciclo de vida de desarrollo al siguiente nivel con trazabilidad, seguridad y velocidad, cuenta con Q2BSTUDIO. Impulsamos tu roadmap con tecnología, metodología y un equipo experto.
Código fuente de la demo y scripts aquí repositorio en GitHub con la solución de versionado y changelog