Sistema de Versionado y Actualizaciones
Sistema de Gestión de Reparaciones
Este documento explica cómo funciona el sistema de versionado automático y actualizaciones del plugin.
Índice
- Versionado Semántico
- Actualizar Versión
- Sistema de Actualizaciones
- Publicar Nueva Versión
- Configurar GitHub
- Troubleshooting
Versionado Semántico
El plugin usa Versionado Semántico (SemVer): MAJOR.MINOR.PATCH
Formato: X.Y.Z
- X (MAJOR): Cambios incompatibles con versiones anteriores
- Y (MINOR): Nueva funcionalidad compatible con versiones anteriores
- Z (PATCH): Correcciones de bugs compatibles
Ejemplos
1.0.0 → 1.0.1 (PATCH) - Corregido error de PHP 8.1
1.0.1 → 1.1.0 (MINOR) - Añadido sistema de backup
1.1.0 → 2.0.0 (MAJOR) - Rediseño completo de la BD (breaking change)
Actualizar Versión
Usando el Script Automático
El plugin incluye un script Python que actualiza automáticamente todos los archivos:
# Incrementar PATCH (1.0.0 → 1.0.1)
python3 actualizar-version.py patch
# Incrementar MINOR (1.0.0 → 1.1.0)
python3 actualizar-version.py minor
# Incrementar MAJOR (1.0.0 → 2.0.0)
python3 actualizar-version.py major
# Establecer versión específica
python3 actualizar-version.py 1.5.2
¿Qué Actualiza el Script?
El script modifica automáticamente:
- ✅
sistema-reparaciones.php- Version header ydefine('SR_VERSION') - ✅
README.md- Versión en el título - ✅
CHANGELOG.md- Crea nueva entrada con fecha - ✅
version.txt- Archivo de referencia
Flujo de Trabajo Recomendado
# 1. Hacer cambios en el código
vim includes/admin/pages/dashboard.php
# 2. Actualizar versión según el tipo de cambio
python3 actualizar-version.py patch
# 3. Editar CHANGELOG.md y añadir los cambios específicos
vim CHANGELOG.md
# 4. Generar nuevo ZIP
python3 crear-zip-instalacion.py
# 5. Commit y tag en Git
git add .
git commit -m "Release v1.0.2: Corregido bug en dashboard"
git tag v1.0.2
git push origin main --tags
# 6. Crear GitHub Release con el ZIP
# (ver sección "Publicar Nueva Versión")
Sistema de Actualizaciones
Cómo Funciona
El plugin incluye includes/class-updater.php que:
- Verifica actualizaciones cada 12 horas desde GitHub Releases
- Muestra notificación en WordPress Admin cuando hay nueva versión
- Permite actualizar con un clic desde Plugins → Actualizar
- No requiere WordPress.org (usa GitHub directamente)
Arquitectura
WordPress Admin
↓
class-updater.php
↓
GitHub API (https://api.github.com/repos/usuario/repo/releases/latest)
↓
Descarga ZIP → Instala → Activa
Verificación Manual
Para forzar una verificación de actualizaciones:
WordPress Admin → Plugins → Sistema de Reparaciones
→ "Ver detalles de la versión"
O limpiar caché:
/wp-admin/plugins.php?sr_clear_update_cache=1
Publicar Nueva Versión
Paso a Paso
1. Preparar el Código
# Actualizar versión
python3 actualizar-version.py patch
# Editar CHANGELOG con los cambios
vim CHANGELOG.md
2. Generar ZIP
python3 crear-zip-instalacion.py
# Se crea: sistema-reparaciones-v1.0.X.zip
3. Commit y Tag en Git
git add .
git commit -m "Release v1.0.X: Descripción de cambios"
git tag v1.0.X
git push origin main
git push origin --tags
4. Crear GitHub Release
Opción A: Por Interfaz Web
- Ve a tu repositorio en GitHub
- Clic en "Releases" → "Create a new release"
- Selecciona el tag:
v1.0.X - Título:
v1.0.X - Descripción corta - Descripción: Copia el contenido de CHANGELOG para esta versión
- Arrastra el ZIP:
sistema-reparaciones-v1.0.X.zip - Clic en "Publish release"
Opción B: Por CLI (GitHub CLI)
# Instalar gh CLI: https://cli.github.com/
gh release create v1.0.X \
sistema-reparaciones-v1.0.X.zip \
--title "v1.0.X - Descripción" \
--notes-file release-notes.md
5. Verificar
- Los usuarios verán la actualización en WordPress Admin
- Pueden actualizar con un clic
Configurar GitHub
1. Crear Repositorio
# Inicializar Git (si no lo has hecho)
cd "SISTEMA DE REPARACIONES"
git init
git add .
git commit -m "Initial commit - v1.0.0"
# Crear repositorio en GitHub
# Ve a github.com → New Repository → "sistema-reparaciones"
# Conectar repositorio local
git remote add origin https://github.com/TU-USUARIO/sistema-reparaciones.git
git branch -M main
git push -u origin main
2. Configurar URL en el Plugin
Edita includes/class-updater.php, línea ~40:
// ANTES (placeholder)
$this->update_url = 'https://api.github.com/repos/TU-USUARIO/sistema-reparaciones/releases/latest';
// DESPUÉS (tu repo real)
$this->update_url = 'https://api.github.com/repos/jose/sistema-reparaciones/releases/latest';
3. Hacer el Repositorio Público
- Ve a Settings → Danger Zone → Change visibility → Public
- O déjalo privado y usa un Personal Access Token (ver abajo)
4. (Opcional) Repositorio Privado
Si tu repo es privado, necesitas un token:
// En includes/class-updater.php, método get_remote_version()
$response = wp_remote_get(
$this->update_url,
array(
'timeout' => 10,
'headers' => array(
'Accept' => 'application/json',
'Authorization' => 'token TU_GITHUB_TOKEN', // Añadir esta línea
),
)
);
Crear token: GitHub → Settings → Developer settings → Personal access tokens → Generate new token (scopes: repo)
Casos de Uso
Caso 1: Corregir un Bug
# 1. Corregir el bug
vim includes/admin/pages/dashboard.php
# 2. Actualizar a patch (1.0.1 → 1.0.2)
python3 actualizar-version.py patch
# 3. Actualizar CHANGELOG
vim CHANGELOG.md
# Añadir: "### Corregido: Error en cálculo de ingresos"
# 4. Generar ZIP y publicar
python3 crear-zip-instalacion.py
git add .
git commit -m "Fix: Corregido cálculo de ingresos en dashboard"
git tag v1.0.2
git push origin main --tags
# 5. Crear release en GitHub con el ZIP
Caso 2: Añadir Nueva Funcionalidad
# 1. Desarrollar la funcionalidad
vim includes/admin/pages/statistics.php
# 2. Actualizar a minor (1.0.2 → 1.1.0)
python3 actualizar-version.py minor
# 3. Actualizar CHANGELOG
vim CHANGELOG.md
# Añadir: "### Añadido: Página de estadísticas avanzadas"
# 4. Publicar
python3 crear-zip-instalacion.py
git add .
git commit -m "Feature: Añadida página de estadísticas avanzadas"
git tag v1.1.0
git push origin main --tags
Caso 3: Breaking Change
# 1. Hacer cambios incompatibles
vim includes/database/class-database.php
# 2. Actualizar a major (1.1.0 → 2.0.0)
python3 actualizar-version.py major
# 3. Documentar en CHANGELOG
vim CHANGELOG.md
# Añadir: "### BREAKING CHANGE: Nueva estructura de BD"
# 4. Publicar con advertencias
python3 crear-zip-instalacion.py
# En GitHub Release, marcar como "Pre-release" y advertir
Troubleshooting
Problema: WordPress no detecta actualizaciones
Causa: Caché de WordPress o GitHub API
Solución:
# Limpiar caché manualmente
/wp-admin/plugins.php?sr_clear_update_cache=1
# O desde código
delete_transient('sr_update_cache');
Problema: Error 404 al descargar actualización
Causa: URL incorrecta o repositorio privado sin token
Solución:
- Verifica que el release existe en GitHub
- Verifica que el ZIP está adjunto al release
- Si es repo privado, añade token de GitHub
Problema: Actualización descarga pero no instala
Causa: Estructura del ZIP incorrecta
Solución: Verifica que el ZIP tiene esta estructura:
sistema-reparaciones/
├── sistema-reparaciones.php
├── includes/
├── assets/
└── ...
NO debe ser:
sistema-reparaciones-main/ ← Incorrecto (GitHub por defecto)
└── sistema-reparaciones/
Usa crear-zip-instalacion.py para asegurar estructura correcta.
Problema: Script actualizar-version.py no encuentra archivos
Causa: Ejecutado desde directorio incorrecto
Solución:
# Ejecutar siempre desde la raíz del plugin
cd "SISTEMA DE REPARACIONES"
python3 actualizar-version.py patch
Archivos del Sistema
SISTEMA DE REPARACIONES/
├── actualizar-version.py # Script de versionado
├── crear-zip-instalacion.py # Script para generar ZIP
├── version.txt # Versión actual (auto-generado)
├── sistema-reparaciones.php # Versión en header
├── CHANGELOG.md # Historial de cambios
├── includes/
│ └── class-updater.php # Sistema de actualizaciones
└── docs/desarrollo/
└── VERSIONADO_Y_ACTUALIZACIONES.md # Este archivo
Checklist de Release
Antes de publicar una nueva versión:
- Código testeado y funcionando
- Versión actualizada con
actualizar-version.py - CHANGELOG.md actualizado con cambios específicos
- ZIP generado con
crear-zip-instalacion.py - Commit y tag creados en Git
- GitHub Release creado con:
- Tag correcto (v1.0.X)
- Título descriptivo
- Notas de la versión
- ZIP adjunto
- URL de actualizaciones configurada en
class-updater.php - Actualización verificada en WordPress de prueba
Mejores Prácticas
1. Versionado
- PATCH: Solo bugs, sin nuevas features
- MINOR: Nuevas features compatibles
- MAJOR: Cambios incompatibles (breaking changes)
2. CHANGELOG
- Ser específico: "Corregido error en dashboard" ✅
- Evitar vaguedades: "Mejoras varias" ❌
- Usar categorías: Añadido, Cambiado, Corregido, Eliminado
3. Testing
- Testear en WordPress limpio antes de release
- Verificar actualización desde versión anterior
- Testear en PHP 7.4, 8.0, 8.1, 8.2
4. Comunicación
- Releases grandes: avisar con anticipación
- Breaking changes: documentar path de migración
- Deprecations: advertir al menos una versión antes
Soporte
¿Dudas sobre el sistema de versionado?
- Lee este documento completo
- Revisa ejemplos en la sección "Casos de Uso"
- Verifica archivos existentes:
CHANGELOG.md,version.txt
Sistema: Versionado Semántico + GitHub Releases Actualizado: 2026-02-10 Versión del Plugin: 1.0.1+