fusion-infra-cli について
Fusion Infra CLI は、finf コマンドラインツールで Fusion サービスのデータベースを構築・移行するためのスキルです。ローカル開発と CI/CD に対応し、QA、本番、プルリクエスト用の一時データベースを扱います。
主な機能
- 01JSON 設定からデータベースを構築
- 02SQL ファイルまたはディレクトリから移行を実行
- 03CI、QA、本番、PR 環境に対応
- 04コマンド結果を出力ファイルに保存
- 05DefaultAzureCredential による認証
活用シーン
- 01開発用サービスデータベースの構築
- 02パイプラインでのデータベース移行
- 03プルリクエスト用一時データベースの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ equinor/ fusion-skills --skill fusion-infra-cliインストール後、Claude Code で/fusion-infra-cliを入力して読み込まれたか確認します。
同梱ファイルCHANGELOG.mdreferences/db-config-schema.md
詳細
Fusion Infra CLI
使用する場面
Fusion サービスのデータベースをプロビジョニングまたは移行する必要がある場合に使用します。開発中のローカル環境、または CI/CD パイプライン内で利用できます。
主な使用例:
- 「コンテキストサービスのデータベースをプロビジョニングして」
- 「QA データベースでマイグレーションを実行して」
- 「このプルリクエスト用の PR データベースをセットアップして」
- 「データベースのプロビジョニング設定はどのような形式ですか?」
- 「パイプラインのデータベースプロビジョニング手順で失敗します」
- 「CI からコピーする PR データベースを作成して」
使用しない場面
- アプリケーションコードやサービスの変更 — サービスリポジトリを使用してください
- ロールや権限の管理 —
fusion-roles-cliを使用してください - データベース以外のインフラ(ネットワーク、ストレージなど)
- Kubernetes やコンテナーの管理
前提条件
.NET グローバルツールとして finf をインストールします:
dotnet tool install --global \
--add-source "https://statoil-proview.pkgs.visualstudio.com/Fusion%20-%20Packages/_packaging/Fusion-Public/nuget/v3/index.json" \
Fusion.Infra.Cli
最新バージョンに更新します:
dotnet tool update --global \
--add-source "https://statoil-proview.pkgs.visualstudio.com/Fusion%20-%20Packages/_packaging/Fusion-Public/nuget/v3/index.json" \
Fusion.Infra.Cli
認証には DefaultAzureCredential が自動的に使用されます(az login セッションが取得されます)。上書きするには -t <token> を渡します。
基本的なワークフロー — データベースのプロビジョニング
1. プロビジョニング設定ファイルを作成する
設定ファイルでデータベースのリソースを定義します。最小限の例(db-config.json):
{
"name": "my-service",
"environment": "ci"
}
SQL 権限を含む完全な設定:
{
"name": "my-service",
"environment": "fqa",
"sqlPermission": {
"owners": [
{ "clientId": "<app-registration-client-id>" }
],
"contributors": [
{ "clientId": "<app-registration-client-id>" }
]
}
}
完全なスキーマについては、references/db-config-schema.md を参照してください。
2. プロビジョニングを実行する
CI/非本番環境:
finf database provision -f db-config.json -e ci \
--sql-owner-client-id <client-id> \
--sql-contributor-client-id <client-id> \
-o response.json --verbose
QA:
finf database provision -f db-config.json -e fqa \
--sql-owner-client-id <client-id> \
--sql-contributor-client-id <client-id> \
-o response.json --verbose
本番環境(--production フラグを追加):
finf database provision -f db-config.json -e fprd \
--production \
--sql-owner-client-id <client-id> \
--sql-contributor-client-id <client-id> \
-o response.json --verbose
プルリクエスト(一時的なデータベース。CI からコピーします):
finf database provision -f db-config.json \
-e pr -pr <pr-number> -ghr "equinor/my-repo" -c ci \
--sql-owner-client-id <client-id> \
--sql-contributor-client-id <client-id> \
--timeout 500 -o response.json --verbose
3. マイグレーションを実行する
プロビジョニング後、SQL マイグレーションを適用します:
# Non-production
finf database migrate -d sql-myservice-fqa -m migrations/ \
-o migrations.json --verbose
# Production
finf database migrate -d sql-myservice-fprd -m migrations/ \
--production -o migrations.json --verbose
-m フラグには、.sql ファイルが格納されたディレクトリ、または単一の .sql ファイルを指定できます。
環境
| キー | 用途 |
|---|---|
ci | 継続的インテグレーション |
fqa | QA/本番前環境 |
fprd | 本番環境(--production フラグが必要) |
pr | プルリクエスト用の一時環境(-pr と -ghr が必要) |
詳細リファレンス
すべてのフラグの詳細を確認するには、次を実行します:
finf database provision --help
finf database migrate --help
または、ソースドキュメントを参照してください:
安全性
- 診断情報を取得するため、パイプラインでは必ず
--verboseを使用してください - パイプラインの手順で結果を参照できるよう、必ず
-o response.jsonで出力を保存してください --productionフラグは明示的な安全策です。fprdのプロビジョニングでは必ず指定してください- パイプラインの YAML に生のトークンを渡さないでください。シークレット変数を使用し、
-t経由で渡してください database deleteは PR 以外のデータベースに対して取り消しできません。実行前にユーザーに確認してください