# flask-boot-cli

flask-boot-cli (opens new window) 是一个命令行脚手架工具,方便开发者进行工程的初始化。

使用方法如下

WARNING

如果你在外网环境,请打开 VPN 以使用!!

# 安装

pip install flask-boot-cli -i https://repo.datagrand.com/repository/py/simple --upgrade --no-cache-dir --force

# 运行

安装好后,可以输入下面命令进行模板项的初始化:

flask_boot

# 初始化

cli 工具在初次运行时会去检索 dg-sdk 的版本信息,因此第一次运行时可能会在下面的界面停留比较久。

init

FYI, flask-boot-cli 的一切缓存都会存储在 ~/.flask_boot_cli_cache

# 项目基本信息

在初次运行时,CLI 工具会检查是否有登录信息,如果没有则会出现登录的对话框,如果输入 y 的话则会出现一串链接,在浏览器打开后会被引导至钉钉进行登录。

login

登录后就能获取作者的信息。如果用户中心测试环境 (opens new window)不可用或者没绑定钉钉邮箱,则需要手动输入这些信息。

随后按照提示输入项目名和应用名。

author

项目基本信息配置说明如下:

配置项 默认值 备注
作者名称 作者邮箱会在最后被设置到项目 git 配置中,对应命令 git config user.username xxx
作者邮箱 作者邮箱会在最后被设置到项目 git 配置中,对应命令 git config user.email xxx
项目名称 项目名会作为工程目录的名称,比如 my-demo-app
应用名称 应用名会作为 Flask 的 import_name,同时也会作为项目源码的文件夹名,比如 my_demo_app

FYI: CLI 在接受回调时,会使用本地临时的端口 29766,请确保该端口没有被占用。

# 项目镜像信息

随后可以对构建的镜像进行配置,如果此时按 n 或者 回车 可以保持默认值。

默认值如下:

配置项 默认值 备注
docker 组名 为了能正常进行镜像打包,请手动填写 docker/utils.sh 中的 DOCKER_REPO 变量
harbor 地址 harbor.datagrand.com(新harbor) 新 harbor 目前的权限管控的比较严格,如果需要的话请手动选择旧 harbor
基础镜像版本 (当时的镜像的最新版本) 为了适配信创,只允许选择 2.x 版本的镜像
系统版本 openeuler 为了适配信创,只提供国产的 openeuler 和 kylinOS
Python 版本 3.8 只允许基础镜像中允许的Python版本,目前是37,38,39

如果按 y 的话可以进行配置:

docker-info

TIP

注意在选择的时候需要先按下空格进行选定在按回车进行确认

# 配置工具项

随后进行配置工具项的选择,此时按 n 或者 回车 都可以跳过(默认全部选否)。

tools-init

Flask-Boot 工具包含的选项说明如下

配置项 默认值 备注
是否需要示例代码 N 如果选则Y则会添加示例代码,示例代码会自动添加所需的依赖,如果示例代码的依赖版本和项目上所需要的冲突,可以自行修改,示例代码详见应用文件夹
是否需要开发工具 N 如果选择了此项则会在 requirements/requirement-dev.txt 中添加代码格式化和pre-commit、pytest等依赖,在 pyproject.toml、.pre-commit-config 文件中添加这些工具的默认配置,详见编码规范单元测试
是否需要ci模板 N 如果选择此项则会添加默认的 .gitlab-ci.yml 文件,详见CI
gitlab项目路径 N 如果填写此项,则Flask-Boot会在最后为 git 添加一个默认的 origin 源,对应的命令为 git remote add origin ...
需要注意的是,gitlab路径必须完整,即包含完整组、子组、项目名(项目名最好和基本信息中的项目名称保持一致,否则 clone 下来的文件名称将会发生变化)
比如 lushuyang/my-demo-app

# 项目依赖项

项目依赖项分为两个部分,如果不需要可以直接回车跳过。

TIP

注意在选择的时候需要先按下上下左右/jkhl移动光标,空格进行选定在按回车进行确认

  1. 初始化器文件

    这些文件会自动添加到 initialization/ 文件夹下的 xxx_process.py ,并在 initialization/__init__.py 中进行启用

    如下图

    process_py

    初始化器文件一般来说是 Flask-Boot 对开源工具、SDK 开箱即用的封装,支持通过统一配置进行配置的修改。

    初始化器可能彼此间间存在依赖,所以当你选择特定的初始化器时可能会自动选定其他初始化器。

    同理,初始化器也依赖 SDK,因此当你选定了初始化器,在后续选择 SDK 时所需要的 SDK 也会被默认勾选上。

    更多关于初始化器文件的信息详见initialization WSGI应用工厂一章

  2. 达观SDK

    SDK 会作为依赖项自动添加到 requirements/requirement.txt

    如下图

    sdk

    开发者可以根据实际情况在此项中选择开发需要的 SDK,也可以后面通过手动进行添加。

    需要注意的是,如果不选择版本信息,则只会在 requirement.txt 中添加 SDK 名称,这样每次安装都是最新版(不建议这么做)。

    另外,每个版本的 SDK 都有自己的 extras,对应到 requirement.txt 表现为 dg-sdk-rdb-client==1.1.5[mysql,db2],一般来说 extras 都和 SDK 特定版本有关,因此需要先选择版本后再选择 extras 。

    TIP

    SDK 中只会收录有基础平台部维护的基础组件,如果需要其他的开源组件,则需要手动添加到依赖中。

    如果选择的开源组件和达观SDK提供相同的功能,请优先考虑达观SDK(比如ORM框架)

# 错误排查

至此,所有的选项填写完毕,最后按下回车就可以进行模板生成了,如果生成失败请检查:

  1. 请勿使用 windows 机器运行脚本,脚本并没有在 windows 下进行测试,如果是 windows 开发机请使用 WSL 进行生成;
  2. 本机的公钥 ~/.ssh/id_rsa.pub 有没有被添加到 gitlab 的SSH Key (opens new window)中;
  3. 有没有访问Flask-Boot-Cookiecutter (opens new window)项目的权限(如果没有的话请联系卢书洋);
  4. 如果在外网环境下,请确保打开了 VPN 并关闭其他代理软件;

可以把项目运行起来来看看效果