记录一次jenkins 部署vue 项目的问题及解决方法
2023-06-13 09:11:06 时间
构建就出现了以下的错误提醒:
> 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'
}
显然可以看出构建失败了, 因为 “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: 赋予权限 (我没试)
chown -R /data/jenkins // 赋予权限。本次是 / data/jekins 无权限,可根据情况赋予权限。
npm install
npm run build:test // 测试环境的打包命令。根据项目来写。
这样,赋予权限后,install 就没问题了。
而且,一次执行,后期都不用再执行赋予权限的命令都没问题。这个比上个优雅点哈。。。。
思考:
与运维沟通,他反馈: 正常情况下 install 的时候用的就是root,所以jenkins是有root权限的。那怎么会出现上面的权限问题呢?
经过了解: 如果 运维修改了文件的位置,或者改了权限,则需要给jenkins 的用户重新赋予权限。
相关文章
- docker-jenkins安装node
- JS之在Vue对象内部获取vue对象的索引(箭头函数的闭包导致this代表的是函数本身)「建议收藏」
- 技术分享 | Jenkins job 机制该如何使用?
- vue.js 渲染函数_Vue.js的不可渲染且可扩展的RTF编辑器[通俗易懂]
- [第11期] Jenkins-使用共享库对Pipeline扩展
- jenkins升级版本遇到的问题
- 在网页文档中引入Vue.js的方法有哪些?_vue直接引入js文件没有用
- Vue生成二维码_vue视频软件怎么生成二维码
- Vue生成二维码_vue通过二维码分享
- vue3 报错解决:找不到模块‘xxx.vue’或其相应的类型声明。(Vue 3 can not find module)
- Vue(renren-fast_vue_master)项目目录结构[通俗易懂]
- 使用Jenkins进行自动构建
- IntelliJ IDEA使用 vue-cli 创建Vue项目
- 使用python-jenkins管理Jenkins
- 接口测试第13讲:与Jenkins集成
- 还在用Jenkins?试试这款面向DevOps的自动化部署工具吧,贼带劲!!
- Jenkins 构建过程中提示 GPG 错误
- Vue提示框组件vue-notification使用实例演示
- Ubuntu16.04安装Jenkins的方法图文详解
- Vue 实现前后端分离,安全连接 MSSQL 数据库(vue 连接mssql)
- Vue极致集成Redis,实现更优秀的性能(vue集成redis)
- Vue框架搭建在Redis之上的Web应用(vue请求redis)
- 用Vue从Redis中获取强有力的数据(vue用redis中数据)
- Vue操作Redis掌握前端数据管理利器(vue操作redis)
- 从零开始Vue项目中使用Redis(vue使用redis)
- Vue应用中部署Redis(vue中使用redis)
- Vue搭配Redis做针对性取值(vue redis取值)