Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

GitHub Actions で Firebase の Deploy をする

$
0
0

はじめに

こんにちは!

この記事は GameWith アドベントカレンダーの2日目の記事になります!

https://qiita.com/advent-calendar/2020/gamewith

GitHub Actions

https://github.co.jp/features/actions

GitHub Actions は GitHub の CI/CD サービスです。

GitHub Actions にはマーケットプレイスがあり、他の人が作成した便利な Action が利用できます。

https://github.com/marketplace/actions/github-action-for-firebase

Firebase の Deploy は上記 Action を利用すれば簡単にできます。

name:Build and Deployon:push:branches:-masterjobs:build_and_deploy:name:Build&Deployruns-on:ubuntu-lateststeps:-name:Checkout Repouses:actions/checkout@master-name:Install Dependenciesrun:npm install-name:Install Functions Dependenciesrun:cd functions && npm install-name:Deploy to Firebaseuses:w9jds/firebase-action@masterwith:args:deployenv:FIREBASE_TOKEN:${{ secrets.FIREBASE_TOKEN }}

上記のような yml ファイルで hosting, functionsの Deploy ができます。

詰まった点

自分のサイトでは functionsnode-canvasを利用しているのですが、node-canvasを利用していると w9jds/firebase-action@masterによる Deploy が失敗します。

https://www.npmjs.com/package/canvas

エラーログ

Error: Error occurred while parsing your function triggers.

Error: Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /github/workspace/functions/node_modules/canvas/build/Release/libpixman-1.so.0)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:1188:18)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)
    at Module.require (internal/modules/cjs/loader.js:1026:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/github/workspace/functions/node_modules/canvas/lib/bindings.js:3:18)
    at Module._compile (internal/modules/cjs/loader.js:1138:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)

どうやら w9jds/firebase-action@masterでは node-canvasの Install ができないようです。

https://github.com/w9jds/firebase-action/blob/master/Dockerfile

Action 毎に Dockerfileが用意されており Dockerfileを見てみると、 node:12.18.1-alpineでは動かないようです。

ということで自前で書いていきます。

name:Build and Deployon:push:branches:-masterjobs:build_and_deploy:name:Build&Deployruns-on:ubuntu-lateststeps:-name:Checkout Repouses:actions/checkout@master-uses:actions/setup-node@v1-name:Install Dependenciesrun:npm install-name:Install Functions Dependenciesrun:cd functions && npm install-name:Install firebase-toolsrun:npm install -g firebase-tools-name:Deploy to Firebaserun:firebase deploy --token $FIREBASE_TOKENenv:FIREBASE_TOKEN:${{ secrets.FIREBASE_TOKEN }}

actions/setup-node@v1を追加し、firebase-toolsをグローバルインストールします。

インストール後、firebase deploy --token $FIREBASE_TOKENで Deploy をします。

終わりに

エラーログでかなりググって良い解決方法がわからず、何時間か溶かしたのでこの記事が誰かの助けになればと思います!


Viewing all articles
Browse latest Browse all 8691

Trending Articles