CircleCiとFireBaseの連携に4時間かかったのでまとめ( ;∀;)
#結果は下記の.circleci/config.yml
https://github.com/kazukinakamuraKN/my-markdown-2
####やったこと
#Firebaseデプロイ用トークンの発行
以下のサイトを参考にさせていただきました。
https://qiita.com/ottijp/items/974e092a87fbffc3f191
#Firebaseデプロイ用ID
赤押して、緑押せば、プロジェクト ID が表示されているはずです。それです。
#デプロイするにはCI環境下で、Firebase のデプロイをしたいので、firebase-toolsをインストールする必要がある
以下のサイトを参考にさせていただきました。
https://qiita.com/samuraikun/items/a7de51dab70ab853b9ff
#デプロイコマンドが実行されない
今まで見てきたサイトを参考にすると、
command: >-
ln -s ./node_modules/firebase-tools/bin/firebase . &&
./firebase deploy --only hosting --project "$FIREBASE_PROJECT_ID" --token "$FIREBASE_TOKEN"
か、
commands:
- firebase deploy --project "$FIREBASE_PJ" --token "$FIREBASE_TOKEN"
といったコマンドをじっこうすればよいと考えられます。
しかし、自分の環境ではうまくいきませんでした。
node_modules/firebase-tools/binにある、firebaseを実行すればよいものだとおもい、パスを調べるためにyml内に
find `pwd` -maxdepth 1
上記コマンドを仕込み、/home/circleci/repo/node_modules/firebase内のfirebaseに対して、コマンドを実行したりして、みたのですが、うまくいかず
/bin/bash: repo/node_modules/firebase-tools/bin/firebase: No such file or directory
Exited with code 1
このエラーを30回くらいみました。
#解決
https://blog-tech.xyz/2018/08/31/hexo-on-circleci-and-firebase/
https://discuss.circleci.com/t/deploy-to-firebase-not-working/22887/3
上記サイトを参考にしたところ、
〇 node_modules/.bin/firebase
× node_modules/firebase-tools/bin/firebase
だということが判明しました。確かに、正しいほうのフォルダ内を見ると、firebaseや、firebase.cmdといった、それっぽいファイルがあります。
ということで、最終的には、
# Javascript Node CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-javascript/ for more details
#
version: 2
jobs:
build:
docker:
- image: circleci/node:8
working_directory: ~/repo
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package.json" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: npm install
- run:
name: 'Install Dependecies'
command: npm install --save-dev firebase-tools
- save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package.json" }}
- run:
name: 'Build Client Code(react-scripts によるビルド実行)'
command: npm run build
- attach_workspace:
at: .
- run:
name: 'Deploy to Hosting'
command: node_modules/.bin/firebase deploy --only hosting --project "$FIREBASE_PJ" --token "$FIREBASE_TOKEN"
となりました。
#参考にさせていただきました。助かりました。
https://blog-tech.xyz/2018/08/31/hexo-on-circleci-and-firebase/
https://discuss.circleci.com/t/deploy-to-firebase-not-working/22887/3
https://qiita.com/samuraikun/items/a7de51dab70ab853b9ff
https://qiita.com/ottijp/items/974e092a87fbffc3f191