CircleCI 2.0 Workflow - развертывание не работает

Я пытаюсь настроить рабочий процесс в CircleCI для моего проекта React. Чего я хочу добиться, так это получить задание на сборку материала и еще одно - развернуть основную ветку на хостинг Firebase.

Это то, что я имею после нескольких конфигураций:

witmy: &witmy
  docker:
    - image: circleci/node:7.10

version: 2
jobs:
  build:
    <<: *witmy
    steps:
      - checkout
      - restore_cache:
          keys:
          - v1-dependencies-{{ checksum "package.json" }}
          - v1-dependencies-

      - run: yarn install

      - save_cache:
          paths:
            - node_modules
          key: v1-dependencies-{{ checksum "package.json" }}

      - run:
          name: Build app in production mode
          command: |
            yarn build

      - persist_to_workspace:
          root: .
  deploy:
    <<: *witmy
    steps:
      - attach_workspace:
          at: .

      - run:
          name: Deploy Master to Firebase
          command: ./node_modules/.bin/firebase deploy --token=MY_TOKEN

workflows:
  version: 2
  build-and-deploy:
    jobs:
      - build
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: master

Работа по сборке всегда успешна, но при развертывании у меня появляется эта ошибка:

#!/bin/bash -eo pipefail 
./node_modules/.bin/firebase deploy --token=MYTOKEN 

/bin/bash: ./node_modules/.bin/firebase: No such file or directory 
Exited with code 1

Итак, я понимаю, что задание развертывания не выполняется в том же месте, где была сборка, верно?

Я не уверен, как это исправить. Я прочитал несколько примеров, которые они предоставляют, и попробовал несколько вещей, но это не работает. Я также прочитал документацию, но я думаю, что не очень понятно, как все настроить... может быть, я слишком тупой.

Я надеюсь, что вы, ребята, можете помочь мне в этом.

Ура!!

ИЗМЕНЕНО, ЧТОБЫ ДОБАВИТЬ МОЙ ТЕКУЩИЙ КОНФИГ, ИСПОЛЬЗУЯ РАБОЧИЕ МЕСТ

Я добавил рабочие пространства... но все равно я не могу заставить его работать, после повторной попытки я получаю эту ошибку:

Persisting to Workspace 
The specified paths did not match any files in /home/circleci/project

А также очень тяжело фиксировать и отправлять в CircleCI каждое изменение файла конфигурации, когда я хочу его протестировать...:/

Спасибо!

1 ответ

Отказ от ответственности: я адвокат разработчика CircleCI

Каждое задание является собственным запущенным Docker-контейнером (или ВМ). Так что проблема здесь в том, что ничего в node_modules существует в вашей работе развертывания. Есть 2 способа решить эту проблему:

  1. Установите Firebase и все, что вам может понадобиться, на лету, точно так же, как вы делаете это при сборке.
  2. Используйте CircleCI Workspaces для переноса вашего node_modules каталог от задания сборки до задания развертывания.

На мой взгляд, вариант 2, скорее всего, ваш лучший выбор, потому что он более эффективен.

Другие вопросы по тегам