1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CloudFunctionsのデプロイエラー3つの対処方法/nodeとArtifact Registryとconfigの問題について

Posted at

こんにちは。virapture株式会社でCEOしながらラグナロク株式会社でもCKOとして働いている@mogmetです。

今回はcloud functionsのデプロイにまつわるトラブルシュートな内容を共有します。

node versionの問題の解決法

下記のようなエラーが出たときの問題の対処法です。

Build failed: Build error details not available.Please check the logs at https://console.cloud.google.com/cloud-build/builds;region=asia-northeast1/xxx-xxxx-xxx-xxx?project=xxx. Please visit https://cloud.google.com/functions/docs/troubleshooting#build for in-depth troubleshooting documentation for build related errors.

以前こんな記事を書きましたが、実は根本的な解決にはなってませんでした。

どうやらデプロイするnodeのバージョンがあってないために起こっていたエラーだったようなのでcloud functionsのengineのnodeのバージョンをあげることで解決しました。
ということで早速engineのバージョンを16にあげます。

package.json
{
...
  "engines": {
    "node": "16"
  },
}

次にfirebase-toolsも新しくしましょう。

$ npm install -g firebase-tools

firebase-toolsのバージョンを上げておかないとデプロイ時に下記のようなエラーが出ます。

⚠ functions: package.json indicates an outdated version of firebase-functions.
Please upgrade using npm install --save firebase-functions@latest in your functions directory.

Artifact Registryの問題の解決法

node16の世界へようこそ!
しかし、次にデプロイに待ち受けるエラーとして下記のようなエラーが出ることがあります。

Cloud Functions uses Artifact Registry to store function docker images. Artifact Registry API is not enabled in your project. To enable the API, visit https://console.developers.google.com/apis/api/artifactregistry.googleapis.com/overview?project=xxx or use the gcloud command 'gcloud services enable artifactregistry.googleapis.com' then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

どうやらArtifact Registry APIを有効化しろとのこと。
エラーログにはurlがのってますが、そこからやっても有効化はできませんでした。
そのためログで言われてる通り下記のコマンドを実行してあげましょう。

$ gcloud services enable artifactregistry.googleapis.com

もしupdateしてねと言われたらgcloud components updateを実行した上でもう一度やってみましょう。

Updates are available for some Google Cloud CLI components.  To install them,
please run:
  $ gcloud components update

configのエラーの問題の対処法

次にこんなエラーが言われた場合の対処方法です。

✔ functions: required API cloudbuild.googleapis.com is enabled

Error: Cloud Runtime Config is currently experiencing issues, which is preventing your functions from being deployed. Please wait a few minutes and then try to deploy your functions again.
Run firebase deploy --except functions if you want to continue deploying the rest of your project.

こちらにも書いてありますが、firebase functions:configの影響でこけます。

secret managerに移行するでもいいのですが、.runtimeconfig.jsonから自分は同期をとるようにしたかったため、頑張って解決しました。
原因は新しいバージョンから変数名にキャメルケースを使うと落ちるみたいです。(新しいバージョンではスネークケースを使ってほしいみたい)
しかしソースの修正が面倒だったので無理くり実装しました。
それが下記コマンドになります。

$ cat .runtimeconfig.json | jq -r \"to_entries[]| [.key, (.value | tojson)] | join(\\\"='\\\")\" | sed -e \"s/}$/}'/\" | xargs firebase  -P dev functions:config:set

このコマンドを使うとよしなにキャメルケースで環境変数をセットしてくれます。

これで無事にデプロイもすることができました。

まとめ

新しいバージョンは割と罠も多いので古いプロジェクトをupdateするときは気をつけましょう。

最後に、ワンナイト人狼オンラインというゲームを作ってます!よかったら遊んでね!

他にもCameconOffcha、問い合わせ対応が簡単にできるCSmartといったサービスも作ってるのでよかったら使ってね!

また、チームビルディングや技術顧問、Firebaseの設計やアドバイスといったお話も受け付けてますので御用の方は弊社までお問い合わせください。

ラグナロクでもエンジニアやデザイナーのメンバーを募集しています!!楽しくぶち上げたい人はぜひお話ししましょう!!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?