Chuck's Academy

Git y Github

Gestión de versiones y lanzamiento de releases

En este módulo, aprenderemos sobre la gestión de versiones y el lanzamiento de releases en proyectos gestionados con Git y GitHub. La gestión de versiones ayuda a etiquetar y rastrear versiones específicas de tu proyecto, mientras que los releases proporcionan una manera formal de empaquetar y distribuir tu software.

Gestión de versiones

¿Qué es una versión?

Una versión es una instantánea de tu proyecto en un punto específico del tiempo. Las versiones se suelen etiquetar con números de versión semántica, como v1.0.0, v1.1.0, v2.0.0, etc. La numeración semántica de versiones sigue la norma: MAJOR.MINOR.PATCH

Etiquetas (Tags)

Las etiquetas en Git son referencias que señalan puntos específicos en el historial, normalmente utilizadas para marcar versiones de releases.

Crear una etiqueta

Puedes crear una etiqueta ligera (lightweight) o una etiqueta anotada (annotated).

  • Etiqueta ligera:

    bash
  • Etiqueta anotada:

    bash
Ver etiquetas existentes

Para listar todas las etiquetas en tu repositorio:

bash
Ver información sobre una etiqueta

Para ver los detalles de una etiqueta anotada:

bash
Compartir etiquetas con el repositorio remoto

Para subir etiquetas al repositorio remoto:

bash

Para subir todas las etiquetas:

bash

Lanzamiento de releases en GitHub

¿Qué es un release?

Un release en GitHub es una versión empaquetada de tu código que puedes poner a disposición de los usuarios. Incluye el código fuente, notas del release y, opcionalmente, binarios precompilados.

Crear un release

  1. Ve al repositorio en GitHub.
  2. Navega a la pestaña "Releases".
  3. Haz clic en el botón "Draft a new release".

Llenar la información del release

  1. Tag version: Selecciona una etiqueta existente o crea una nueva.
  2. Release title: Proporciona un título descriptivo.
  3. Descripción: Detalla los cambios en esta versión (puede incluir un changelog).
  4. Attachments: Opcionalmente, sube binarios precompilados o archivos relevantes.
  5. Haz clic en "Publish release" para publicar la release.

Changelog

¿Qué es un changelog?

Un changelog es un registro de todos los cambios notables en cada versión de tu proyecto. Es una forma valiosa de comunicar mejoras, correcciones y nuevas características a los usuarios y contribuidores.

Mantener un changelog

Puedes mantener un changelog manualmente en un archivo CHANGELOG.md y actualizarlo con cada nueva versión:

markdown

Ejemplo práctico

Crear una etiqueta para una nueva versión

  1. Crear una etiqueta anotada:

    bash
  2. Subir la etiqueta al repositorio remoto:

    bash

Crear un release en GitHub

  1. Ve a la pestaña "Releases" en el repositorio de GitHub.
  2. Haz clic en "Draft a new release".
  3. Selecciona la etiqueta v1.0.0 creada previamente.
  4. Llena el título y la descripción del release.
  5. (Opcional) Añade archivos adjuntos.
  6. Haz clic en "Publish release".

Automatización de releases

Uso de GitHub Actions para automatizar releases

Puedes configurar GitHub Actions para automatizar la creación de releases. Aquí hay un ejemplo de cómo hacerlo con un archivo YAML.

  1. Crea .github/workflows/release.yml:
    yaml

Buenas prácticas

  • Versión semántica: Sigue la versión semántica para etiquetar tus versiones.
  • Actualizar changelog: Mantén y actualiza un changelog con cada nuevo release.
  • Automatización: Utiliza GitHub Actions o herramientas similares para automatizar el proceso de creación y despliegue de releases.
  • Notas de la release: Proporciona notas detalladas para cada release que resuman claramente los cambios realizados.

Herramientas adicionales

semantic-release

semantic-release es una herramienta para automatizar la gestión de versiones siguiendo las convenciones de versionado semántico. Publica, crea y actualiza automáticamente las notas de release.

Para instalar y configurar semantic-release:

  1. Instala semantic-release:

    bash
  2. Añade un archivo de configuración .releaserc en la raíz del proyecto:

    json

Con estas técnicas, puedes gestionar versiones y lanzar releases de manera efectiva utilizando Git y GitHub. En el próximo módulo, concluiremos el curso con las mejores prácticas en Git y GitHub.


Pregúntame lo que sea