今後追加予定の機能
このページで紹介する機能はまだ開発に着手していない構想段階のものであり、仕様は大きく変更される可能性があります。実装時期は未定です。
コード管理で検討している今後の拡張機能を紹介します。
本番環境への反映後の修正
本番環境にデプロイしたあとで問題が発覚した際に、素早くロールバックや修正ができる仕組みを追加する予定です。
現状の課題
現状の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で修正する場合は、以下のような運用を想定しています。
- 本番デプロイ用のブランチ(
prdブランチなど)から、hotfix用のブランチを作成する - hotfixブランチで設定ファイルを修正する
- PRを作成すると、CIで
bm hotfix <本番環境のID> --dryが実行され、差分がPRにコメントされる - PRをマージすると、CIで
bm hotfix <本番環境のID>が実行され、本番環境に直接反映される - hotfixブランチの内容を
mainなどの開発ブランチにも取り込み、次回の通常デプロイと整合を取る
ビューも一緒に修正したい場合は、hotfixブランチでビューのコードも修正してマージします。
開発環境限定のアクション(draftActions)
開発途中のアクションや実験的なアクションを、開発環境では使いつつも、検証環境・本番環境にはまだ反映したくない場合があります。このような「本番に流したくないアクション」を明示的に分離するため、defineConfigにdraftActionsフィールドを追加する予定です。
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>時に、他環境では自動的に無効化される
仕様は今後検討予定です。