# ACTION_PLAN.md
\> \[\!IMPORTANT\] \> \*\*ESTADO ACTUAL DE AUDITORÍA:\*\* De acuerdo con las reglas obligatorias de esta auditoría forense\, \*\*NO se ha realizado ningún cambio en los archivos de la rama \`fix/pipeline\-build\-error\`\*\*\. Las propuestas que se listan a continuación están pendientes de aprobación explícita\.
\-\-\-
\#\# 1\. Corrección Inmediata \(Menor Riesgo\)
\#\#\# Modificación A: Sincronizar y Parametrizar la Versión de Node\.js \* \*\*Acción:\*\* Reemplazar el valor hardcodeado \`24.4.1\` en la tarea \`NodeTool@0\` por la variable dinámica declarada en el grupo de variables centralizado. \* \*\*Archivos a modificar:\*\* \[npm\-install\-dependencies\.yml\]\(file:///c:/Users/jgrullon/Documents/DevOps/pipelines\-devops/movil\-apap/tasks/npm\-install\-dependencies\.yml\) \* \*\*Cambio propuesto:\*\* \`\`\`diff - - task: NodeTool@0 - displayName: "Instalar Node.js" - inputs: - versionSpec: "24.4.1" + - task: NodeTool@0 + displayName: "Instalar Node.js" + inputs: + versionSpec: "$(nodeVersion)" \`\`\`
\#\#\# Modificación B: Declaración de Pool de Agentes para Jobs de PR \* \*\*Acción:\*\* Asegurar que los Jobs que ejecutan scripts de Bash de Unix (\`gitleaks-job.yml\`, \`wiz-dir-scan-job.yml\` y \`build-job.yml\`) se ejecuten en agentes Linux (\`ubuntu-latest\`) para evitar fallos de shell no reconocido en entornos Windows. \* \*\*Archivos a modificar:\*\* \* \[gitleaks\-job\.yml\]\(file:///c:/Users/jgrullon/Documents/DevOps/pipelines\-devops/movil\-apap/jobs/gitleaks\-job\.yml\) \* \[build\-job\.yml\]\(file:///c:/Users/jgrullon/Documents/DevOps/pipelines\-devops/movil\-apap/jobs/build\-job\.yml\) \* \[wiz\-dir\-scan\-job\.yml\]\(file:///c:/Users/jgrullon/Documents/DevOps/pipelines\-devops/movil\-apap/jobs/wiz\-dir\-scan\-job\.yml\) \* \*\*Cambio propuesto (ejemplo en \`gitleaks-job.yml\`):\*\* \`\`\`diff jobs: - job: GitLeaks displayName: "Escaneo de GitLeaks" + pool: + vmImage: "ubuntu-latest" steps: - template: ../tasks/gitleaks.yml \`\`\`
\-\-\-
\#\# 2\. Corrección Recomendada \(Mejor Solución a Largo Plazo\)
\#\#\# Tareas Nativas del Marketplace \* Evitar la descarga manual de binarios mediante \`wget\` y scripts \`Bash@3\`. En su lugar, integrar las tareas oficiales de la extensión de Azure DevOps para \*\*GitLeaks\*\* y \*\*Wiz Security Scan\*\*. Esto reduce el mantenimiento de scripts personalizados y automatiza las actualizaciones de los motores de escaneo de forma segura.
\#\#\# Control de Entorno Java y Android \* Añadir un paso explícito para instalar y configurar la versión adecuada de Java (JDK 17 recomendado para Capacitor 5/6) en \`tasks/build.yml\` antes de ejecutar la compilación de Android para evitar fallos de Gradle. \* \*\*Cambio propuesto en \`tasks/build.yml\`:\*\* \`\`\`yaml - task: JavaToolInstaller@0 displayName: "Instalar Java JDK 17" inputs: versionSpec: '17' jdkSourceOption: 'PreInstalled' jdkArchitectureOption: 'x64' cleanDestinationDirectory: false \`\`\`
\-\-\-
\#\# 3\. Tabla de Alternativas
\| Alternativa \| Esfuerzo \| Riesgo \| Impacto \| Ventajas \| Desventajas \| \| :\-\-\- \| :\-\-\- \| :\-\-\- \| :\-\-\- \| :\-\-\- \| :\-\-\- \| \| \*\*Opción A \(Recomendada\):\*\* Sincronizar Node a \`$\(nodeVersion\)\` y forzar agentes Linux \(\`ubuntu\-latest\`\) en los jobs\. \| \*\*Bajo\*\* \| \*\*Muy Bajo\*\* \| \*\*Alto\*\* \| Rápida implementación\, alinea el pipeline con la especificación de variables y soluciona el error inmediato de Bash en agentes Windows\. \| Requiere que las variables de \`vars\.yml\` estén perfectamente mantenidas\. \| \| \*\*Opción B \(Contenerización\):\*\* Ejecutar los jobs de compilación dentro de una imagen de contenedor Docker pre\-configurada\. \| \*\*Medio\*\* \| \*\*Bajo\*\* \| \*\*Muy Alto\*\* \| Inmutabilidad total\. La imagen contiene la versión exacta de Node\, Java\, Gradle y el Android SDK\. \| Incrementa el costo de mantenimiento de las imágenes Docker del equipo DevOps\. \| \| \*\*Opción C \(Scripts Multiplataforma\):\*\* Reescribir las tareas de Gitleaks y Wiz en PowerShell Core \(\`pwsh: true\`\) para soporte multiplataforma \(Windows/Linux\)\. \| \*\*Alto\*\* \| \*\*Medio\*\* \| \*\*Medio\*\* \| Permite ejecutar las tareas de seguridad en cualquier pool de agentes asignado \(independientemente del OS\)\. \| Complejidad de mantenimiento alta al escribir lógica para descargar\, extraer e instalar binarios en Windows y Linux\. \|
\-\-\-
\#\# 4\. Estrategia de Rollback Si tras aplicar el plan de acción (Opción A o B) se presentan errores inesperados de compilación: 1\. Realizar un revert de los commits aplicados en la rama \`fix/pipeline\-build\-error\`\. 2\. Ejecutar un hard reset local a la última versión funcional conocida \(\`git reset \-\-hard 14567e18bb0e38fabb3ea8284c4574dec115022f\`\) y empujar con fuerza a la rama remota para restaurar el estado anterior\.