Github Action Docker容器内Webpack无法写入构建文件问题求助
解决方案
问题根因
报错本质是npm的默认安全机制触发的权限冲突:当npm以root身份执行脚本时,会自动将执行权限降级到nobody用户;而actions/checkout拉取到工作目录的文件默认所有者为root,nobody用户没有对应文件的写入权限,因此Webpack编译过程中生成/修改文件时会触发EACCES报错。你单独用root执行touch命令能成功,是因为没有经过npm的权限降级逻辑,直接用root身份操作文件,自然不会有权限问题。
修复方案
两种方案任选其一即可:
方案1:配置npm禁用自动权限降级(推荐)
直接修改npm的运行规则,root身份执行时不降级权限,不需要修改文件系统权限,适配性更高。
修改后的工作流配置如下:
jobs: tests: runs-on: ubuntu-latest container: image: chilio/laravel-dusk-ci:latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 - name: 配置npm权限规则 run: npm config set unsafe-perm true - name: Install run: npm install - name: Prod run: npm run production
方案2:修正工作目录文件所有者
在拉取代码后,将整个工作目录的文件所有权改为当前执行用户,确保所有操作都有读写权限:
steps: - uses: actions/checkout@v2 - name: 修正工作目录权限 run: chown -R $(whoami) . # 后续步骤保持不变
修改配置后重新运行Action即可解决编译写入权限报错。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

