«eslint: В доступе отказано» при развертывании приложения React на Firebase через GitLab - PullRequest
1 голос
/ 03 февраля 2020

В настоящее время я пытаюсь настроить CI через GitLab для моего приложения React, размещенного на Firebase. Я изо всех сил пытаюсь пройти этот пункт. Был какой-то другой пост, предлагающий использовать sudo, но консоль сказала мне, что команда не найдена.

Любая помощь будет принята с благодарностью. Спасибо вам.

Вот мои текущие конфигурации:

файл конфигурации gitlab-ci.yml

image: node:10.15.3

cache:
  paths:
  - node_modules/

stages:
  - build
  - deploy
    
deploy_dev:
  stage: deploy
  script:
    - echo "Deploying to staging environment"
    - npm install -g firebase-tools
    - firebase deploy --token $FIREBASE_DEPLOY_KEY --project $CI_ENVIRONMENT_NAME
  environment:
    name: dev
  only:
    - master

Пакет. json

{
  "name": "react-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "bootstrap": "^4.4.1",
    "firebase": "^6.6.2",
    "firebase-functions": "^3.3.0",
    "moment": "^2.24.0",
    "node-sass": "^4.13.1",
    "react": "^16.12.0",
    "react-beautiful-dnd": "^11.0.5",
    "react-dates": "^20.3.0",
    "react-dom": "^16.12.0",
    "react-moment": "^0.9.7",
    "react-perfect-scrollbar": "^1.5.3",
    "react-router-dom": "^5.1.2",
    "react-scripts": "^3.3.0",
    "reactstrap": "^8.2.0",
    "recompose": "^0.30.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}

Ошибка консоли, указывающая на ошибку разрешения

 $ firebase deploy -m "Pipeline $CI_PIPELINE_ID, build $CI_BUILD_ID" --non-interactive --token $FIREBASE_DEPLOY_KEY --project $CI_ENVIRONMENT_NAME
 ⚠  functions: package.json indicates an outdated version of firebase-functions.
  Please upgrade using npm install --save firebase-functions@latest in your functions directory.
 === Deploying to 'cmd-dev-bbdc4'...
 i  deploying functions, hosting
 Running command: npm --prefix "$RESOURCE_DIR" run lint
 > functions@ lint /builds/cmdc/cmd/functions
 > eslint .
 sh: 1: eslint: Permission denied
 npm ERR! code ELIFECYCLE
 npm ERR! errno 126
 npm ERR! functions@ lint: `eslint .`
 npm ERR! Exit status 126
 npm ERR! 
 npm ERR! Failed at the functions@ lint script.
 npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
 npm ERR! A complete log of this run can be found in:
 npm ERR!     /root/.npm/_logs/2020-02-03T01_51_09_788Z-debug.log
 Error: functions predeploy error: Command terminated with non-zero exit code126
 ERROR: Job failed: exit code 1

1 Ответ

1 голос
/ 04 февраля 2020

Итак, проведя некоторые эксперименты, я смог определить, что мне нужно перейти в каталог 'functions' и запустить NPM install. Я предполагаю, что это произошло из-за фундаментального неправильного понимания структуры проектов Firebase и пакетов узлов.

Я хотел бы узнать больше, поэтому, если кто-нибудь поделится чтением по этому поводу, это будет оценено.

Завершается скриптом, который выглядит следующим образом.

deploy_dev:
  stage: deploy
  script:
    - echo "Deploying to staging environment"
    - npm install -g firebase-tools #--allow-root
    - npm ci #--allow-root
    - cd functions # required or would throw the "eslint: not found" error
    - npm ci
    - cd ..
    - firebase use --token $FIREBASE_DEPLOY_KEY $CI_ENVIRONMENT_NAME
    - firebase deploy -m "Pipeline $CI_PIPELINE_ID, build $CI_BUILD_ID" --non-interactive --token $FIREBASE_DEPLOY_KEY
  environment:
    name: dev
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...