- PS C:\\Users\\jgrullon\\Documents\\DevOps\\pipelines-devops> git checkout fix/pipeline-build-error
- error: pathspec 'fix/pipeline-build-error' did not match any file(s) known to git
- PS C:\\Users\\jgrullon\\Documents\\DevOps\\pipelines-devops>
+ \# 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>