From 408a9b44357291836e40f8e264823e5c08644976 Mon Sep 17 00:00:00 2001 From: Milton Gonzalez Date: Tue, 7 Apr 2026 09:50:07 -0500 Subject: [PATCH] Add unified versioning and changelog workflow --- CHANGELOG.md | 21 +++++++++++++++++++++ DEPLOY_ANDROID.md | 25 +++++++++++++++++-------- DEPLOY_WEB.md | 31 ++++++++++++++++++++----------- PRODUCCION.md | 38 ++++++++++++++------------------------ VERSION | 1 + android/app/build.gradle | 4 ++-- backend/package.json | 2 +- frontend/package.json | 2 +- scripts/set-version.sh | 27 +++++++++++++++++++++++++++ 9 files changed, 104 insertions(+), 47 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 VERSION create mode 100755 scripts/set-version.sh diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..11f09d2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,21 @@ +# Changelog + +## Versión actual + +- Versión base: `1.0.1` + +## Historial + +### 1.0.1 - 2026-04-07 + +- Se unifica la versión inicial de `frontend`, `backend` y `android`. +- Se establece `1.0.1` como versión base de arranque del sistema. +- Se agrega el archivo `VERSION` como fuente única de versión. +- Se agrega el script `scripts/set-version.sh` para actualizar versiones de forma sincronizada. + +## Cómo registrar una nueva versión + +1. Ejecuta `./scripts/set-version.sh X.Y.Z` +2. Actualiza este archivo con la nueva versión y sus cambios principales. +3. Haz las pruebas normales del sistema. +4. Guarda cambios en git y despliega. diff --git a/DEPLOY_ANDROID.md b/DEPLOY_ANDROID.md index 440ba55..9fcd7c8 100644 --- a/DEPLOY_ANDROID.md +++ b/DEPLOY_ANDROID.md @@ -1,26 +1,35 @@ # Deploy Android +## Versión actual + +- Base actual: `1.0.1` +- Fuente de verdad: [VERSION](/home/mgonzalez/desarrollo/react/linkedsign/VERSION) +- Historial de cambios: [CHANGELOG.md](/home/mgonzalez/desarrollo/react/linkedsign/CHANGELOG.md) + ## Pasos 1. Haz los cambios en `dev`. -2. Prueba la app: +2. Si corresponde, sube versión: + - `./scripts/set-version.sh X.Y.Z` + - actualiza `CHANGELOG.md` +3. Prueba la app: - `source /etc/profile.d/android-sdk.sh` - `cd android` - `GRADLE_USER_HOME=/home/mgonzalez/desarrollo/react/linkedsign/android/.gradle-home ./gradlew assembleDebug` -3. Si todo está bien, genera release: +4. Si todo está bien, genera release: - `GRADLE_USER_HOME=/home/mgonzalez/desarrollo/react/linkedsign/android/.gradle-home ./gradlew assembleRelease` -4. Copia el APK release: +5. Copia el APK release: - `cp android/app/build/outputs/apk/release/app-release.apk android/apk/LinkedSign-release.apk` -5. Guarda cambios en git: +6. Guarda cambios en git: - `git add .` - `git commit -m "mensaje"` -6. Sube a Gitea: +7. Sube a Gitea: - `git push origin main` -7. Sube el APK a producción: +8. Sube el APK a producción: - `scp -P 2203 android/apk/LinkedSign-release.apk deploy@192.168.222.3:/opt/apps/linkedsign/apk/` -8. Limpia archivos `.md` en producción: +9. Limpia archivos `.md` en producción: - `find /opt/apps/linkedsign -type f -iname '*.md' -delete` -9. Verifica descarga pública: +10. Verifica descarga pública: - `https://sign.linkedcorp.net/api/downloads/android-apk` ## Notas diff --git a/DEPLOY_WEB.md b/DEPLOY_WEB.md index 197e52a..d7f0dc1 100644 --- a/DEPLOY_WEB.md +++ b/DEPLOY_WEB.md @@ -1,41 +1,50 @@ # Deploy Web +## Versión actual + +- Base actual: `1.0.1` +- Fuente de verdad: [VERSION](/home/mgonzalez/desarrollo/react/linkedsign/VERSION) +- Historial de cambios: [CHANGELOG.md](/home/mgonzalez/desarrollo/react/linkedsign/CHANGELOG.md) + ## Pasos 1. Haz los cambios en `dev`. -2. Prueba local: +2. Si corresponde, sube versión: + - `./scripts/set-version.sh X.Y.Z` + - actualiza `CHANGELOG.md` +3. Prueba local: - `cd frontend && npm run build` - `cd ../backend && node -e "require('./src/app')"` -3. Guarda cambios en git: +4. Guarda cambios en git: - `git add .` - `git commit -m "mensaje"` -4. Sube a Gitea: +5. Sube a Gitea: - `git push origin main` -5. En el servidor app entra por SSH: +6. En el servidor app entra por SSH: - `ssh deploy@192.168.222.3 -p 2203` -6. Actualiza código: +7. Actualiza código: - `cd /opt/apps/linkedsign/source` - `git fetch origin main` - `git reset --hard origin/main` -7. Recompila frontend: +8. Recompila frontend: - `cd /opt/apps/linkedsign/source/frontend` - `npm ci` - `npm run build` -8. Publica frontend: +9. Publica frontend: - `rm -rf /opt/apps/linkedsign/frontend/*` - `cp -r dist /opt/apps/linkedsign/frontend/` - `cp server.js /opt/apps/linkedsign/frontend/` -9. Publica backend: +10. Publica backend: - `rm -rf /opt/apps/linkedsign/backend/*` - `cp -r /opt/apps/linkedsign/source/backend/* /opt/apps/linkedsign/backend/` - `cd /opt/apps/linkedsign/backend` - `npm ci --omit=dev` -10. Reinicia servicios: +11. Reinicia servicios: - `sudo systemctl restart linkedsign-frontend` - `sudo systemctl restart linkedsign-backend` -11. Limpia archivos `.md` en producción: +12. Limpia archivos `.md` en producción: - `find /opt/apps/linkedsign -type f -iname '*.md' -delete` -12. Verifica: +13. Verifica: - `curl -I http://127.0.0.1:3000` - `curl http://127.0.0.1:4000/health` diff --git a/PRODUCCION.md b/PRODUCCION.md index c089a0c..3c2e67b 100644 --- a/PRODUCCION.md +++ b/PRODUCCION.md @@ -1,5 +1,11 @@ # Producción LinkedSign +## Versión actual + +- Base actual: `1.0.1` +- Fuente de verdad: [VERSION](/home/mgonzalez/desarrollo/react/linkedsign/VERSION) +- Historial de cambios: [CHANGELOG.md](/home/mgonzalez/desarrollo/react/linkedsign/CHANGELOG.md) + ## Servidor de aplicación - Host: `192.168.222.3` @@ -55,25 +61,11 @@ No hace falta rewrite. El backend ya acepta `/api`. - Base de datos: `linkedsign` - Usuario: `linkedsign_user` -## Bloqueo pendiente +## Estado base confirmado -MariaDB rechazó el acceso desde el servidor web: - -- Error: `Access denied for user 'linkedsign_user'@'192.168.222.3'` - -En el servidor MariaDB debes ejecutar: - -```sql -GRANT ALL PRIVILEGES ON linkedsign.* TO 'linkedsign_user'@'192.168.222.3' IDENTIFIED BY 'INa*hkFanYa_zICF'; -FLUSH PRIVILEGES; -``` - -Si quieres permitir desde más de un host del mismo segmento: - -```sql -GRANT ALL PRIVILEGES ON linkedsign.* TO 'linkedsign_user'@'192.168.222.%' IDENTIFIED BY 'INa*hkFanYa_zICF'; -FLUSH PRIVILEGES; -``` +- MariaDB en `192.168.222.32` ya permite acceso desde `192.168.222.3` +- Tablas de producción ya fueron creadas y validadas +- El dominio público operativo es `https://sign.linkedcorp.net` ## Comandos útiles @@ -84,13 +76,11 @@ sudo journalctl -u linkedsign-frontend -n 100 --no-pager sudo journalctl -u linkedsign-backend -n 100 --no-pager ``` -## Pendiente después del GRANT +## Notas de versión -Cuando MariaDB permita acceso desde `192.168.222.3`, falta: - -1. Crear/validar tablas en producción. -2. Probar login real. -3. Confirmar operación completa del sistema. +1. Toda nueva versión debe reflejarse en `VERSION`. +2. Toda nueva versión debe registrarse en `CHANGELOG.md`. +3. Producción no debe conservar archivos `.md` después del despliegue. ## Seguridad diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..7dea76e --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.0.1 diff --git a/android/app/build.gradle b/android/app/build.gradle index 4171274..41d87c8 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -18,8 +18,8 @@ android { applicationId "net.linkedcorp.linkedsign" minSdk 26 targetSdk 35 - versionCode 1 - versionName "0.1.0" + versionCode 10001 + versionName "1.0.1" buildConfigField "String", "API_BASE_URL", "\"${apiBaseUrl}\"" } diff --git a/backend/package.json b/backend/package.json index 707c4ca..9a0eecd 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "linkedsign-backend", - "version": "0.1.0", + "version": "1.0.1", "private": true, "description": "Initial backend for LinkedSign", "main": "src/server.js", diff --git a/frontend/package.json b/frontend/package.json index 6f3c402..ac6b02f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "frontend", "private": true, - "version": "0.0.0", + "version": "1.0.1", "type": "module", "scripts": { "dev": "vite", diff --git a/scripts/set-version.sh b/scripts/set-version.sh new file mode 100755 index 0000000..181c8d1 --- /dev/null +++ b/scripts/set-version.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ $# -ne 1 ]]; then + echo "Usage: $0 " + exit 1 +fi + +VERSION="$1" + +if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Version must use semver format, for example: 1.0.1" + exit 1 +fi + +IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION" +VERSION_CODE=$((MAJOR * 10000 + MINOR * 100 + PATCH)) + +printf '%s\n' "$VERSION" > VERSION + +sed -i "s/\"version\": \"[^\"]*\"/\"version\": \"$VERSION\"/" frontend/package.json +sed -i "s/\"version\": \"[^\"]*\"/\"version\": \"$VERSION\"/" backend/package.json +sed -i "s/versionCode [0-9]\\+/versionCode $VERSION_CODE/" android/app/build.gradle +sed -i "s/versionName \"[^\"]*\"/versionName \"$VERSION\"/" android/app/build.gradle + +echo "Version updated to $VERSION" +echo "Android versionCode: $VERSION_CODE"