- \# ACTION\_PLAN\.md
-
- <br>
- \> \[\!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\.
-
- <br>
- \-\-\-
-
- <br>
- \#\# 1\. Corrección Inmediata \(Menor Riesgo\)
-
- <br>
- \#\#\# 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)"
- \`\`\`
-
- <br>
- \#\#\# 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
- \`\`\`
-
- <br>
- \-\-\-
-
- <br>
- \#\# 2\. Corrección Recomendada \(Mejor Solución a Largo Plazo\)
-
- <br>
- \#\#\# 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.
-
- <br>
- \#\#\# 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
- \`\`\`
-
- <br>
- \-\-\-
-
- <br>
- \#\# 3\. Tabla de Alternativas
-
- <br>
- \| 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\. \|
-
- <br>
- \-\-\-
-
- <br>
- \#\# 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\.
-
- <br>