Gestión de Versiones
Versionado (Versionado Semántico)
El proyecto sigue Versionamiento Semántico (SemVer) con el formato MAJOR.MINOR.PATCH:
- Versión MAJOR (x.0.0): Cuándo realiza cambios de API incompatibles
- Versión MINOR (0.x.0): Cuándo añade funcionalidad de manera compatible con versiones anteriores
- Versión PATCH (0.0.x): Cuándo realiza correcciones de errores compatibles con versiones anteriores
Lista de Verificación Previa al Lanzamiento
Antes de lanzar una nueva versión, asegúrese de haber completado lo siguiente:
- Todos los cambios están confirmados e insertados en la rama
vMAJOR.MINOR.x. - El número de versión se actualiza en
package.json(utilicescripts/update-version.shpara sincronizarlo en todos los archivos). - Todas las pruebas pasan (en modo desarrollo, local, docker y podman).
- Inicie un contenedor Docker con
pnpm docker:upy ejecutescripts/compare-versions.shpara verificar la consistencia de versiones entre el entorno de desarrollo y el contenedor Docker (requiere que el contenedor Docker esté en ejecución). Este script compara versiones de SQLite solo por versión principal (por ejemplo, 3.45.1 frente a 3.51.1 se consideran compatibles), y compara exactamente las versiones de Node, npm y duplistatus. - La documentación está actualizada, actualice las capturas de pantalla (utilice
pnpm take-screenshots) - Las notas de la versión se preparan en
documentation/docs/release-notes/VERSION.md. - Ejecute
scripts/generate-readme-from-intro.shpara actualizarREADME.mdcon la nueva versión y cualquier cambio dedocumentation/docs/intro.md. Este script también genera automáticamenteREADME_dockerhub.mdyRELEASE_NOTES_github_VERSION.md.
Resumen del Proceso de Lanzamiento
El proceso de lanzamiento recomendado utiliza GitHub Pull Requests y Releases (véase a continuación). Esto proporciona una mejor visibilidad, capacidades de revisión y activa automáticamente las compilaciones de imágenes Docker. El método de línea de comandos está disponible como alternativa.
Método 1: Solicitud de extracción de GitHub y lanzamiento (Recomendado)
Este es el método preferido ya que proporciona una mejor trazabilidad y activa automáticamente las compilaciones de Docker.
Paso 1: Crear solicitud de extracción
- Navegue al repositorio duplistatus en GitHub.
- Haga clic en la pestaña "Pull requests".
- Haga clic en "New pull request".
- Establezca la rama base en
mastery la rama de comparación envMAJOR.MINOR.x. - Revise la vista previa de cambios para asegurarse de que todo se vea correcto.
- Haga clic en "Create pull request".
- Añada un título descriptivo (por ejemplo, "Release v1.2.0") y una descripción que resuma los cambios.
- Haga clic en "Create pull request" nuevamente.
Paso 2: Fusionar la Solicitud de Extracción
Después de revisar la solicitud de extracción:
- Si no hay conflictos, haz clic en el botón verde "Merge pull request".
- Elige tu estrategia de fusión (típicamente "Create a merge commit").
- Confirma la fusión.
Paso 3: Crear una versión en GitHub
Una vez que la fusión se complete, crea una versión de GitHub:
- Navegue al repositorio duplistatus en GitHub.
- Vaya a la sección "Releases" (o haga clic en "Releases" en la barra lateral derecha).
- Haga clic en "Draft a new release."
- En el campo "Choose a tag", escriba su nuevo número de versión en el formato
vMAJOR.MINOR.PATCH(por ejemplo,v1.2.0). Esto creará una nueva etiqueta. - Seleccionar
mastercomo la rama objetivo. - Añada un título de versión (por ejemplo, "Release v1.2.0").
- Añada una descripción documentando los cambios en esta versión. Puede:
- Copiar el contenido de
RELEASE_NOTES_github_VERSION.md(generado porscripts/generate-readme-from-intro.sh) - O hacer referencia a las notas de versión de
documentation/docs/release-notes/(tenga en cuenta que los enlaces relativos no funcionarán en las versiones de GitHub)
- Copiar el contenido de
- Haga clic en "Publish release."
Lo que sucede automáticamente:
- Se crea una nueva etiqueta de Git
- Se activa el flujo de trabajo "Build and Publish Docker Image"
- Se construyen imágenes Docker para arquitecturas AMD64 y ARM64
- Las imágenes se envían a:
- Docker Hub:
wsjbr/duplistatus:VERSIONywsjbr/duplistatus:latest(si esta es la versión más reciente) - GitHub Container Registry:
ghcr.io/wsj-br/duplistatus:VERSIONyghcr.io/wsj-br/duplistatus:latest(si esta es la versión más reciente)
- Docker Hub:
Método 2: Línea de Comandos (Alternativa)
Si prefieres usar la línea de comandos, sigue estos pasos:
Paso 1: Actualizar la rama maestra local
Asegúrate de que tu rama master local esté actualizada:
# Checkout the master branch
git checkout master
# Pull the latest changes from the remote repository
git pull origin master
Paso 2: Fusionar rama de desarrollo
Fusionar la rama vMAJOR.MINOR.x en master:
# Merge the vMAJOR.MINOR.x branch into master
git merge vMAJOR.MINOR.x
Si hay conflictos de fusión, resuélvalos manualmente:
- Edite los archivos en conflicto
- Prepare los archivos resueltos:
git add <file> - Complete la fusión:
git commit
Paso 3: Etiquetar la Versión
Crear una etiqueta anotada para la nueva versión:
# Create an annotated tag for the new version
git tag -a vMAJOR.MINOR.PATCH -m "Release vMAJOR.MINOR.PATCH - Brief description"
La marca -a crea una etiqueta anotada (recomendado para versiones), y la marca -m añade un mensaje.
Paso 4: Enviar a GitHub
Envía tanto la rama master actualizada como la nueva etiqueta:
# Push the updated master branch
git push origin master
# Push the new tag
git push origin vMAJOR.MINOR.PATCH
Alternativamente, envía todas las etiquetas a la vez: git push --tags
Paso 5: Crear una versión de GitHub
Después de insertar la etiqueta, cree una versión de GitHub (consulte el Método 1, Paso 3) para activar el flujo de trabajo de compilación de Docker.
Compilación Manual de Imagen Docker
Para activar manualmente el flujo de trabajo de compilación de la imagen Docker sin crear una versión:
- Navegue al repositorio duplistatus en GitHub.
- Haga clic en la pestaña "Acciones".
- Seleccione el flujo de trabajo "Build and Publish Docker Image".
- Haga clic en "Run workflow".
- Seleccione la rama desde la cual compilar (típicamente
master). - Haga clic en "Run workflow" nuevamente.
Nota: Las compilaciones manuales no etiquetarán automáticamente las imágenes como latest a menos que el flujo de trabajo determine que es la versión más reciente.
Publicación de Documentación
La documentación se aloja en GitHub Pages y se implementa de forma independiente de la versión de la aplicación. Siga estos pasos para publicar la documentación actualizada:
Requisitos previos
- Asegúrate de tener un Token de Acceso Personal de GitHub con el alcance
repo. - Configura las credenciales de Git (configuración única):
cd documentation
./setup-git-credentials.sh
Esto te pedirá tu Token de Acceso Personal de GitHub y lo almacenará de forma segura.
Documentación de Implementación
- Navegue al directorio
documentation:
cd documentation
-
Asegúrese de que todos los cambios de documentación se confirmen e inserten en el repositorio.
-
Construir e implementar la documentación:
pnpm run deploy
Este comando hará lo siguiente:
- Compilar el sitio de documentación de Docusaurus
- Enviar el sitio compilado a la rama
gh-pages - Poner la documentación disponible en https://wsj-br.github.io/duplistatus/
Cuándo Desplegar Documentación
Desplegar actualizaciones de documentación:
- Después de fusionar cambios de documentación a
master - Al lanzar una nueva versión (si la documentación fue actualizada)
- Después de mejoras significativas en la documentación
Nota: La implementación de la documentación es independiente de los lanzamientos de aplicaciones. Puede implementar la documentación varias veces entre lanzamientos de aplicaciones.
Preparación de Notas de Lanzamiento para GitHub
El script generate-readme-from-intro.sh genera automáticamente notas de lanzamiento de GitHub cuando se ejecuta. Lee las notas de lanzamiento desde documentation/docs/release-notes/VERSION.md (donde VERSION se extrae de package.json) y crea RELEASE_NOTES_github_VERSION.md en la raíz del proyecto.
Ejemplo:
# This will generate README.md, README_dockerhub.md, and RELEASE_NOTES_github_VERSION.md
./scripts/generate-readme-from-intro.sh
El archivo de notas de lanzamiento generado se puede copiar y pegar directamente en la descripción de lanzamiento de GitHub. Todos los enlaces e imágenes funcionarán correctamente en el contexto de lanzamiento de GitHub.
Nota: El archivo generado es temporal y se puede eliminar después de crear la versión de GitHub. Se recomienda añadir RELEASE_NOTES_github_*.md a .gitignore si no desea confirmar estos archivos.
Actualizar README.md
Si has realizado cambios en documentation/docs/intro.md, regenera el archivo README.md del repositorio:
./scripts/generate-readme-from-intro.sh
Este script:
- Extrae la versión de
package.json - Genera
README.mda partir dedocumentation/docs/intro.md(convierte admoniciones de Docusaurus a alertas de estilo GitHub, convierte enlaces e imágenes) - Crea
README_dockerhub.mdpara Docker Hub (con formato compatible con Docker Hub) - Genera
RELEASE_NOTES_github_VERSION.mda partir dedocumentation/docs/release-notes/VERSION.md(convierte enlaces e imágenes a URLs absolutas) - Actualiza la tabla de contenidos usando
doctoc
Confirma e impulsa el README.md actualizado junto con tu lanzamiento.