コード管理
CI/CDの設定
概要

CI/CDの設定

CI/CDを使うと、PRやマージリクエスト(MR)の作成・マージをトリガーに、設定の差分検出や反映を自動化できます。コード管理は以下のCIサービスに対応しています。

  • GitHub Actions — 公式のComposite Action bm-actionでOIDC認証・bm sync実行・PRコメント投稿を一括で扱う
  • GitLab CIid_tokensでOIDC ID Tokenを取得し、bm syncを実行する

認証の考え方

どちらのCIでも、bm syncはOIDC ID Tokenを使ってベースマキナのサービスアカウントとして認証します。CI/CDが発行したID Tokenを環境変数BM_OIDC_TOKENに設定すると、bm syncがこれを参照します。

あらかじめサービスアカウントOIDC信頼ポリシーを設定し、CI/CDが発行するID TokenのIssuer / Audience / Bound Claimsが整合していることを確認してください。IssuerBound Claimsに設定する具体的な値はCIサービスごとに異なります。詳細は各ページをご参照ください。

bm syncは実行環境(GitHub Actions、GitLab CI、ローカル端末など)を自動で検出し、出力形式を切り替えます。GitHub ActionsおよびGitLab CI上では、変更の詳細を<details>タグで折り畳んでPRやMRのコメントに貼り付けやすいMarkdown形式で出力します。

認証先サービスアカウントの指定

BM_OIDC_TOKENに設定したID Tokenが複数のサービスアカウントの信頼ポリシーに合致しうる場合があります。このとき、環境変数BM_SERVICE_ACCOUNT_EMAILに認証先のサービスアカウントのメールアドレスを設定すると、どのサービスアカウントとして認証するかを指定できます。省略した場合は、合致した信頼ポリシーのうち最初の1件が選ばれます。複数のポリシーに合致しうる状況では意図しないサービスアカウントとして認証される可能性があるため、BM_SERVICE_ACCOUNT_EMAILを指定して曖昧さをなくすことを推奨します。