CI/CD y Sistema de Releases
OhMyDialogSystem utiliza GitHub Actions para automatizar la compilacion y publicacion de releases. El sistema soporta deteccion automatica de backends en runtime.
// Flujo de Release
Crear Tag de Version
El desarrollador crea un tag siguiendo SemVer
git tag v1.0.0 && git push origin v1.0.0
GitHub Actions Detecta
El workflow release-gdextension.yml se dispara automaticamente al detectar el patron v*.*.*
Compilacion Paralela
Se compila para Windows, Linux y macOS simultaneamente con todos los backends habilitados
GitHub Release
Se crea automaticamente un Release con paquetes optimizados para cada plataforma
// Ejecucion Manual
El workflow puede ejecutarse manualmente para testing sin crear un release oficial:
# Solo compilar (sin release)
gh workflow run "Release GDExtension" \
-f version=v0.0.0-test \
-f create_release=false
# Compilar y crear release de prueba
gh workflow run "Release GDExtension" \
-f version=v1.0.0-rc1 \
-f create_release=true
1. Ir a Actions → Release GDExtension
2. Click en Run workflow
3. Ingresar version (ej: v0.0.0-test)
4. Seleccionar si crear release
5. Click en Run workflow
Nota: Las ejecuciones manuales con create_release=false solo compilan y suben artefactos. Utiles para verificar que el build funciona antes de crear un tag oficial.
// Backends Disponibles
El addon detecta automaticamente el mejor backend disponible en el sistema del usuario:
Vulkan
API grafica multiplataforma. Soporta GPUs AMD, Intel y NVIDIA. Backend GPU recomendado.
CPU
Funciona en cualquier sistema. Utiliza instrucciones SIMD (AVX2, AVX512) cuando estan disponibles. Fallback automatico.
// Deteccion Automatica
Cuando se carga un modelo, el sistema ejecuta el siguiente proceso de seleccion:
Cada backend exporta una funcion ggml_backend_score() que retorna un valor numerico basado en la disponibilidad del hardware. El sistema selecciona automaticamente el backend con mayor score.
// Paquetes por Plataforma
Windows x64
Linux x64
macOS ARM64
macOS x64
// Compilacion Local
Para compilar localmente con todos los backends habilitados:
cd gdextension
build.bat release --all-backends --dynamic
cd gdextension
./build.sh release --all-backends --dynamic
Los flags --all-backends y --dynamic habilitan GGML_BACKEND_DL=ON, compilando cada backend como una biblioteca dinamica separada.
// Estructura del Workflow
El workflow de GitHub Actions ejecuta los siguientes jobs:
// Actions Reutilizables
El proyecto incluye GitHub Actions personalizadas en .github/actions/:
setup-vulkan-windows
Vulkan SDK para Windows
setup-vulkan-linux
Vulkan SDK para Linux