プッシュ通知
新記事をすぐにお知らせ
Firebase HostingへのデプロイとCI/CDパイプライン構築は、モダンなWeb開発において欠かせないプロセスです。しかし、初めて構築する際や運用を進める中で、予期しないエラーに直面することは珍しくありません。
本記事では、実際のプロダクト開発「AI編集長」の構築過程で遭遇した、Firebase HostingとGitLab CI/CDに関する一般的なエラーと、その解決方法を具体的に紹介します。これらの知見は、同様の環境で開発を進めるチームにとって、貴重な時間節約と開発効率の向上に役立つでしょう。
本記事を読み進める前に、以下の条件を満たしていることを確認してください:
これらの準備ができていない場合は、公式ドキュメントで事前セットアップを完了してください。
デプロイの基本的なフローを理解することで、エラーの原因特定が容易になります。
npm install
プロジェクトルートで依存パッケージをインストールします。package.jsonに記載されたすべてのライブラリがダウンロードされます。
npm run build
Reactプロジェクトの場合、このコマンドで本番用の最適化されたバンドルがbuild/ディレクトリに生成されます。
firebase deploy --only hosting
ビルド出力をFirebase Hostingにアップロードします。
症状: Permission deniedエラーでファイルやディレクトリが削除できない
原因: Docker内で作成したファイルやディレクトリの所有ユーザーと、削除しようとしているユーザーが異なるため
解決方法:
# Dockerfileで明示的にユーザーを指定
RUN useradd -m -u 1000 builder
USER builder
あるいは、削除時に適切なユーザー権限で実行:
docker exec -u root <container_id> rm -rf <directory>
パイプライン内では、ビルドステップで生成されたファイルの所有権を事前に統一することが重要です。
症状: パイプラインが認証エラーで失敗する
原因: Firebase CLIに必要な認証情報の渡し方が不明確
解決方法:
GitLab CIの変数設定画面を開く
Firebase認証トークンを登録
FIREBASE_TOKENfirebase login:ciで生成されたトークン.gitlab-ci.ymlで変数を使用
deploy:
stage: deploy
script:
- npm install
- npm run build
- firebase deploy --token $FIREBASE_TOKEN --only hosting
only:
- main
パイプラインのジョブ内では、$FIREBASE_TOKENが自動的に展開され、認証情報が安全に渡されます。
症状: Firebase Hostingにデプロイ後、ログイン機能が動作しない
原因: Firebase Authenticationでデプロイドメインが許可リストに追加されていない
解決方法:
Firebase Consoleにアクセス
認可済みドメインにデプロイドメインを追加
example.firebaseapp.comexample.com)// コード例: Firebase認証初期化
import { initializeAuth } from "firebase/auth";
import { getApp } from "firebase/app";
const auth = initializeAuth(getApp());
// ドメイン設定がないと、ここでエラーが発生する
実運用に耐える.gitlab-ci.ymlの例を示します:
stages:
- build
- deploy
build:
stage: build
image: node:18
script:
- npm ci
- npm run build
artifacts:
paths:
- build/
expire_in: 1 hour
only:
- main
- develop
deploy_staging:
stage: deploy
image: node:18
before_script:
- npm install -g firebase-tools
script:
- firebase deploy --token $FIREBASE_TOKEN --only hosting:staging
dependencies:
- build
only:
- develop
environment:
name: staging
url: https://staging-example.firebaseapp.com
deploy_production:
stage: deploy
image: node:18
before_script:
- npm install -g firebase-tools
script:
- firebase deploy --token $FIREBASE_TOKEN --only hosting:production
dependencies:
- build
only:
- main
environment:
name: production
url: https://example.firebaseapp.com
when: manual
デプロイが失敗した場合、以下の順序で確認してください:
npm run buildがローカルで成功しているか$FIREBASE_TOKENが正しく設定されているか.firebasercファイルが正しく設定されているかFirebase HostingへのデプロイとCI/CD構築は、正しい理解と適切な設定があれば、堅牢で効率的なデプロイメントパイプラインを実現できます。
本記事で紹介した3つのエラーと解決方法は、実際のプロダクト開発で遭遇する一般的な課題です。特に、Docker環境での権限管理、CI/CD変数の正しい設定、Firebase Authenticationのドメイン設定は、デプロイ失敗の大部分の原因となります。
これらの知見を活用することで、開発チームはデプロイプロセスに費やす時間を削減し、より本質的な機能開発に注力できるようになります。
本記事の内容が参考になった場合は、以下のアクションをお勧めします:
Firebase Hostingでの安定したデプロイが実現できることを願っています。質問や追加の相談があれば、お気軽にお問い合わせください。
記事数の多いカテゴリから探す