Разверните Gatsby в Firebase с помощью Circleci

Я подписался на этот блог, чтобы развернуть свой сайт Gatsby в Firebase с помощью circleCI

https://circleci.com/blog/automatically-deploy-a-gatsby-site-to-firebase-hosting/

Файл config.yml выглядит следующим образом

# CircleCI Firebase Deployment Config
version: 2
jobs:
  build:
    docker:
      - image: circleci/node:10
    working_directory: ~/gatsby-site
    steps:
      - checkout
      - restore_cache:
          keys:
            # Find a cache corresponding to this specific package-lock.json
            - v1-npm-deps-{{ checksum "package-lock.json" }}
            # Fallback cache to be used
            - v1-npm-deps-
      - run:
          name: Install Dependencies
          command: npm install
      - save_cache:
          key: v1-npm-deps-{{ checksum "package-lock.json" }}
          paths:
            - ./node_modules
      - run:
          name: Gatsby Build
          command: npm run build
      - run:
          name: Firebase Deploy
          command: ./node_modules/.bin/firebase deploy --token "$FIREBASE_TOKEN"

Это вызвало ошибку

#!/bin/bash -eo pipefail
./node_modules/.bin/firebase deploy --token "$FIREBASE_TOKEN"
/bin/bash: ./node_modules/.bin/firebase: No such file or directory

Exited with code exit status 127
CircleCI received exit code 127

Раньше я не использовал файлы yml и не фокусировался на DevOps, поэтому немного покопался. Нашел еще несколько человек с этой проблемой, и было предложение использовать рабочие области и рабочий процесс. Поэтому я внес поправки в свой yml-файл для поддержки этого

# CircleCI Firebase Deployment Config
version: 2
jobs:
  #build jobs
  build:
    docker:
      - image: circleci/node:10
    working_directory: ~/gatsby-site
    steps:
      - checkout
      - restore_cache:
          keys:
            # Find a cache corresponding to this specific package-lock.json
            - v1-npm-deps-{{ checksum "package-lock.json" }}
            # Fallback cache to be used
            - v1-npm-deps-
      - run:
          name: Install Dependencies
          command: npm install
      - save_cache:
          key: v1-npm-deps-{{ checksum "package-lock.json" }}
          paths:
            - ./node_modules
      - persist_to_workspace:
          root: ./
          paths:
            - ./
      - run:
          name: Gatsby Build
          command: npm run build
      - persist_to_workspace:
          root: ./
          paths:
            - ./
  # deploy jobs
  deploy-production:
    docker:
      - image: circleci/node:10
    steps:
      - attach_workspace:
          at: ./  
      - run:
          name: Firebase Deploy
          command: ./node_modules/.bin/firebase deploy --token "$FIREBASE_TOKEN"
workflows:
  version: 2
  build:
    jobs:
    #build
      - build
    #deploy
      - deploy-production:
          requires:
            - build

Та же проблема

#!/bin/bash -eo pipefail
./node_modules/.bin/firebase deploy --token "$FIREBASE_TOKEN"
/bin/bash: ./node_modules/.bin/firebase: No such file or directory

Exited with code exit status 127
CircleCI received exit code 127

Я предполагаю, что это должно быть связано с путями, и он ищет не в том каталоге? Есть идеи, как я могу найти нужный модуль?


person user2389087    schedule 19.03.2020    source источник
comment
firebase-tools указан в вашем package.json?   -  person abraham    schedule 20.03.2020
comment
Ты сделал мой день! npm install -D firebase-tools помогло   -  person user2389087    schedule 20.03.2020


Ответы (1)


Похоже, я не умею читать. Исправление было в инструкции

Нам также потребуется установить пакет firebase-tools локально в наш проект как devDependency. Это пригодится позже при интеграции с CircleCI, который по умолчанию не позволяет устанавливать пакеты глобально. Итак, давайте установим его прямо сейчас:

npm install -D firebase-tools

person user2389087    schedule 20.03.2020