Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
ada:howto:sicoferp:factory:new-migracion-sicoferp:front:versionado [2024/06/27 12:29] 192.168.177.98 |
ada:howto:sicoferp:factory:new-migracion-sicoferp:front:versionado [2025/01/29 20:56] (actual) 192.168.175.129 |
||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== Versionado ====== | ====== Versionado ====== | ||
| + | ===== 1. Preparación ===== | ||
| - | **1) Preparación** | + | Crear directorio **hooks** en la raíz del proyecto y dentro crear un archivo llamado **pre-push** con el siguiente contenido: |
| - | Es necesario que el hook loca tengan permiso en la raíz del proyecto | + | <code> |
| - | * chmod +x /hooks/pre-push | + | |
| + | #!/bin/sh | ||
| + | |||
| + | # Leer datos de entrada estándar proporcionados por Git | ||
| + | while read local_ref local_sha remote_ref remote_sha | ||
| + | do | ||
| + | # Verificar si se está realizando un push de tags | ||
| + | if [[ "$remote_ref" == refs/tags/* ]]; then | ||
| + | echo "Ejecución de 'git push --tags' detectada. No se ejecutará el script." | ||
| + | exit 0 | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | echo "Ejecutando npm run release antes de realizar el commit..." | ||
| + | |||
| + | # Ejecutar npm run release con --no-verify para evitar bucles | ||
| + | npm run release -- --no-verify | ||
| + | |||
| + | # Capturar el código de salida de npm run release | ||
| + | npm_run_release_status=$? | ||
| + | |||
| + | # Verificar el código de salida de npm run release | ||
| + | if [ $npm_run_release_status -ne 0 ]; then | ||
| + | echo "Error: Fallo al ejecutar npm run release. Abortando script." | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | # Obtener la nueva versión del package.json después de ejecutar npm run release | ||
| + | new_version=$(grep '"version"' package.json | sed -E 's/.*"([0-9]+\.[0-9]+\.[0-9]+)".*/\1/') | ||
| + | echo "Nueva versión extraída de package.json: v$new_version" | ||
| + | |||
| + | # Crear un tag con la nueva versión | ||
| + | git tag -a "v$new_version" -m "Release version $new_version" | ||
| + | echo "Se agrega tag al despliegue v$new_version. Para enviar tags ejecute: 'git push --tags'" | ||
| + | |||
| + | # Añadir los archivos modificados por npm run release al staging area | ||
| + | git add package.json package-lock.json CHANGELOG.md | ||
| + | |||
| + | # Continuar con el commit | ||
| + | git commit -m "fix: Descripción de los cambios realizados" | ||
| + | echo "Commit: Nueva versión package.json y cambios en CHANGELOG.md" | ||
| + | |||
| + | # Verificar si estamos ejecutando el script desde un push convencional | ||
| + | # Si es un push convencional, no ejecutar git push --tags para evitar el bucle | ||
| + | if [[ "$1" != "--tags" ]]; then | ||
| + | git push --tags -f | ||
| + | fi | ||
| + | |||
| + | exit 0 | ||
| + | |||
| + | </code> | ||
| + | |||
| + | Es necesario que el hook local tengan permiso en la raíz del proyecto | ||
| + | |||
| + | <code> | ||
| + | chmod +x hooks/pre-push | ||
| + | </code> | ||
| Es necesario que git apunte al directorio hocks que está en la raíz del proyecto (Por defecto lo hace .git/hocks) | Es necesario que git apunte al directorio hocks que está en la raíz del proyecto (Por defecto lo hace .git/hocks) | ||
| - | * git config core.hooksPath hooks | ||
| + | <code> | ||
| + | git config core.hooksPath hooks | ||
| + | </code> | ||
| - | **2) Paso a paso** | + | ===== 2. Agregar libreria ===== |
| + | |||
| + | <code> | ||
| + | npm install standard-version | ||
| + | </code> | ||
| + | |||
| + | |||
| + | ===== 3. Archivo Changelog ===== | ||
| + | |||
| + | En la raíz crear un archivo vacío llamado CHANGELOG | ||
| + | |||
| + | <code> | ||
| + | CHANGELOG.md | ||
| + | </code> | ||
| + | |||
| + | ===== 3. Ejecutar versionado ===== | ||
| Una vez el Front esté preparado para Versionado, debe agregar todos los cambios por enviar y se debe ejecutar los siguientes comandos; | Una vez el Front esté preparado para Versionado, debe agregar todos los cambios por enviar y se debe ejecutar los siguientes comandos; | ||
| + | <code> | ||
| * git add . | * git add . | ||
| * git commit -m 'fix: cambios realizados' | * git commit -m 'fix: cambios realizados' | ||
| * git push | * git push | ||
| + | </code> | ||
| - | Esto genera una nueva versión en el package.json con tag para Git, Docker. | ||
| + | **Nota:** Esto genera una nueva versión en el package.json con tag para Git, Docker. | ||
| - | **Importante** | + | **IMPORTANTE:** Si se requiere hacer un push tradicional sin que le afecte el hook y por ende no genere versionado se debe utilizar la siguiente bandera **--no-verify**: |
| - | Para los siguientes casos se debe utilizar **git push --no-verify** | + | <code> |
| + | git push --no-verify | ||
| + | </code> | ||
| * Si están trabajando en su hotfix local y necesita subir un commit sin generar el versionado final. | * Si están trabajando en su hotfix local y necesita subir un commit sin generar el versionado final. | ||
| - | |||
| - | * Si se requiere hacer un push tradicional sin que le afecte el hook y por ende no genere versionado se debe utilizar la siguiente bandera git push --no-verify | ||
| - | |||
| * También aplica para posibles problemas con la receta hook . | * También aplica para posibles problemas con la receta hook . | ||
| - | |||
| * Si no ha preparado el proyecto local para el hook como se indicó anteriormente. | * Si no ha preparado el proyecto local para el hook como se indicó anteriormente. | ||
| + | |||
| + | [[ada:howto:sicoferp:factory:new-migracion-sicoferp:front|←Regresar]] | ||
| + | |||