CI/CDの設定
CI/CDを使うと、PRやマージリクエスト(MR)の作成・マージをトリガーに、設定の差分検出や反映を自動化できます。コード管理は以下のCIサービスに対応しています。
- GitHub Actions — 公式のComposite Action
bm-actionでOIDC認証・bm sync実行・PRコメント投稿を一括で扱う - GitLab CI —
id_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が整合していることを確認してください。IssuerやBound 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を指定して曖昧さをなくすことを推奨します。