CI/CDの設定
GitHub Actionsを使って、PRの作成やマージをトリガーに設定の差分検出や反映を自動化できます。
公式のComposite Action basemachina/bm-action (opens in a new tab)を使うと、OIDC ID Tokenの取得・bm syncの実行・PRへのsticky-comment投稿を一括で行なえます。
概要
bm-actionは以下のような自動化に対応しています。
- PR作成時:
bm sync --dryで差分を検出し、PRにsticky-commentとして投稿する - PRマージ時:
bm syncで設定を開発環境に反映する - 環境同期時:
bm sync <環境ID>で環境間のバージョンと有効化設定を同期する
ブランチ構成や環境の対応は、プロジェクトの運用に合わせて自由に設定できます。具体的な設定例は運用例をご参照ください。
認証
bm-actionは内部でGitHub ActionsのOIDC ID Token (opens in a new tab)を取得し、ベースマキナのサービスアカウントとして認証します。事前に始め方でOIDC信頼ポリシーを設定し、CI/CDが発行するID TokenのIssuer / Audience / Bound Claimsが整合していることを確認してください。
audienceはbm-actionの入力必須項目です。OIDC信頼ポリシーで登録したAudienceと完全に一致する値を渡してください。企業アカウントごとに固有の値(例:https://your-tenant.example.com)を設定すると、漏洩したトークンが他の企業アカウントで悪用されるのを防げます。
ローカルからbm syncを実行する場合はbm loginでブラウザログインし、トークンが~/.basemachina/credentials.jsonに保存されます。CI/CD上は環境変数 BM_OIDC_TOKEN が設定されていれば、そちらが優先されます。
セットアップ
bm-actionを使ったワークフロー
bm-actionを使うと、以下のように数ステップでワークフローを構成できます。
name: BaseMachina Sync (dev)
on:
pull_request:
branches: [main]
push:
branches: [main]
permissions:
contents: read
id-token: write # OIDC ID Tokenの発行に必須
pull-requests: write # PRコメントの投稿に必要
packages: read # @basemachina/cli の取得に必要
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: "22"
- run: npm ci
- run: npx tsc --noEmit
- uses: basemachina/bm-action@v1
with:
audience: "https://basemachina.com"
with-disable: "true"npx tsc --noEmitで型チェックを通してからbm-actionを実行すると、設定ファイルやJavaScriptアクション、同じリポジトリで管理しているビューコードの型エラーを同期前に検出できます。
開発環境への反映時はwith-disable: "true"を指定すると、設定ファイルから削除されたコード管理のアクションが開発環境で無効化されます。削除を反映したい運用でのみ指定してください。環境IDを指定した同期では、同期元で無効化されているアクションも同期先へ無効状態として反映されます。詳しくはbm syncのオプションをご参照ください。
Web UIで作成した未取り込みのアクションは、ローカルでbm pullを実行してリポジトリに取り込み、通常のPRとしてレビューしてください。bm-actionはbm syncの実行を扱うため、bm pullによるファイル生成は開発者の作業として行ないます。
bm-actionの入力
| 入力 | 必須 | デフォルト | 説明 |
|---|---|---|---|
audience | はい | — | OIDC ID Tokenに要求するAudience。OIDC信頼ポリシーに登録したAudienceと完全一致させる |
environment-id | いいえ | "" | 同期先の環境ID。未指定の場合は開発環境への反映 |
from | いいえ | "" | 同期元の環境ID(環境ID指定時のみ使用可) |
working-directory | いいえ | "." | basemachina.config.tsが存在するディレクトリ |
dry | いいえ | "auto" | dry-run制御。autoはpull_requestイベント時に自動でdry-run、trueで常にdry、falseで常時適用 |
with-disable | いいえ | "false" | --with-disableを付与。開発環境への反映では設定ファイルに存在しないコード管理のアクションを無効化し、環境ID指定時は同期元の無効状態を同期先へ反映 |
dry: "auto"を指定すると、pull_requestイベントでは自動的にbm sync --dryが実行され、PRに差分が投稿されます。pushイベントではbm syncが実行され、変更が反映されます。
Permissions
呼び出し側のワークフローには、以下のpermissionsが必要です。
permissions:
contents: read # actions/checkout 用
id-token: write # OIDC ID Token の取得用
pull-requests: write # sticky-comment の投稿用
packages: read # @basemachina/cli の取得用動作の流れ
PR作成時の差分検出
- PRが作成されると、CIが
bm-actionを実行します。 dry: "auto"の場合、bm sync --dryが実行されて設定の差分が検出されます。- 差分の内容がPRにsticky-commentとして投稿されます。開発環境への反映では
## bm sync 実行後、以下の変更が適用されます、環境への同期では## bm sync 実行後、以下の変更が同期されますというヘッダーで表示されます。同じPRで何度CIが走っても、コメントが新規投稿されるのではなく1つのコメントが上書きされます。
これにより、マージ前に設定変更の影響を確認できます。
bm syncは実行環境を自動で検出し、GitHub
ActionsおよびGitLab CI上ではPRコメントに貼り付けやすいMarkdown形式(<details>タグで折り畳み可能)で出力します。
PRマージ時の反映
- PRがマージされると、CDが
bm-actionを実行します。 dry: "auto"の場合、pushイベントではbm syncが実行されます。- 設定の差分がベースマキナの開発環境に反映されます。
環境への同期
環境IDをenvironment-idに指定すると、bm sync <環境ID>が実行され、環境間のバージョンと有効化設定の同期が行なわれます。
- uses: basemachina/bm-action@v1
with:
audience: "https://basemachina.com"
environment-id: "${{ vars.BM_PRD_ENV_ID }}"