关于 fusion-infra-cli
Fusion Infra CLI 是用于通过 finf 命令行工具配置和迁移 Fusion 服务数据库的技能,涵盖本地开发及 CI/CD 工作流,并支持 QA、生产和临时 PR 数据库。
主要功能
- 01根据 JSON 配置创建数据库
- 02从 SQL 文件或目录执行迁移
- 03支持 CI、QA、生产和 PR 环境
- 04将命令结果写入输出文件
- 05使用 DefaultAzureCredential 进行身份验证
适用场景
- 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 流水线中操作。
常见触发场景:
- “为 context 服务预配数据库”
- “在 QA 数据库上运行迁移”
- “为此拉取请求设置 PR 数据库”
- “数据库预配配置是什么样的?”
- “流水线在数据库预配步骤失败了”
- “创建一个从 CI 复制数据的 PR 数据库”
不适用场景
- 应用代码或服务变更——请使用服务仓库
- 角色或权限管理——请使用
fusion-roles-cli - 数据库以外的基础设施(网络、存储等)
- Kubernetes 或容器管理
前置条件
将 finf 安装为 .NET 全局工具:
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传入 - 对于非 PR 数据库,
database delete操作不可逆——运行前请与用户确认
评论
支持 Markdown