準備 (Prerequisites)
OpenCI を自身でホスト(セルフホスト)するには、以下の前提条件を満たす必要があります。- M1 以降のチップを搭載した Mac
- macOS 14.0 以降
初期設定 (Initial Setup)
OpenCI をセルフホストするには、いくつかのツールをインストールする必要があります。Tart
Tart は、macOS 仮想マシンを管理するためのツールです。Firebase CLI
OpenCI は Firebase を使用するため、Firebase CLI をインストールする必要があります。OpenCI Runner
OpenCI Runner は、OpenCI を実行するための CLI です。インストールには Dart が必要です。ベースイメージのダウンロード (Download Base Image)
OpenCI は macOS 15.0 をベースイメージとして使用します。これにはかなりの時間がかかります。Firebase の設定 (Firebase Configuration)
OpenCI はバックエンドなどのコンポーネントに Firebase を使用します。そのため、Firebase の設定が必要です。Firebase プロジェクトの作成 (Create a Firebase Project)
任意の Google アカウントで Firebase サイト にアクセスし、プロジェクトを作成してください。Firestore の設定 (Firestore Configuration)
Firestore はビルドジョブの登録に使用されます。Firestore にアクセスしてプロビジョニングを行ってください。Firebase Functions の設定 (Firebase Functions Configuration)
OpenCI は Firebase Functions を使用します。Firebase Functions の使用には、Blaze プラン(有料)への登録が必要です。費用は月額数円程度です。Firebase の初期化 (Firebase Initialization)
Firebase プロジェクトの作成後、使用するプロジェクトを指定します。Firebase Functions のデプロイ (Firebase Functions Deployment)
OpenCI CLI リポジトリをクローンします。GitHub App の設定 (GitHub App Configuration)
OpenCI は、ビルドジョブの取得に GitHub App を使用します。GitHub App の作成 (Create a GitHub App)
GitHub App の作成 にアクセスし、GitHub App を作成してください。シークレットの設定 (Secret Configuration)
Firebase Functions で使用する GitHub App のシークレットを Google Cloud Secret Manager に登録します。/apps/firebase_functions/functions/
に移動してください。
CLIENT_ID
GitHub App の Client ID です。
CLIENT_SECRET
GitHub App の Client Secret です。生成する必要があります。
GITHUB_APP_ID
GITHUB_WEBHOOK_SECRET
GitHub から送信される Webhook の信頼性を検証するために使用される「ランダムな秘密の文字列」です。 次のように文字列を生成します。GITHUB_WEBHOOK_SECRET
に設定します。

GITHUB_PRIVATE_KEY
GitHub App の Private Key を作成します。これは次の手順でも使用します。
PRIVATE_KEY
に設定します。
本来であれば、Secret は firebase CLI で登録するべきですが、現在の CLI は .pem
ファイルの読み込み時にクラッシュします。そのため、GCP Secret Manager から GUI を使用して登録してください。
すべての Secret を設定したら、Firebase Functions をデプロイします。
gitHubAppFunction
の URL を、GitHub App の Webhook URL として指定します。
チェックボックスにチェックを入れるのを忘れないでください。

Callback URL
Callback URL は、Firebase Functions のgithubCallbackFunction
の URL です。
チェックボックスにチェックを入れるのを忘れないでください。
