Развертывание хостинга Firebase с использованием CircleCI - программирование

Развертывание хостинга 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)
4b9b3361

Ответ 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