# 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 的版本信息,因此第一次运行时可能会在下面的界面停留比较久。
FYI, flask-boot-cli 的一切缓存都会存储在
~/.flask_boot_cli_cache
中
# 项目基本信息
在初次运行时,CLI 工具会检查是否有登录信息,如果没有则会出现登录的对话框,如果输入 y 的话则会出现一串链接,在浏览器打开后会被引导至钉钉进行登录。
登录后就能获取作者的信息。如果用户中心测试环境 (opens new window)不可用或者没绑定钉钉邮箱,则需要手动输入这些信息。
随后按照提示输入项目名和应用名。
项目基本信息配置说明如下:
配置项 | 默认值 | 备注 |
---|---|---|
作者名称 | 无 | 作者邮箱会在最后被设置到项目 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 的话可以进行配置:
TIP
注意在选择的时候需要先按下空格进行选定在按回车进行确认
# 配置工具项
随后进行配置工具项的选择,此时按 n 或者 回车 都可以跳过(默认全部选否)。
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移动光标,空格进行选定在按回车进行确认
初始化器文件
这些文件会自动添加到
initialization/
文件夹下的xxx_process.py
,并在initialization/__init__.py
中进行启用如下图
初始化器文件一般来说是 Flask-Boot 对开源工具、SDK 开箱即用的封装,支持通过统一配置进行配置的修改。
初始化器可能彼此间间存在依赖,所以当你选择特定的初始化器时可能会自动选定其他初始化器。
同理,初始化器也依赖 SDK,因此当你选定了初始化器,在后续选择 SDK 时所需要的 SDK 也会被默认勾选上。
更多关于初始化器文件的信息详见initialization WSGI应用工厂一章
达观SDK
SDK 会作为依赖项自动添加到
requirements/requirement.txt
中如下图
开发者可以根据实际情况在此项中选择开发需要的 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框架)
# 错误排查
至此,所有的选项填写完毕,最后按下回车就可以进行模板生成了,如果生成失败请检查:
- 请勿使用 windows 机器运行脚本,脚本并没有在 windows 下进行测试,如果是 windows 开发机请使用 WSL 进行生成;
- 本机的公钥
~/.ssh/id_rsa.pub
有没有被添加到 gitlab 的SSH Key (opens new window)中; - 有没有访问Flask-Boot-Cookiecutter (opens new window)项目的权限(如果没有的话请联系卢书洋);
- 如果在外网环境下,请确保打开了 VPN 并关闭其他代理软件;
可以把项目运行起来来看看效果