后端代码发布
使用研发工作台开发、测试完成后,发布到线上环境
0.背景:
以下文档中使用到的场景示例(具体项目及配置以实际情况为准):
1.研发工作台项目名称为 - 测试部署项目:
2.为测试部署项目提供环境地址服务的工程信息如下:
连接的数据库为:数据库A
3.引擎包 使用4.2.1.2及以上版本
部署分为创建数据库和后端应用部署两步,详见以下描述:
1.创建数据库
数据库中的表分为两类:
1.低代码配置表:lowcode_base_module和lowcode_project_conf
2.业务表:为完成相关业务创建的表,比如t_teacher、t_student
以下关于数据库的操作,仅针对低代码配置表
1.1.方式一:导出DDL语句
将导出的DDL语句在目标数据库上执行即可
方法一:使用MySQL客户端工具或mysqldump命令
常用客户端工具:MySQL Workbench、Navicat、DBeaver、SQLyog等
mysqldump命令:
mysqldump -uroot -prootadmin --databases manatee --tables lowcode_base_module lowcode_project_conf > /tmp/manatee.sql
方法二:使用研发工作台
建表语句:
CREATE TABLE `lowcode_project_conf` (
`project_id` bigint NOT NULL DEFAULT '0' COMMENT '项目id',
`back_structure` varchar(256) NOT NULL DEFAULT '' COMMENT '中文名称',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`conf` varchar(512) NOT NULL DEFAULT '' COMMENT '项目全局配置',
`response_time` int NOT NULL DEFAULT '10' COMMENT '响应时间',
PRIMARY KEY (`project_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `lowcode_base_module` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '接口id',
`module_code` varchar(100) NOT NULL DEFAULT '' COMMENT '英文名称',
`module_name` varchar(100) NOT NULL DEFAULT '' COMMENT 'api名称',
`module_description` varchar(255) NOT NULL DEFAULT '' COMMENT '接口描述',
`module_version` varchar(16) NOT NULL DEFAULT 'v1.0.0' COMMENT '版本',
`env` varchar(16) NOT NULL DEFAULT '' COMMENT '环境',
`package_id` bigint NOT NULL DEFAULT '0' COMMENT '包id',
`project_id` bigint NOT NULL DEFAULT '0' COMMENT '项目id\\n0 代表系统',
`module_type` tinyint NOT NULL DEFAULT '1' COMMENT '接口模块 1 , 计算模块 2 , 子模块 0 , 抽象模块 3',
`request_mode` varchar(16) NOT NULL DEFAULT 'POST' COMMENT '请求方式:GET/POST',
`is_login` tinyint NOT NULL DEFAULT '0' COMMENT '是否需要登录,需要 0 不需要1',
`process_conf` text COMMENT '流程配置',
`valid` tinyint NOT NULL DEFAULT '0' COMMENT '状态\n-1 删除 \n0 正常',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`params` text COMMENT '参数',
`mock` text COMMENT 'mock返回',
`chart_url` varchar(255) NOT NULL DEFAULT '' COMMENT '流程图url',
`interrupt` text COMMENT '中断配置',
`create_user` bigint NOT NULL DEFAULT '0' COMMENT '创建用户id',
`modified_user` bigint NOT NULL DEFAULT '0' COMMENT '更新用户id',
`system_version` varchar(16) NOT NULL DEFAULT '' COMMENT '接口版本',
`conf` text COMMENT '接口配置',
`sort` int NOT NULL DEFAULT '1' COMMENT '排序',
PRIMARY KEY (`id`) USING BTREE,
KEY `valid-projectId-code` (`valid`,`project_id`,`module_code`) USING BTREE COMMENT '单个接口查询'
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='积木模块';
导出DML语句:
1.发布管理
2.自定义导出sql
3.导出
选择类型和要导出的接口,点击导出,将以sql文件形式导出
如:测试部署项目发布sql_insert_202403271039.sql、测试部署项目发布sql_update_202403271039.sql
注意:首次部署可以直接选择insert;后面更新根据具体情况选择导出的类型update、replaceInto
将建表语句和导出的sql语句一起在目标数据库执行即可
1.2.方式二:导出json文件
将低代码配置表的数据,以json文件的形式导出。将其再导入到具体项目里,请求时不再从数据库读取相关接口配置,而是读取相应json文件
注意:
application.yml文件中,仍需要配置数据源,因为业务表仍需用到数据库
1.引入依赖
manatee-demo中引入导出代码的配置
<dependency>
<groupId>com.manatee.manatee-lowcode</groupId>
<artifactId>lowcode-generation</artifactId>
<version>${lowcode.version}</version>
</dependency>
2.启动脚手架项目manatee-demo
注意:
在manatee-demo/src/main/resources/applicatioin.yml中修改数据库配置为数据库A
3.导出json文件
以json文件形式,导出数据库A表中的数据
1.对应的表为lowcode_base_module和lowcode_project_conf
2.接口要为已发布状态
暂时通过接口导出,后续提供可视化操作
1.以下步骤里的projectId参数值获取方式详见下图
打开项目中任一接口,点击去开发按钮跳转到接口开发界面,如:
2.请求接口
浏览器里请求相应接口
如 http://127.0.0.1:8080/biz/modularity/project0/moduleJsonGenerationForWangfa?projectId=35
导出产物:
导出产物在manatee-demo/tmp目录下,generationTemp.zip,如下图
4.将json文件导入到目标项目工程
1.配置文件中添加配置项
如manatee-demo/src/main/resources/applicatioin.yml中添加
manatee:
config-data-source-type: file
2.项目中导入json文件
将generationTemp.zip解压,将解压后的两个文件夹及其内json文件导入到manatee-demo/src/main/resources下
3.POM文件中添加配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/*.json</include>
<include>**/*.yml</include>
</includes>
</resource>
</resources>
</build>
2.后端应用部署
以下仅为简单示例,具体发布流程请遵循公司内相应运维规范
2.1.打包
进入manatee-demo根目录,执行mvn clean package
或使用IntelliJ IDEA,执行以上操作
示例产物为:manatee-demo-0.0.1-SNAPSHOT.jar
2.2.上传到应用服务器
通过SCP命令或相关工具,如Xshell的Xftp、SFTP等同类软件
2.3.启动应用
nohub java -jar manatee-demo-0.0.1-SNAPSHOT.jar > output.log &