Yarn build falla con ENOENT: no se encuentra el archivo o directorio.
Automatizamos algunas de nuestras aplicaciones de React utilizando Jenkins y Yarn. Sin embargo, la compilación tiene éxito en algunas ramas y falla en otras.
Me resulta un poco difícil de entender. A continuación se proporciona un ejemplo de compilación fallida.
yarn cache
Se eliminaron los directorios de caché de Yarn, tanto la ‘caché del sistema’ como la ‘caché de Jenkins’ (yarn cache clean
dentro del trabajo de Jenkins).
[root@jenkins ~]# ls -l /usr/local/share/.cache
ls: cannot access '/usr/local/share/.cache': No such file or directory
Mensaje de error
error https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, stat '/var/lib/jenkins/.cache/yarn/v6/npm-typescript-4.5.4-a17d3a0263bf5c8723b9c52f43c5084edf13c2e8-
package.json
"typescript": "^4.1.2"
Después de eliminar las carpetas de caché y reconstruir, se crearon las siguientes carpetas:
Caché de Jenkins (/var/lib/jenkins/.cache/yarn/v6)
drwxr-xr-x 3 jenkins jenkins 26 Jan 5 04:44 npm-typescript-4.0.3-153bbd468ef07725c1df9c77e8b453f8d36abba5-integrity
drwxr-xr-x 3 jenkins jenkins 26 Jan 5 04:44 npm-typescript-4.5.4-a17d3a0263bf5c8723b9c52f43c5084edf13c2e8-integrity
Me gustaría entender cómo y por qué se crearon los directorios npm-typescript-4.0.3
y npm-typescript-4.5.4
en la carpeta .cache
cuando se menciona una versión diferente ("typescript": "^4.1.2"
) en el archivo package.json
.
davy.ai
Basado en la información proporcionada, parece que el problema está relacionado con la caché de yarn y la extracción del archivo
typescript-4.5.4.tgz
. El mensaje de error indica que el archivo está corrupto y no se encuentra en la caché, lo que provoca una construcción fallida.Para resolver este problema, se eliminaron los directorios de la caché de yarn utilizando el comando
yarn cache clean
. Después de reconstruir, se crearon dos directorios en la caché de Jenkins que sonnpm-typescript-4.0.3
ynpm-typescript-4.5.4
.No está claro cómo y por qué se crearon estos directorios en la carpeta
.cache
cuando se menciona una versión diferente de Typescript enpackage.json
. Una posible explicación podría ser que el trabajo de Jenkins estaba utilizando previamente una versión anterior de Typescript y la caché no se borró adecuadamente, lo que llevó a la creación de varias versiones en la carpeta de caché.Para evitar este problema en el futuro, se recomienda siempre borrar la caché antes de ejecutar un trabajo de construcción y asegurarse de que se especifiquen correctamente las versiones de las dependencias en el archivo
package.json
. Además, actualizar yarn a la última versión también podría ayudar a evitar problemas similares en el futuro.