testform plan
testform [opciones globales] plan [opciones]El comando testform plan genera un plan de ejecución. Evalúa tus archivos .feature locales contra el archivo de estado actual (testform.state) y la infraestructura remota, calculando con exactitud el conjunto de acciones necesarias para alinear las incidencias remotas con el código local.
Es una operación especulativa y de solo lectura que no altera ningún recurso remoto.
Opciones del Comando
Sección titulada «Opciones del Comando»| Opción | Por Defecto | Descripción |
|---|---|---|
-out=path |
— | Escribe el plan de ejecución resultante en un archivo binario. Puede suministrarse a apply para garantizar una ejecución idéntica y reproducible. |
-destroy |
false |
Genera un plan para destruir todos los recursos gestionados en lugar de aplicar actualizaciones. |
-refresh=false |
true |
Omite la consulta a la API remota para detectar desviaciones fuera de banda antes de planificar. |
-target=address |
— | Limita la planificación a una única identidad de recurso (por ejemplo: login.case.feature.@tc-1). Admite múltiples declaraciones. |
-json |
false |
Emite el plan en formato estructurado JSON. |
-detailed-exitcode |
false |
Devuelve códigos de salida detallados (0 = plan vacío sin cambios, 2 = cambios pendientes de aplicar). |
Indicadores de Diff
Sección titulada «Indicadores de Diff»Las acciones se representan mediante los símbolos estándar de diff de Terraform:
+create: El recurso existe localmente pero aún no ha sido aprovisionado de forma remota.~update in-place: El recurso existe remotamente, pero sus propiedades locales (título, pasos, etiquetas, campos) han cambiado.-destroy: El recurso existe en el estado pero ha sido eliminado del código local.-/+replace: El recurso está marcado como dañado (tainted) o su identidad fundamental cambió; será destruido y recreado.
Ejemplo de Ejecución Real
Sección titulada «Ejemplo de Ejecución Real»$ testform plan
Testform used the selected Provider to generate the following execution plan.Resource actions are indicated with the following symbols: + create ~ update in-place - destroy
Testform will perform the following actions:
# github.testcase.login.case.feature.@tc-1 will be updated in-place ~ resource "github_testcase" "login.case.feature.@tc-1" { id = 104 ~ labels = ["login", "smoke"] -> ["login", "smoke", "high"] ~ milestone = "Sprint 41" -> "Sprint 42" }
# github.testcase.checkout.case.feature.@tc-3 will be created + resource "github_testcase" "checkout.case.feature.@tc-3" { + title = "Aplicar cupón promocional válido" + labels = ["checkout", "promotions"] + state = "open" }
Plan: 1 to add, 1 to change, 0 to destroy.Buena Práctica: Guardar Planes en CI/CD
Sección titulada «Buena Práctica: Guardar Planes en CI/CD»En pipelines automatizados, guarda siempre el plan con -out y transfiérelo al comando apply para eliminar condiciones de carrera:
# En la fase de Pull Request:testform plan -out=testform.plan.bin
# En la fase de Merge / Despliegue:testform apply testform.plan.binCódigos de Salida
Sección titulada «Códigos de Salida»Al ejecutarse con -detailed-exitcode:
0: Ejecución exitosa con diff vacío (no hay cambios requeridos).1: Ocurrió un error.2: Ejecución exitosa con diff no vacío (existen cambios pendientes de aplicar).