Wiki / Technical / CI/CD & Releases

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

1

Crear Tag de Version

El desarrollador crea un tag siguiendo SemVer

git tag v1.0.0 && git push origin v1.0.0
2

GitHub Actions Detecta

El workflow release-gdextension.yml se dispara automaticamente al detectar el patron v*.*.*

3

Compilacion Paralela

Se compila para Windows, Linux y macOS simultaneamente con todos los backends habilitados

4

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:

GH GitHub CLI
# 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
WEB GitHub Web UI

1. Ir a ActionsRelease 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:

VK

Vulkan

API grafica multiplataforma. Soporta GPUs AMD, Intel y NVIDIA. Backend GPU recomendado.

Score: 80+
CPU

CPU

Funciona en cualquier sistema. Utiliza instrucciones SIMD (AVX2, AVX512) cuando estan disponibles. Fallback automatico.

Score: 10 - 170
MTL

Metal

Optimizado para Apple Silicon (M1/M2/M3/M4). Nativo en macOS, maximo rendimiento en Mac.

Score: 90

// Deteccion Automatica

Cuando se carga un modelo, el sistema ejecuta el siguiente proceso de seleccion:

ggml_backend_load_all()
Escanea DLLs/SOs de backend en directorio
ggml-vulkan.dll
vkEnumeratePhysicalDevices()
ggml-cpu.dll
Siempre disponible
Mayor Score

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

WIN

Windows x64

OhMyDialogSystem-vX.X.X-windows-x64.zip
Vulkan CPU
TUX

Linux x64

OhMyDialogSystem-vX.X.X-linux-x64.tar.gz
Vulkan CPU
MAC

macOS ARM64

OhMyDialogSystem-vX.X.X-macos-arm64.tar.gz
CPU Metal
MAC

macOS x64

OhMyDialogSystem-vX.X.X-macos-x64.tar.gz
CPU

// Compilacion Local

Para compilar localmente con todos los backends habilitados:

WIN Windows
cd gdextension
build.bat release --all-backends --dynamic
TUX Linux / macOS
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:

WIN
build-windows
Vulkan + CPU
TUX
build-linux
Vulkan + CPU
MAC
build-macos-arm64
Metal
MAC
build-macos-x64
CPU only
↓ dependencia
PKG
create-release
Empaqueta y publica

// Actions Reutilizables

El proyecto incluye GitHub Actions personalizadas en .github/actions/:

VK
setup-vulkan-windows

Vulkan SDK para Windows

VK
setup-vulkan-linux

Vulkan SDK para Linux

Volver a Technical