跳到主要内容

后端代码发布

使用研发工作台开发、测试完成后,发布到线上环境

0.背景:

以下文档中使用到的场景示例(具体项目及配置以实际情况为准):

1.研发工作台项目名称为 - 测试部署项目: export_to_json_project_new

2.为测试部署项目提供环境地址服务的工程信息如下:

工程名:脚手架项目manatee-demo

连接的数据库为:数据库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.发布管理 deploy_management.jpg

2.自定义导出sql deploy_list.jpg

3.导出 deploy_sql_export.jpg

选择类型和要导出的接口,点击导出,将以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参数值获取方式详见下图

打开项目中任一接口,点击去开发按钮跳转到接口开发界面,如:

export_to_json_from_db

2.请求接口

浏览器里请求相应接口

http://127.0.0.1:${服务端口}/biz/modularity/project0/moduleJsonGenerationForWangfa?projectId=${研发工作台项目id}

http://127.0.0.1:8080/biz/modularity/project0/moduleJsonGenerationForWangfa?projectId=35

导出产物:

导出产物在manatee-demo/tmp目录下,generationTemp.zip,如下图

export_to_json_from_db_result

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下

resource_json

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,执行以上操作 mvn_clean_package

示例产物为: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 &