開発中の機能
コード管理
今後追加予定の機能

今後追加予定の機能

⚠️

このページで紹介する機能はまだ開発に着手していない構想段階のものであり、仕様は大きく変更される可能性があります。実装時期は未定です。

コード管理で検討している今後の拡張機能を紹介します。

本番環境への反映後の修正

本番環境にデプロイしたあとで問題が発覚した際に、素早くロールバックや修正ができる仕組みを追加する予定です。

現状の課題

現状のbm syncでは、本番環境への反映後に問題が起きた場合、以下の点で対応が難しい状況です。

  • 特定のアクションのバージョンを戻したい場合、Web UIで1つずつ手作業で戻す必要がある
  • 本番環境のバージョンから特定のアクションだけを修正してデプロイする手段がない

これらを解消するため、ロールバックhotfixの2つの仕組みを追加する予定です。

ロールバック(bm rollback

過去のデプロイで適用されたバージョンと有効化設定に、指定した環境を巻き戻すコマンドを追加する予定です。bm sync <環境ID>で実施したデプロイを履歴として保持し、その履歴を参照してデプロイ単位でロールバックします。bm sync <環境ID>で同時に更新されたアクションを、まとめて1つ前の状態に戻せます。

bm rollbackが扱うのはデプロイ単位の巻き戻しのみです。特定の1アクションだけを以前のバージョンに戻したい場合は、現状と同様にWeb UIの「バージョン/有効化設定画面」から個別に切り替えてください。

ビューも一緒に戻したい場合

ビュー(コード取得設定で管理しているコード)も併せて戻したい場合は、本番デプロイ用のブランチ(prdブランチなど)からビューを修正してマージする運用を想定しています。

このとき、アクションのロールバックとビューの差し戻しを独立して扱えるよう、CI/CD側で以下のような調整が必要になる想定です。

  • ビューのコードに変更がある場合のみ、ビューのビルド・アップロードが実行されるようにする
  • bm sync <環境ID>は、検証環境ブランチからのマージ経由でのみ実行されるようにする

hotfix(bm hotfix

本番環境など特定の環境のアクションを、その環境だけで直接修正するコマンドを追加する予定です。通常のbm syncのように開発環境を経由せずに、指定した環境に直接新しいバージョンと有効化設定を作成して紐づけます。

bm syncとの違い

コマンド比較対象反映先
bm sync設定ファイル ↔ 開発環境開発環境
bm hotfix設定ファイル ↔ 指定環境指定した環境のみ

bm syncは常に開発環境との差分を起点にしますが、bm hotfixは指定した環境の現在の設定内容と、設定ファイルの差分を比較します。

想定する挙動

設定ファイルと、指定した環境の状態の組み合わせに応じて、以下のように動作する予定です。

設定ファイル指定環境の状態動作
存在する有効新しいバージョンを作成し、その環境のhotfixバージョンとして紐づける
存在する無効その環境で再有効化する(差分があれば新しいバージョンも作成して紐づける)
存在するアクション自体が存在しないエラー(hotfixでの新規作成は禁止)
存在しない存在するその環境でアクションを無効化する

アクションをその環境にしか存在しない状態で新規作成することは、他環境との乖離が大きくなるため禁止します。新規アクションの作成は、通常のbm syncフローで全環境に展開する必要があります。

開発環境は通常のbm syncで管理される起点のため、bm hotfixの対象環境には指定できない想定です。開発環境への反映は引き続きbm syncを使用します。

想定する運用フロー

本番環境で発生した問題をbm hotfixで修正する場合は、以下のような運用を想定しています。

  1. 本番デプロイ用のブランチ(prdブランチなど)から、hotfix用のブランチを作成する
  2. hotfixブランチで設定ファイルを修正する
  3. PRを作成すると、CIでbm hotfix <本番環境のID> --dryが実行され、差分がPRにコメントされる
  4. PRをマージすると、CIでbm hotfix <本番環境のID>が実行され、本番環境に直接反映される
  5. hotfixブランチの内容をmainなどの開発ブランチにも取り込み、次回の通常デプロイと整合を取る

ビューも一緒に修正したい場合は、hotfixブランチでビューのコードも修正してマージします。

開発環境限定のアクション(draftActions

開発途中のアクションや実験的なアクションを、開発環境では使いつつも、検証環境・本番環境にはまだ反映したくない場合があります。このような「本番に流したくないアクション」を明示的に分離するため、defineConfigdraftActionsフィールドを追加する予定です。

import { defineConfig } from "@basemachina/sdk";
import { stableAction } from "./actions/stable-action";
import { experimentalAction } from "./actions/experimental-action";
 
export default defineConfig({
  project: { id: "your-project-id" },
  actions: [stableAction],
  draftActions: [experimentalAction],
});

想定する挙動は以下の通りです。

フィールドbm sync(開発環境への反映)bm sync <環境ID>(他環境への同期)
actions反映される反映される
draftActions反映される対象外(同期されない)

これにより、「開発環境でのみ動作確認したいアクション」を設定ファイル上で明示的に管理できるようにすることを検討しています。

既存環境に存在するアクションをdraftActionsに移した場合

すでに検証環境や本番環境に反映済みのアクションを、設定ファイルでactionsからdraftActionsに移動する運用も想定されます。この場合の挙動は以下のいずれかを検討しています。

  • bm sync <環境ID>の対象外となり、既存環境では無変更のまま残る
  • bm sync <環境ID>時に、他環境では自動的に無効化される

仕様は今後検討予定です。