前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记录一次jenkins 部署vue 项目的问题及解决方法

记录一次jenkins 部署vue 项目的问题及解决方法

作者头像
小吕
发布2022-09-26 16:42:26
2.3K0
发布2022-09-26 16:42:26
举报
文章被收录于专栏:小吕小吕

构建就出现了以下的错误提醒:

代码语言:javascript
复制
> vue-demi@0.12.4 postinstall /data/jenkins/home/workspace/working-hour-system-web/node_modules/vue-demi
> node ./scripts/postinstall.js

internal/fs/utils.js:259
    throw err;
    ^

Error: EACCES: permission denied, open '/data/jenkins/home/workspace/working-hour-system-web/node_modules/vue-demi/lib/index.cjs'
    at Object.openSync (fs.js:461:3)
    at Object.writeFileSync (fs.js:1387:35)
    at copy (/data/jenkins/home/workspace/working-hour-system-web/node_modules/vue-demi/scripts/utils.js:24:6)
    at switchVersion (/data/jenkins/home/workspace/working-hour-system-web/node_modules/vue-demi/scripts/utils.js:52:3)
    at Object.<anonymous> (/data/jenkins/home/workspace/working-hour-system-web/node_modules/vue-demi/scripts/postinstall.js:12:3)
    at Module._compile (internal/modules/cjs/loader.js:1200:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
    at Module.load (internal/modules/cjs/loader.js:1049:32)
    at Function.Module._load (internal/modules/cjs/loader.js:937:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12) {
  errno: -13,
  syscall: 'open',
  code: 'EACCES',
  path: '/data/jenkins/home/workspace/working-hour-system-web/node_modules/vue-demi/lib/index.cjs'
}
image.png
image.png
显然可以看出构建失败了, 因为 “permission denied” 权限不足的问题

翻译成白话文是: 打开 xxx路径的文件 的时候发现,没有权限,被拒绝掉了。

知道这个就好解决了

方法1: 当前jenkins登陆用户 直接作为 root 身份 来运行

如果已经是root, 那么把npm install 命令更换为 npm install --unsafe-perm=true --allow-root

就是说 npm 出于安全考虑不支持以 root 用户运行,即使你用 root 用户身份运行了,npm 会自动转成一个叫 nobody 的用户来运行,而这个用户几乎没有任何权限。这样的话如果你脚本里有一些需要权限的操作,比如写文件(尤其是写 /root/.node-gyp),就会崩掉了。

为了避免这种情况,要么按照 npm 的规矩来,专门建一个用于运行 npm 的高权限用户;要么加 --unsafe-perm 参数,这样就不会切换到 nobody 上,运行时是哪个用户就是哪个用户,即使是 root。


方法2: 赋予权限 (我没试)

代码语言:javascript
复制
chown -R /data/jenkins    // 赋予权限。本次是 / data/jekins 无权限,可根据情况赋予权限。
npm install
npm run build:test    // 测试环境的打包命令。根据项目来写。

这样,赋予权限后,install 就没问题了。

而且,一次执行,后期都不用再执行赋予权限的命令都没问题。这个比上个优雅点哈。。。。

思考:

  与运维沟通,他反馈: 正常情况下 install 的时候用的就是root,所以jenkins是有root权限的。那怎么会出现上面的权限问题呢?

  经过了解: 如果 运维修改了文件的位置,或者改了权限,则需要给jenkins 的用户重新赋予权限。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 显然可以看出构建失败了, 因为 “permission denied” 权限不足的问题
  • 方法1: 当前jenkins登陆用户 直接作为 root 身份 来运行
  • 方法2: 赋予权限 (我没试)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档