CLI

飞布 CLI 是一个命令行工具,可以帮助你创建一个新项目,管理元数据,应用迁移等。

本地安装

使用飞布 CLI 前,需要先完成安装。安装脚本如下:

如果你使用的是Windows系统,建议使用 Git bash 执行脚本,或者在MSYS2等环境下执行脚本,不支持在CMD或者PowerShell终端中执行

curl -fsSL https://www.fireboom.io/install.sh | bash -s project-name -t fb-init-todo

project-name为项目名称,可根据需求更改。

-t fb-init-todo为初始化模板,省略后默认创建空项目。

目前系统有如下模板:

执行上述命令后,将在执行目录下新建名称为project-name的文件夹,其目录结构如下:

project-name
├─ .env
├─ .gitignore
├─ .gitpod.yml
├─ README.md
├─ fireboom # CLI 命令
├─ custom-go # golang 钩子的目录 见下文
├─ custom-ts # typescript 钩子的目录 见下文
├─ exported 
│  └─ generated # 飞布引擎启动依赖的所有元数据,每次编译都会重新生成
│  └─ operations
│     └─ Todo
│        ├─ CreateOneTodo.graphql
│        ├─ DeleteManyTodo.graphql.off
│        ├─ DeleteOneTodo.graphql
│        ├─ GetManyTodo.graphql
│        ├─ GetOneTodo.graphql.off
│        ├─ GetTodoList.graphql.off
│        ├─ UpdateOneTodo.graphql
│        └─ UpdateTodoCompleted.graphql
├─ hook.sh
├─ log
├─ store # 元数据存储目录
│  ├─ hooks # 钩子相关配置
│  │  ├─ auth # 身份验证钩子配置
│  │  │  └─ mutatingPostAuthentication.config.json
│  │  ├─ customize # 自定义数据源钩子配置
│  │  │  └─ chatGPT.config.json
│  │  ├─ global # 全局钩子配置
│  │  ├─ hooks # 每个OPERATION 钩子配置
│  │  │  └─ Todo
│  │  │     └─ CreateOneTodo
│  │  │        └─ postResolve.config.json
│  │  └─ uploads
│  ├─ list # 列表数据
│  │  ├─ FbAuthentication # 身份验证配置
│  │  ├─ FbDataSource # 数据源配置
│  │  ├─ FbOperation # API配置
│  │  ├─ FbRole # 用户角色配置
│  │  └─ FbStorageBucket # 文件存储配置
│  └─ object # 对象数据
│     ├─ global_config.json
│     ├─ global_operation_config.json
│     ├─ global_system_config.json
│     └─ operations # 每个OPERATION的独立配置
│        └─ Todo
│           ├─ CreateOneTodo.json
│           ├─ DeleteManyTodo.json
│           ├─ DeleteOneTodo.json
│           ├─ GetManyTodo.json
│           ├─ GetOneTodo.json
│           ├─ GetTodoList.json
│           ├─ UpdateOneTodo.json
│           └─ UpdateTodoCompleted.json
├─ template # SDK模板目录
│  ├─ golang-server # golang 钩子模板
│  └─ node-server # TS 钩子模板
└─ upload # 上传文件目录
   ├─ db # sqlite数据库目录
   │  └─ todo.db
   ├─ graphql # graphql 数据源 schema 文件目录
   ├─ oas # rest api数据源 oas 文件目录
   │  ├─ example_rest.json
   │  └─ openapi.json
   ├─ oss 
   └─ swagger

如果你用golang开发钩子服务,则需要关注如下目录:

├─ custom-go
│  ├─ auth # 授权钩子目录
│  │  └─ mutatingPostAuthentication.go
│  ├─ customize # 自定义数据源钩子目录
│  │  └─ chatGPT.go
│  ├─ go.mod
│  ├─ go.sum
│  ├─ helix.html
│  ├─ hooks # 每个OPERATION 钩子对应目录
│  │  └─ Todo
│  │     └─ CreateOneTodo
│  │        └─ postResolve.go
│  ├─ main.go
│  ├─ pkg
│  ├─ scripts
│  │  ├─ install.sh
│  │  ├─ run-build.sh
│  │  ├─ run-dev.sh
│  │  └─ run-prod.sh
│  └─ generated # 生成的文件,每次配置修改触发编译后,都会覆盖该目录
│  └─ server
│     └─ start.go # 入口文件,每次配置修改触发编译后,都会覆盖该文件

如果你用TypeScript开发钩子服务,则需要关注如下目录:(对应文件的功能同上)

├─ custom-ts
│  ├─ README.md
│  ├─ auth
│  ├─ customize
│  ├─ global
│  ├─ hooks
│  │  └─ Todo
│  │     └─ CreateOneTodo
│  │        └─ postResolve.ts
│  ├─ nodemon.json
│  ├─ operations
│  ├─ operations.tsconfig.json
│  ├─ package.json
│  ├─ scripts
│  │  └─ buildOperations.ts
│  ├─ tsconfig.json
│  └─ generated # 生成的文件,每次配置修改触发编译后,都会覆盖该目录
│  ├─ fireboom.server.ts # 入口文件,每次配置修改触发编译后,都会覆盖该文件
│  └─ uploads

开发模式

project-name目录下执行fireboom dev命令,飞布将执行下述逻辑:

  • 启动控制台:启动控制台,默认访问地址为:http://localhost:9123

  • 实时编译API:检测配置变更,并将其实时编译为REST API。(编译流程如下)

飞布开发的API,默认访问地址为:http://localhost:9991。不同于控制台的访问地址!

出于安全考虑,飞布控制台(9123)和API(9991)用不同端口暴露。你可以通过防火墙设置安全策略,以保证安全,如对9991全部放行,对9123设置IP白名单放行。

在开发模式下,每次通过界面修改配置,都会触发核心引擎的实时编译流程。

API编译流程如下:

  1. 读取store目录下的配置,生成元数据到exported/generated目录

  2. 内省数据源,获得各数据源的graphql schema描述

  3. 根据启用的模板库,生成对应SDK到指定目录

  4. 重启核心引擎,暴露REST API 服务

生产模式

project-name目录下执行fireboom start命令,飞布将执行下述逻辑:

  • 启动控制台:启动控制台,但需要输入秘钥才能访问

  • 启动API:根据历史配置启动核心引擎,暴露 REST API 服务。(见上述步骤4)

生产模式下,通过界面修改配置,不会触发自动编译,以保证服务稳定。

构建命令

project-name目录下执行fireboom build命令,飞布将执行下述逻辑:

  • 配置生成,打包生成生产模式依赖的配置文件(见上述步骤1-3)

通常与fireboom start配套使用。

升级飞布

# 升级飞布命令行
# cd project-name
curl -fsSL https://www.fireboom.io/update.sh | bash

最后更新于