988e901066
Añade campos params y output al frontmatter YAML de las 506 funciones del registry. Cada parámetro tiene descripción semántica (qué representa, unidades, rango típico) y cada función describe qué produce su output. Permite a agentes razonar sobre cadenas de composición (ej: prices → log_return → sharpe_ratio) sin leer código.
54 lines
1.8 KiB
Markdown
54 lines
1.8 KiB
Markdown
---
|
|
name: deploy_app
|
|
kind: pipeline
|
|
lang: go
|
|
domain: infra
|
|
version: "1.0.0"
|
|
purity: impure
|
|
signature: "func DeployApp(appDir string, imageName string, port int, envVars map[string]string) (string, error)"
|
|
description: "Orquesta el deploy completo de una app Go en Docker. Pasos: genera Dockerfile, lo escribe a disco, construye la imagen y lanza el contenedor en modo detach con port mapping. Retorna el container ID."
|
|
tags: [docker, deploy, go, pipeline, infra, container]
|
|
uses_functions: [generate_dockerfile_go_infra, write_dockerfile_go_infra, docker_build_image_go_infra, docker_run_container_go_infra]
|
|
uses_types: []
|
|
returns: []
|
|
returns_optional: false
|
|
error_type: "error_go_core"
|
|
imports: [fmt]
|
|
params:
|
|
- name: appDir
|
|
desc: "ruta del directorio de la app Go (contiene main.go)"
|
|
- name: imageName
|
|
desc: "nombre de la imagen Docker a construir y contenedor a lanzar"
|
|
- name: port
|
|
desc: "puerto a mapear (hostPort == containerPort)"
|
|
- name: envVars
|
|
desc: "mapa de variables de entorno a pasar al contenedor"
|
|
output: "ID del contenedor Docker lanzado exitosamente"
|
|
tested: false
|
|
tests: []
|
|
test_file_path: ""
|
|
file_path: "functions/infra/deploy_app.go"
|
|
---
|
|
|
|
## Ejemplo
|
|
|
|
```go
|
|
containerID, err := DeployApp(
|
|
"/home/user/apps/myapp",
|
|
"myapp",
|
|
8080,
|
|
map[string]string{
|
|
"DB_HOST": "postgres",
|
|
"PORT": "8080",
|
|
},
|
|
)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Println("Contenedor lanzado:", containerID)
|
|
```
|
|
|
|
## Notas
|
|
|
|
Pipeline de 4 pasos: generate_dockerfile (pura) → write_dockerfile → docker_build_image → docker_run_container. El nombre del contenedor e imagen coinciden con imageName. El port mapping es simetrico (hostPort == containerPort). Si cualquier paso falla, el pipeline retorna error con contexto del paso fallido. No hace rollback automatico — para limpiar usar stop_app.
|