Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement staging deployment with firebase #342

Merged
merged 4 commits into from
Jan 9, 2025
Merged

Conversation

kachick
Copy link
Collaborator

@kachick kachick commented Jan 9, 2025

Resolves GH-325

firebase の project をとにかく作ってしまいました。請求以外の権限で招待済み

firebaseのproject周りを後から書き換えてsecretも挿し替えれば、そのままのコードでアカウント移行もできると思う

Summary by CodeRabbit

  • 新機能

    • Firebase Hostingのデプロイ設定を追加
    • ステージング環境と本番環境向けの新しいデプロイワークフローを導入
  • 設定の変更

    • .firebasercファイルを追加し、デフォルトのFirebaseプロジェクトを設定
    • firebase.jsonを追加し、ホスティング設定を構成
  • 開発環境

    • 開発シェルにfirebase-toolsを追加

Copy link

github-actions bot commented Jan 9, 2025

Visit the preview URL for this PR (updated for commit 13c12e6):

https://pankona-blog--pr342-staging-firebase-6esdragv.web.app

(expires Thu, 16 Jan 2025 04:34:28 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: 7016b665682c1e547d8ab4f1a1c90349712e1a28

@kachick kachick requested a review from pankona January 9, 2025 04:35
Copy link

coderabbitai bot commented Jan 9, 2025

Walkthrough

このプルリクエストは、Firebase Hostingを使用したウェブサイトのデプロイメントプロセスを改善するための構成ファイルと GitHub Actions ワークフローの変更を導入しています。新しい設定ファイル .firebasercfirebase.json が追加され、デプロイメントワークフローが更新されました。また、開発環境に Firebase CLI ツールを含めるために flake.nix も変更されています。

Changes

ファイル 変更の概要
.firebaserc デフォルトの Firebase プロジェクトを "pankona-blog" に設定
.github/workflows/generate_site_and_deploy.yaml デプロイジョブを deploy-stagingdeploy-production に分割
firebase.json Firebase Hosting の設定を追加(公開ディレクトリと無視するファイルの指定)
flake.nix 開発シェルに firebase-tools 依存関係を追加

Sequence Diagram

sequenceDiagram
    participant PR as Pull Request
    participant Build as Build Job
    participant Staging as Deploy Staging
    participant Production as Deploy Production

    PR ->> Build: Trigger build
    Build -->> Staging: If build succeeds
    Build -->> Production: If build succeeds and triggered by pankona

    Staging ->> Firebase: Deploy to staging
    Production ->> GitHub Pages: Deploy to production
Loading

このシーケンス図は、新しいデプロイメントワークフローの基本的な流れを示しています。ビルドジョブの成功後、プルリクエストの場合はステージング環境に、特定の条件を満たす場合は本番環境にデプロイされます。

Finishing Touches

  • 📝 Generate Docstrings

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
.github/workflows/generate_site_and_deploy.yaml (1)

54-79: ステージング環境のデプロイ設定について改善の提案

Firebase Hostingを使用したステージング環境の実装は良い選択ですが、以下の改善点があります:

  1. Firebase Hostingのチャンネル指定が明示されていません
  2. デプロイメントURLをPRコメントに自動投稿する機能が実装されていません

以下の変更を提案します:

 - uses: FirebaseExtended/action-hosting-deploy@v0
   with:
     repoToken: ${{ secrets.GITHUB_TOKEN }}
     firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_PANKONA_BLOG }}
     projectId: pankona-blog
+    channelId: pr-${{ github.event.number }}
+    expires: 30d

これにより:

  • PRごとに一意のチャンネルが作成されます
  • プレビューURLは30日後に自動的に期限切れとなります
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 36dbd0f and 13c12e6.

📒 Files selected for processing (4)
  • .firebaserc (1 hunks)
  • .github/workflows/generate_site_and_deploy.yaml (1 hunks)
  • firebase.json (1 hunks)
  • flake.nix (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • .firebaserc
  • firebase.json
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: tasks
🔇 Additional comments (2)
flake.nix (2)

Line range hint 1-89: 依存関係の整理について

依存関係が論理的に整理されており、firebase-toolsの追加も適切な位置に配置されています。また、nixpkgsの安定版チャンネル(nixos-24.11)を使用していることで、再現性の高いビルド環境が確保されています。


45-46: firebase-toolsの追加について承認

開発環境にFirebase CLIツールを追加することは、Firebase Hostingを使用したデプロイメントの実装という目的に合致しています。

以下のスクリプトを実行して、firebase-toolsのバージョンの互換性を確認することをお勧めします:

@kachick
Copy link
Collaborator Author

kachick commented Jan 9, 2025

@coderabbitai

Firebase Hostingを使用したステージング環境の実装は良い選択ですが、以下の改善点があります:

Firebase Hostingのチャンネル指定が明示されていません
デプロイメントURLをPRコメントに自動投稿する機能が実装されていません
以下の変更を提案します:

 - uses: FirebaseExtended/action-hosting-deploy@v0
   with:
     repoToken: ${{ secrets.GITHUB_TOKEN }}
     firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_PANKONA_BLOG }}
     projectId: pankona-blog
+    channelId: pr-${{ github.event.number }}
+    expires: 30d
これにより:

PRごとに一意のチャンネルが作成されます
プレビューURLは30日後に自動的に期限切れとなります

https://github.com/FirebaseExtended/action-hosting-deploy/blob/d482eb942f549f059116ec36b191860128553142/action.yml#L42
https://github.com/FirebaseExtended/action-hosting-deploy/blob/d482eb942f549f059116ec36b191860128553142/action.yml#L33

デフォルトで問題ないという認識なのですが、敢えてその値に変えたいのはなにか理由が・・・?
特に expire は 7から30日に延ばす必要性うすそうな

Copy link

coderabbitai bot commented Jan 9, 2025

Tip

For best results, initiate chat on the files or code changes.

@kachick 現在のワークフローファイルを確認しました。

現在の実装は最小限でクリーンな設定になっています。deploy-staging ジョブには必要な権限(checks: writepull-requests: write)が設定されており、これによりアクションは自動的に:

  1. PRの番号から一意のチャンネルIDを生成
  2. 7日間の有効期限を設定
  3. デプロイメントURLをPRにコメント

という動作を行います。

明示的な設定を追加することは可能ですが、デフォルトの動作で十分な機能が提供されているため、設定を複雑にする必要はないと考えます。

🔗 Analysis chain

@kachick デフォルトの設定で十分だと思います:

  1. channelIdは明示的に指定しなくても、PRの番号から自動的に生成されます
  2. expiresのデフォルト値である7日間は、PRのレビュー期間として適切です。30日に延長する特別な理由がない限り、デフォルトのままで良いと思います

デプロイメントURLの自動投稿については、アクションのデフォルトの動作として既に実装されています。FirebaseExtended/action-hosting-deploy アクションは、デプロイ完了時に自動的にPRコメントを作成します。

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
cat .github/workflows/generate_site_and_deploy.yaml

Length of output: 3434


✏️ Learnings added
Learnt from: kachick
URL: https://github.com/pankona/pankona.github.io/pull/342

Timestamp: 2025-01-09T04:43:11.805Z
Learning: The FirebaseExtended/action-hosting-deploy GitHub Action automatically:
1. Generates channelId from PR number if not specified
2. Sets preview expiry to 7 days by default
3. Posts deployment URL as PR comment

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

Copy link
Owner

@pankona pankona left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

やってみよ

@pankona pankona merged commit 0ce558b into main Jan 9, 2025
11 checks passed
@pankona pankona deleted the staging-firebase branch January 9, 2025 09:29
@kachick
Copy link
Collaborator Author

kachick commented Jan 9, 2025

Azs!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

staging deploy が欲しい
2 participants