Jenkins流水线执行fastlane install_plugins遇权限拒绝错误求助
解决Jenkins中fastlane install_plugins权限拒绝问题
看起来你碰到了fastlane插件安装时的权限瓶颈,这个Errno::EACCES错误本质是Jenkins进程没有权限访问或写入指定的文件路径。结合你的构建流程,我给你几个实用的排查和解决方向:
先定位完整的报错路径
你的报错信息里路径被截断成了/users/&l...,先在Jenkins构建日志里找到完整的路径。这个路径大概率是fastlane试图写入的插件安装目录,可能是系统级的Ruby/gems目录,或者是Jenkins工作区里的某个子目录。检查Jenkins运行用户的权限
- 先确认Jenkins是用哪个用户启动的,在服务器终端执行:
ps aux | grep jenkins - 查看完整报错路径的权限信息:
ls -ld /完整的报错路径 - 如果该路径的所有者不是Jenkins运行用户,执行命令赋予权限:
(把sudo chown -R jenkins_user:jenkins_group /完整的报错路径jenkins_user和jenkins_group替换成你实际查到的用户和组)
- 先确认Jenkins是用哪个用户启动的,在服务器终端执行:
改用项目本地安装插件
系统级目录的权限限制很常见,我们可以让fastlane把插件安装在Jenkins工作区的项目目录下,避免权限问题:- 在执行
fastlane install_plugins前,先添加shell命令配置bundle路径:bundle config set path './vendor/bundle' - 然后用bundle来执行fastlane命令:
bundle exec fastlane install_plugins
这样插件会被安装在项目根目录的
vendor/bundle下,Jenkins对工作区目录默认是有读写权限的。- 在执行
修复Jenkins工作区的目录权限
有时候Git克隆仓库后,工作区目录的所有者可能不是Jenkins用户,导致后续写入操作失败。可以在构建的第一步添加一个shell命令:sudo chown -R $USER:$GROUP $WORKSPACE($USER和$GROUP会自动获取Jenkins运行的用户和组)
别用sudo执行fastlane
千万别图省事用sudo fastlane install_plugins,这会让插件文件的所有者变成root,后续构建步骤还会碰到权限问题,而且也不符合安全规范。
内容的提问来源于stack exchange,提问作者Abhishek Choudhery
相关产品推荐
相关产品推荐

