Files
egutierrez a03675113a chore: auto-commit (286 archivos)
- .claude/agents/fn-orquestador/SKILL.md
- .claude/commands/fn_claude.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- .claude/rules/ids_naming.md
- CHANGELOG.md
- apps/dag_engine/README.md
- apps/dag_engine/api.go
- apps/dag_engine/dags_migrated/example.yaml
- apps/dag_engine/dags_migrated/example_lineage_tracking.yaml
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 16:33:22 +02:00

4.7 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path, params, output
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path params output
redeploy_all_cpp_apps pipeline bash pipelines 1.0.0 impure redeploy_all_cpp_apps(filter?: string) -> void Cross-compila TODOS los apps C++ del registry en un solo cmake pass y despliega cada .exe al Desktop de Windows. Mas rapido que N builds individuales. Acepta filtro de nombre para despliegue parcial.
cpp
windows
deploy
redeploy
bulk
cpp-windows
build_cpp_windows_bash_infra
deploy_cpp_exe_to_windows_bash_infra
false error_go_core
false
bash/functions/pipelines/redeploy_all_cpp_apps.sh
name desc
filter Opcional. Substring para limitar el deploy a apps cuyo nombre lo contenga (ej: 'graph' solo despliega apps con 'graph' en el nombre). Sin valor = todas las apps.
Imprime tabla resumen con OK/SKIPPED/FAILED y nombres de cada app. Exit 1 si al menos una app fallo el deploy.

Ejemplo

# Recompilar y redesplegar TODAS las apps C++ tras un cambio en cpp/framework/
./fn run redeploy_all_cpp_apps

# Solo apps cuyo nombre contenga "graph"
./fn run redeploy_all_cpp_apps graph

Cuando usarla

Tras un cambio en cpp/framework/app_base.cpp, cpp/functions/core/* o cualquier funcion linkada a multiples apps. Ahorra correr redeploy_cpp_app_windows <name> <dir> N veces — un solo cmake pass compila todo el arbol en paralelo.

Comportamiento

  1. Build: invoca build_cpp_windows sin argumento (compila todo el arbol con -j$(nproc)). Un solo cmake pass — mucho mas rapido que N builds individuales.
  2. Descubrimiento: itera apps/*/CMakeLists.txt y projects/*/apps/*/CMakeLists.txt. No usa cpp/apps/ (deprecado tras issue 0096).
  3. Filtro (opcional): si se paso un argumento, solo procesa apps cuyo basename contiene el substring.
  4. Por cada app:
    • Localiza .exe en cpp/build/windows/apps/<name>/<name>.exe; si no existe, busca bajo cpp/build/windows/ como fallback.
    • Si no hay .exe: log SKIP, continua (no aborta — apps headless o sub-repos no clonados no tienen build target).
    • taskkill.exe /IM <name>.exe /F silencioso (no aborta si falla).
    • deploy_cpp_exe_to_windows <name> <app_dir> (copia exe + DLLs + assets + enrichers + runtime, preserva local_files/).
    • Error por app: log FAILED, continua con la siguiente.
  5. Resumen final: tabla OK / SKIPPED / FAILED con nombres. Exit 1 si hay al menos un FAILED.

Variables de entorno

Variable Default Descripcion
FN_REGISTRY_ROOT auto-detect Raiz del registry (busca hacia arriba desde el script)
BUILD_WIN $root/cpp/build/windows Directorio de build Windows
WIN_DESKTOP_APPS /mnt/c/Users/lucas/Desktop/apps Destino de deploy en Windows

Gotchas

  • Solo Windows (cross-compile mingw-w64 + Desktop deploy via WSL2). En Linux puro no aplica.
  • taskkill.exe requiere WSL2 con interop habilitado. No funciona en WSL1 ni Linux nativo.
  • Algunas apps pueden no estar en el grafo cmake actual (sub-repo no clonado, add_subdirectory protegido por if(EXISTS ...)). El pipeline las SKIPea sin abortar — comportamiento esperado.
  • Build paralelo puede consumir varios GB de RAM. Si hay OOM, reducir paralelismo exportando BUILD_JOBS=4 antes de invocar (actualmente la funcion build_cpp_windows usa $(nproc); si necesitas override edita BUILD_JOBS como variable de entorno custom o fork la funcion).
  • El loop de deploy atrapa errores por app (|| { failed+=...; continue; }) para no abortar en el primer fallo — todas las apps se intentan aunque alguna falle.

Capability growth log

  • v1.0.0 (2026-05-16) — creacion. Tras issue 0096 (apps movidas a apps/<X>/) el patron "recompilar+desplegar todas tras un cambio en cpp/framework/" se repitio varias veces sin un wrapper. Pipeline tolerante a fallos: build best-effort (test_* roto en mingw no aborta), deploy por app captura fallos individuales, summary OK/SKIPPED/FAILED al final. Primera corrida real (16 May 2026): 12 OK / 1 SKIP (data_factory sin .exe target) / 0 FAILED.

Notas operativas (2026-05-16)

  • build_cpp_windows sin arg compila el arbol entero. Si hay targets rotos (ej. test_llm_anthropic, test_graph_icons usan setenv() no disponible en mingw-w64), el pipeline logea [1/2] Build returned exit=N — continuing with deploy of available exes y sigue con la fase de deploy. Cada app sin .exe queda SKIPPED.
  • Tras una corrida exitosa, los .exe quedan en /mnt/c/Users/lucas/Desktop/apps/<name>/<name>.exe. Lanzar individualmente con ./fn run is_cpp_app_running_windows <name> para chequear y launch_cpp_app_windows <name> para arrancar.