升级服务清单
以下服务或组件升级至 0.10.0.RELEASE
组件
- hzero-parent
- hzero-starter-parent
- hzero-boot-parent
- hzero-plugin-parent (op/saas)
- hzero-gateway-helper-api
- hzero-gateway-helper-default
服务
-
hzero-register
-
hzero-config (op/saas)
-
hzero-gateway
-
hzero-asgard
-
hzero-swagger
-
hzero-oauth
-
hzero-iam (op/saas)
-
hzero-front
-
hzero-platform (op/saas)
-
hzero-file (op/saas)
-
hzero-message (op/saas)
-
hzero-portal (op/saas)
-
hzero-report (op/saas)
-
hzero-scheduler (op/saas)
-
hzero-import (op/saas)
-
hzero-workflow
-
hzero-workflow-editor
-
hzero-workflow-plus (新版工作流)
服务/组件升级
-
修改 pom.xml,如果 parent 依赖的
hzero-parent
,需修改版本号为0.10.0.RELEASE
;如果是自建的 parent 项目,需将其中的 hzero 服务/组件的版本号修改为0.10.0.RELEASE
<parent> <groupId>org.hzero</groupId> <artifactId>hzero-parent</artifactId> <version>0.10.0.RELEASE</version> </parent>
-
修改依赖的服务版本号
<!-- SAAS 版本 --> <dependency> <groupId>org.hzero</groupId> <artifactId>hzero-xxx-saas</artifactId> <version>0.10.0.RELEASE</version> </dependency> <!-- OP 版本 --> <dependency> <groupId>org.hzero</groupId> <artifactId>hzero-xxx</artifactId> <version>0.10.0.RELEASE</version> </dependency>
-
将服务 jar 包中的配置
application.yml
、bootstrap.yml
拷贝出来覆盖src/main/resources
目录下的配置文件,再更新自己特定的配置 -
对比服务启动类,除一些基础服务需特殊的配置外,其它服务都是标准的结构
启动类标准结构
@EnableHZeroXxxx @EnableDiscoveryClient @SpringBootApplication public class XxxxApplication { public static void main(String[] args) { SpringApplication.run(XxxxApplication.class, args); } }
hzero-gateway
需在 SpringBootApplication 注解中排除 Security 的自动化配置
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
hzero-config
需在 SpringBootApplication 注解中排除 ConfigServer 的自动化配置
@SpringBootApplication(exclude = ConfigServerAutoConfiguration.class)
hzero-config
、hzero-swagger
、hzero-iam
、hzero-asgard
由于在新版本中将监听服务注册做成通用的组件,从
0.10.0
之前的版本升级时,需要去掉启动类中的EurekaEventHandler.getInstance().init();
代码。
网关服务和鉴权
-
如果需要对鉴权逻辑进行整体改造,可以通过实现
org.hzero.gateway.helper.api.AuthenticationHelper
接口来完全定制化鉴权的部分。 -
如果仅需要对现有鉴权逻辑新增逻辑,可以通过实现
org.hzero.gateway.helper.api.HelperFilter
接口来新增鉴权逻辑。 -
产品或项目上完全可以自定义鉴权逻辑或向鉴权链中加入特定的鉴权。
-
由于合并了 gateway-helper,配置也做了合并,可以直接复制 jar 包中的 application.yml 配置文件,或加入如下配置
hzero: gateway: filter: collect-span: # 是否统计API访问情况 enabled: ${HZERO_GATEWAY_FILTER_COLLECT_SPAN_ENABLED:false} common-request: # 组织级API是否必须检查组织参数 check-organization: ${HZERO_GATEWAY_FILTER_COMMON_REQUEST_CHECK_ORGANIZATION:true} # 项目级API是否必须检查项目参数 check-project: ${HZERO_GATEWAY_FILTER_COMMON_REQUEST_CHECK_PROJECT:true} # 是否启用标准的权限检查 enable: ${HZERO_GATEWAY_FILTER_COMMON_REQUEST_ENABLE:true} helper: enabled: true jwt-key: choerodon # jwt的密钥 # 是否打印 JWT enabled-jwt-log: ${HZERO_GATEWAY_HELPER_ENABLE_JWT_LOG:false} allowed: origin: '*' helper-skip-paths: - /oauth/** - /swagger/swagger-ui.html - /swagger/swagger-resources/** - /swagger/webjars/** - /swagger/docs/** - /hwfe/** - /hwfp/editor-app/** - /hwfp/lib/** - /hwfp/activiti-editor - /hwfp-*/editor-app/** - /hwfp-*/lib/** - /hwfp-*/activiti-editor - /hmsg/sock-js/** permission: enabled: true # 是否开启权限校验 skip-paths: /swagger/docs/**, /**/skip/**, /oauth/**, /prometheus, /actuator/prometheus, /actuator/health, /actuator/env, /actuator/metrics, /favicon.ico # 跳过权限校验路径 cache-seconds: 600 # 请求地址和对应的权限缓存时间 cache-size: 3000 # 请求地址和对应的权限缓存大小 oauth-info-uri: ${SECURITY_OAUTH2_USER_INFO_URI:http://hzero-oauth/oauth/api/user} # oauth获取userDetail地址
注册中心客户端
不同注册中心,对应的客户端依赖不同,各产品或项目需根据自己使用的注册中心在服务中引入对应的客户端依赖。具体可参考版本更新中的注册中心一节:v0.10.0 版本更新
表结构升级
-
从 gitlab 上下载
0.10.0.RELEASE
的数据库脚本和Excel期初数据ssh: ~ git clone git@code.choerodon.com.cn:hzero-hzero/hzero-resource.git https: ~ git clone https://code.choerodon.com.cn/hzero-hzero/hzero-resource.git ~ git checkout 0.10.0.RELEASE
-
请先备份每个库的表结构及数据,便于出问题之后恢复
-
修改
database-init.sh
脚本- 修改 service,指定更新目录,与 groovy 下的目录对应即可
- 修改 数据库 url、username、password
service=hzero_platform schema=$service dir=groovy/$service java -Dspring.datasource.url="jdbc:mysql://db.hzero.org:3306/$schema?useUnicode=true&characterEncoding=utf-8&useSSL=false" \ -Dspring.datasource.username=root \ -Dspring.datasource.password=root \ -Ddata.drop=false \ -Ddata.init=true \ -Ddata.dir=$dir \ -Ddata.update.exclusion=iam_role \ -jar tool-jar/choerodon-tool-liquibase.jar
-
依次更改每个目录,执行此脚本,升级表结构
数据升级
-
在 表结构更新 的基础上,同样修改
database-init.sh
脚本- 修改 service,指定更新目录,与
init-data
下的目录对应即可 - 修改 数据库 url、username、password
- dir 改成
init-data/$service
- 修改
-Ddata.update.exclusion
指定要排除的表或表字段
service=hzero_platform schema=$service dir=init-data/$service java -Dspring.datasource.url="jdbc:mysql://db.hzero.org:3306/$schema?useUnicode=true&characterEncoding=utf-8&useSSL=false" \ -Dspring.datasource.username=root \ -Dspring.datasource.password=root \ -Ddata.drop=false \ -Ddata.init=true \ -Ddata.dir=$dir \ -Ddata.update.exclusion=iam_role,iam_user, \ -jar tool-jar/choerodon-tool-liquibase.jar
- 修改 service,指定更新目录,与
-
注意:更新 hzero-iam 服务的数据时,确定项目是 OP 版本还是 SaaS 版本,目录需指定到具体版本的目录下更新
-
注意:hzero-iam 的数据(菜单、权限等)按服务划分,可按需升级数据
-
注意:如果是第一次部署 HZERO,可直接执行脚本更新初始化数据,如果是0.9.0升级至0.10.0,需排除部分表的更新,否则会更新已有数据
hzero_platform
-Ddata.update.exclusion=iam_role,fd_organization,iam_user,hiam_user_info,iam_member_role,oauth_client,oauth_ldap,oauth_password_policy,hpfm_permission_range,hpfm_permission_rule,hpfm_permission_rel,hpfm_config,hpfm_code_rule,hpfm_code_rule,hpfm_code_rule_detail,hpfm_static_text,hpfm_static_text_value,hpfm_tenant,hpfm_group
hzero-message
- 消息模板有新增消息模板,如果直接通过 excel 更新数据,可能会更新已存在的数据,所以需先备份好数据之后再更新,便于恢复。
-Ddata.update.exclusion=hmsg_email_server,hmsg_email_property,hmsg_sms_server,hmsg_receive_config,hmsg_receiver_type,hmsg_message_template.template_content,hmsg_message_template.external_code
hzero_governance、hzero_message、hzero_scheduler、hzero_workflow
需要更新
hzero-file、hzero-import
无需更新
-
依次更改每个目录,执行此脚本,升级数据
数据处理
-
OP 版本,由于只有租户级,需将所有菜单设置为客制化菜单
修改 h_custom_flag
update hzero_platform.iam_menu set h_custom_flag = 1;
-
清除
hzero_platform.iam_menu
表的h_level_path
路径数据,再调用接口重新刷新路径清除 level_path
update hzero_platform.iam_menu set h_level_path = null;
调用 hzero-iam 服务如下接口,初始化 h_level_path
-
清除
hzero_platform.iam_role
表的h_level_path
、h_inherit_level_path
路径数据,再调用接口重新刷新路径清除 level_path
update hzero_platform.iam_role set h_level_path = null, h_inherit_level_path = null;
调用 hzero-iam 服务如下接口,初始化 h_level_path 及 h_inherit_level_path
-
调用 hzero-iam 服务的如下接口,将权限集分配到超级管理员上
-
IAM 服务新增如下消息模板,需自行配置相应的外部编码等属性
HIAM.CREATE_USER 创建用户 HIAM.REGISTER_USER 用户注册 HIAM.FIND_PASSWORD 找回密码 HIAM.VALIDATE_PHONE 验证码手机 HIAM.VALIDATE_EMAIL 验证码邮箱 HIAM.MODIFY_PHONE 修改手机 HIAM.MODIFY_EMAIL 修改邮箱