mcpField
F
fusion-infra-cli

fusion-infra-cli

github.com/equinor数据与数据库491 次安装
代码仓库

关于 fusion-infra-cli

Fusion Infra CLI 是用于通过 finf 命令行工具配置和迁移 Fusion 服务数据库的技能,涵盖本地开发及 CI/CD 工作流,并支持 QA、生产和临时 PR 数据库。

主要功能

  1. 01根据 JSON 配置创建数据库
  2. 02从 SQL 文件或目录执行迁移
  3. 03支持 CI、QA、生产和 PR 环境
  4. 04将命令结果写入输出文件
  5. 05使用 DefaultAzureCredential 进行身份验证

适用场景

  1. 01为开发环境配置服务数据库
  2. 02在流水线中执行数据库迁移
  3. 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持续集成
fqaQA / 预生产
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