Tenemos una canalización de compilación de CD/CI Azure Devops que comenzó a fallar para nodejs/node-gyp .
error gyp info using node-gyp@3.8.0error gyp info using node@16.13.0 | win32 | x64Nada sobre nuestra canalización de compilación ha cambiado, el grupo que usamos es:
pool: vmImage: 'windows-latest' Que todavía está asignado a windows-2019 https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml .
La canalización falla cuando ejecutamos la siguiente tarea en el archivo YAML:
- task: Npm@1 displayName: 'npm install' inputs: command: 'install' workingDir: 'FrontEnd' verbose: trueArchivo de registro:
error gyp ERR! UNCAUGHT EXCEPTION error gyp ERR! stack Error: spawn C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\15.0\Bin\MSBuild.exe ENOENT error gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:282:19) error gyp ERR! stack at onErrorNT (node:internal/child_process:477:16) error gyp ERR! stack at processTicksAndRejections (node:internal/process/task_queues:83:21) error gyp ERR! System Windows_NT 10.0.17763 error gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "D:\\a\\1\\s\\Presentation\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library=" error gyp ERR! cwd D:\a\1\s\FrontEnd\node_modules\node-sass error gyp ERR! node -v v16.13.0 error gyp ERR! node-gyp -v v3.8.0 error gyp ERR! This is a bug in `node-gyp`. error gyp ERR! Try to update node-gyp and file an Issue if it does not help: error gyp ERR! <https://github.com/nodejs/node-gyp/issues> error Build failed with error code: 7 verbose exit 1 ##[error]Error: Npm failed with return code: 1Azure actualizó automáticamente la versión del nodo que estaba usando, impulsando también la versión requerida de node-gyp, lo que provocó que fallaran todas nuestras compilaciones. Las versiones a las que impulsó fueron:
Agregue task: NodeTool@0 para establecer la versión del nodo en la última versión aprobada, que para nosotros fue:
El código final se ve así:
- task: NodeTool@0 inputs: versionSpec: '14.x' - task: Npm@1 displayName: 'npm install' inputs: command: 'install' workingDir: 'FrontEnd' verbose: trueDespués de volver a ejecutar la canalización, vuelve a funcionar y produce artefactos.
El problema que tuvimos con las versiones npm/node apuntó a node-gyp como el culpable, como se muestra aquí. Si las versiones en conflicto no se muestran en la excepción del componente en particular, las versiones de npm/nodo se revelan en el agente de usuario cuando se ejecuta la instalación de npm.
En la tarea de instalación de npm, el agente de usuario se muestra como:
user-agent = "npm/6.14.15 node/v16.13.0 win32 x64"
al ejecutar la imagen 'windows-latest'.
Usando la herramienta de nodo en la respuesta anterior, lo anterior cambia a:
user-agent = "npm/6.14.15 node/v14.18.1 win32 x64"
Esta pregunta es similar a la tarea de instalación de Azure DevOps Pipeline NPM falla con el error de compilación node-gyp
Para aquellos que no usan yaml y el editor clásico en su lugar:
Para usuarios del editor clásico: