Развертывание хостинга Firebase с использованием CircleCI
Я пытаюсь выяснить, как развернуть Firebase Hosting с помощью CircleCI. Насколько я знаю, нет способа установить развертывание с помощью ключа SSH, поэтому я пытаюсь найти способ входа в Firebase во время развертывания и нажимать код. То, что я пробовал до сих пор, следующее в моем круге .yml:
// circle.yml
deployment:
production:
branch: circle-deploy
commands:
- npm install -g firebase-tools
- firebase login | echo -e "${FIREBASE_EMAIL}\n${FIREBASE_PASSWORD}"
- firebase deploy
Однако я продолжаю получать следующую ошибку, и я не уверен, как ее исправить.
stream.js:94
throw er; // Unhandled stream error in pipe.
^
Error: write EPIPE
at errnoException (net.js:904:11)
at Object.afterWrite (net.js:720:19)
Ответы
Ответ 1
Мне просто нужно было сделать это, и есть более простой способ
-
На вашем компьютере вы можете получить свой токен доступа, набрав
firebase login:ci
- Сохранить этот токен как переменную среды в circleci,
$FIREBASE_TOKEN
-
Для вашего шага развертывания вы можете пропустить логин:
deployment:
production:
branch: master
commands:
- firebase deploy --token=$FIREBASE_TOKEN --non-interactive
Ответ 2
Для кого-либо, кто наткнулся на этот вопрос, это шаги, которые я должен был предпринять, чтобы получить CircleCI (и, предположительно, любой другой CI), который работает с Firebase Hosting.
- Создайте токен CI:
firebase login:ci
- Сохранить этот токен как ENV var (
FIREBASE_TOKEN
)
- Используйте токен в своем развертывании script:
firebase deploy --token=$FIREBASE_TOKEN --non-interactive
Firebase недавно добавила login:ci
, чтобы люди не могли использовать персональные маркеры разворота для служб CI.
Ответ 3
Небольшое дополнение к другим ответам выше...
Чтобы избежать установки инструментов firebase глобально в круг ci на каждой сборке:
Измените файл package.json, чтобы включить firebase-инструменты в зависимости от зависимости dev:
npm install --save-dev firebase-tools
Затем в файле circle.yml:
deployment:
production:
branch: master
commands:
- ./node_modules/.bin/firebase deploy --token=$FIREBASE_TOKEN --non-interactive
Ответ 4
Вот процесс, который мы выполнили для развертывания в CircleCi.
-
Сохраните свое имя пользователя и пароль в качестве переменных среды на уровне проекта в CircleCi.
-
Измените свой круг .yml
deployment:
production:
branch: your_branch
commands:
- npm install -g firebase-tools
- firebase login --email $FIREBASE_USERNAME --password $FIREBASE_PASSWORD
- firebase deploy
-
Нажмите на свою ветку
Кажется, что он работает нормально.
Ответ 5
Это моя первоначальная настройка, развертывание только мастера, пропустить тесты
- запустите npm install -g firebase-tools на вашей локальной машине.
- запустите firebase login: ci, чтобы получить токен на вашей локальной машине.
- запустить firebase init. Это создаст firebase.json, убедитесь, что оно выполнено
- настроить FIREBASE_TOKEN в переменных среды в СТРОИТЕЛЬНЫХ НАСТРОЙКАХ проекта на circileci
//circle.yml
general:
branches:
only:
- master
test:
override:
- echo "test"
deployment:
production:
branch: master
commands:
- npm install -g firebase-tools
- firebase deploy --token=$FIREBASE_TOKEN --non-interactive