开发
本节介绍开发项目相关的资料。
Repo结构
本项目采用monorepo结构,一个repo包含了整个系统的所有代码和文档。
其中:
protos
:包含了整个系统所有的proto文件dockerfiles
:包含整个系统所有的dockerfile文件dev
:开发相关文件apps
:所有子系统libs
:公共库docs
:文档项目
开始开发
准备主机环境
要开发OpenSCOW,你的主机环境需要满足以下要求:
- Linux/macOS/Windows
- 安装好docker和docker compose
- Windows和macOS用户推荐使用Docker Desktop
推荐:Dev Container
本项目配置了VSCode Dev Container,您可以使用.devcontainer
下的配置自动从GitHub打开一个Codespace或者使用VSCode生成一个开发用的容器。具体如何使用,请参考上述Dev Container的文档。
本地开发
如果您不使用Dev Container,也可以在本地构建开发环境。
请确保主机的~/.ssh
目录下存在SSH RSA格式公私钥文件(id_rsa
和id_rsa.pub
)。如果不存在,请运行ssh-keygen
生成。
请安装以下软件:
无需手动安装node。volta将会在第一次运行npm或者node命令时自动安装对应工具的对应版本。
我们推荐使用Visual Studio Code作为开发环境。仓库中有.vscode目录用于预先配置部分VSCode的开发环境。
要开始开发:
# clone仓库
git clone https://github.com/PKUHPC/OpenSCOW
cd OpenSCOW
# 如果是standalone安装,或者在pnpm i的时候遇到node-gyp ENOET错误,运行以下全局安装node-gyp。只用安装一次即可。
pnpm install -g node-gyp
# 在根目录下,安装依赖
pnpm i
# 准备开发需要的库和代码:构建依赖库,生成各种代码
pnpm prepareDev
apps下的所有项目均可以使用dev
脚本以开发环境运行。
# 以开发环境运行门户前端
cd apps/portal-web
pnpm dev
以开发环境运行文档项目
cd docs
pnpm start
其他常用命令:
# 编译libs目录下的库
pnpm build:libs
# 修改proto文件后,重新生成proto对应的ts文件
pnpm build:protos
# 在某一个具体项目下运行特定的脚本
# {项目名}请替换为项目package.json中name字段的@scow/后面的内容
# 项目可以运行什么脚本请查看项目package.json中的scripts
pnpm --filter {项目名} build
# 如运行@scow/config项目的build命令(编译),则运行
# 要想使用任何libs项目下的修改,必须先运行对应的build命令编译好
pnpm --filter config build
# 在某个项目下运行特定的脚本也可以使用cd进入项目后运行pnpm对应命令
cd config
pnpm build
测试开发环境
我们使用docker搭建了一套简单的开发环境,主要用于运行项目的单元和集成测试。具体开发环境请参考docker-compose.dev.yml。
开发环境包括
- 可以通过
3306
端口连接的的MySQL8数据库- root密码为dev/.env.dev中的
MYSQL_ROOT_PASSWORD
,为mysqlrootpassword
- root密码为dev/.env.dev中的
- 可以通过
6379
端口连接的redis:alpine - 可以通过
3307