我正在使用 Jenkins (CloudBees) 来构建我的项目,这会在每个构建中运行一些脚本以使用 npm 下载一些节点包。昨天 npm 注册服务器出现了问题,这阻塞了项目的构建周期。
为了不依赖外部服务器,有没有办法将我的node_modules
文件夹保存在 Jenkins 中,这样我就不必在每次构建时都下载它们?
我正在使用 Jenkins (CloudBees) 来构建我的项目,这会在每个构建中运行一些脚本以使用 npm 下载一些节点包。昨天 npm 注册服务器出现了问题,这阻塞了项目的构建周期。
为了不依赖外部服务器,有没有办法将我的node_modules
文件夹保存在 Jenkins 中,这样我就不必在每次构建时都下载它们?
CloudBees 使用一个从属池来支持您的构建,本质上您可以让构建在各种主机上运行,因此从一个新的工作区开始。无论如何,我们尝试分配一个您已经使用过的从属设备以避免下载延迟 - 这适用于存储在工作区中的所有文件。
我认为这不会阻止 npm 存储库离线的问题。
您可以检查package.json
文件和备份node_modules
目录。
当您在 jenkins 中开始下一次构建时,只需检查 package.json 文件和 node_modules 备份,如果 package.json 文件没有更改,则使用以前的备份。
PKG_SUM=$(md5sum package.json|cut -d\ -f 1)
CACHED_FILE=${PKG_SUM}.tgz
[[ -f ${CACHED_FILE} ]] && tar zxf ${CACHED_FILE}
npm install
[[ -f ${CACHED_FILE} ]] || tar zcf ${CACHED_FILE} node_moduels
上面是比较简单的缓存实现,否则应该检查缓存文件有没有损坏。