Skip to Content

GitLab CI

GitLab CIを使って、マージリクエスト(MR)の作成やマージをトリガーに設定の差分検出や反映を自動化できます。

GitHub Actions向けの公式Composite Action bm-actionに相当するツールは、GitLab向けには提供していません。GitLab CIでは、id_tokensキーワードでOIDC ID Tokenを取得し、環境変数BM_OIDC_TOKENを通じてbm syncを実行します。

認証

bm syncはOIDC ID Tokenを使ってベースマキナのサービスアカウントとして認証します。GitLab CIでは、.gitlab-ci.ymlのid_tokensキーワード(GitLab 15.7以降で利用可能)でID Tokenを発行します。

id_tokensで発行したID Tokenは、指定した名前の環境変数としてジョブに渡されます。環境変数名をBM_OIDC_TOKENにすると、bm syncがこの環境変数を自動で参照します。

あらかじめサービスアカウントにOIDC信頼ポリシーを設定し、GitLabが発行するID TokenのIssuer / Audience / Bound Claimsが整合していることを確認してください。Bound Claimsに指定するclaimの選び方はBound Claimsの選び方をご参照ください。

項目設定値
Issuerhttps://gitlab.com(GitLab.comの場合。セルフマネージド版はGitLabインスタンスのURL)
Audienceid_tokensのaudに指定した値(例:https://<your-subdomain>.basemachina.com)
Bound Claims呼び出し元のプロジェクト・ブランチを特定するclaim(例:key: sub, pattern: project_path:my-group/my-project:ref_type:branch:ref:main)

漏洩したトークンが他の企業アカウントで悪用されるのを防ぐため、audは企業アカウントごとに固有の値(例:https://<your-subdomain>.basemachina.com)を設定することを推奨します。OIDC信頼ポリシーに登録したAudienceと完全に一致する値を指定してください。OIDC信頼ポリシーの設定フォームでは、ご利用の企業アカウントのsubdomainを使った値が初期表示されます。

セットアップ

.gitlab-ci.ymlに、MR作成時に差分を検出するジョブと、デフォルトブランチへのマージ時に設定を反映するジョブを定義します。

default: image: node:22 stages: - sync # MR作成時に差分を検出する(ドライラン) bm_sync_dry: stage: sync rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" id_tokens: BM_OIDC_TOKEN: aud: "https://<your-subdomain>.basemachina.com" script: - npm ci - npx tsc --noEmit - npx bm sync --dry # デフォルトブランチへのマージ時に開発環境へ反映する bm_sync: stage: sync rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH id_tokens: BM_OIDC_TOKEN: aud: "https://<your-subdomain>.basemachina.com" script: - npm ci - npx tsc --noEmit - npx bm sync

npx tsc --noEmitで型チェックを通してからbm syncを実行すると、設定ファイルやJavaScriptアクションの型エラーを同期前に検出できます。同じリポジトリで管理しているビューのコード(コード取得設定)も検査したい場合は、tsconfig.jsonのincludeにビューのファイルを追加してください。設定方法はコード取得設定との連携をご参照ください。

開発環境への反映時に設定ファイルから削除されたコード管理のアクション・ビューを無効化したい場合は、npx bm sync --with-disableを指定します。--dryや--with-disableなどのオプションの詳細はbm syncをご参照ください。

Web UIで作成した未取り込みのアクション・ビューは、ローカルでbm pullを実行してリポジトリに取り込み、通常のMRとしてレビューしてください。

差分の確認

bm syncは実行環境を自動的に検出します。GitLab CI上では、折り畳み可能なMarkdown(<details>タグ)として差分を出力します。bm sync --dryの実行結果はジョブのログから確認できます。

MRのコメントとして差分を表示したい場合は、bm sync --dryの出力をglab CLIやGitLab APIでMRのノートに投稿してください。GitHub Actionsのbm-actionが担うsticky-comment(同じコメントの上書き投稿)に相当する処理は、GitLab向けには提供していません。

環境への同期

開発環境から検証環境や本番環境へ同期する場合は、npx bm sync <環境ID>を実行します。環境IDはGitLab CI/CD変数 などで管理することを推奨します。

script: - npm ci - npx bm sync "$BM_PRD_ENV_ID"

環境間の同期では、同期元で無効化されているアクション・ビューも同期先へ無効状態として反映されます。同期先の指定方法やオプションの詳細はbm syncをご参照ください。