问题描述
我正在使用Firebase托管我的个人网站,并希望集成CircleCI以实现更快的集成。但是,我在部署步骤中收到此错误:
注意 在deploy命令之前添加sudo也会导致构建失败
/home/circleci/project/node_modules/configstore/index.js:52
throw error;
^
Error: EACCES: permission denied,open '/home/circleci/.config/configstore/firebase-tools.json'
You don't have access to this file.
以下是我项目的yaml配置:
---
commands:
restore_cache_cmd:
description: "Restore cached npm install"
steps:
- restore_cache:
key: 'dependency-cache-{{checksum "package.json"}}'
save_cache_cmd:
description: "Saving npm install"
steps:
- save_cache:
key: 'dependency-cache-{{ checksum "package.json"}}'
paths:
- "./node_modules"
update:
description: "Installing project's dependencies"
steps:
- checkout
- restore_cache_cmd
- run: sudo npm i -g npm@latest
- run: sudo npm i
- save_cache_cmd
build_deploy:
description: "Building project"
steps:
- run:
name: Build
command: sudo npm run build
- run:
name: Deploy
command: ./node_modules/.bin/firebase deploy --token=$FIREBASE_DEPLOY_TOKEN -- only hosting
executors:
docker-executor:
docker:
- image: "cimg/node:12.14.1"
jobs:
build_site:
executor: docker-executor
working_directory: ~/Darryls-Personal-Site
steps:
- update
- build_deploy
version: 2.1
workflows:
build_site:
jobs:
- build_site:
filters:
branches:
only: master
我已经通过其他问题完成的步骤:
- 使用firebase login:ci获取刷新令牌,并将其放入CircleCI项目环境中的环境变量中
- 使用npm install --save-dev firebase-tools
解决方法
我认为问题在于您使用npm
来运行所有sudo
命令,除了firebase deploy
命令。
您绝对应该使用当前用户而不是超级用户运行所有内容。
在official tutorials中,您会看到sudo
没有任何运行,除了非常特殊的情况。
此外,您可以使用./node_modules/.bin/firebase deploy
来代替npx run firebase deploy
,它首先要在本地node_modules
中查找,然后在全局中查找。