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 способа решить эту проблему:
- Установите Firebase и все, что вам может понадобиться, на лету, точно так же, как вы делаете это при сборке.
- Используйте CircleCI Workspaces для переноса вашего
node_modules
каталог от задания сборки до задания развертывания.
На мой взгляд, вариант 2, скорее всего, ваш лучший выбор, потому что он более эффективен.