主题
apaas官方改造说明
最新官方改造文档:https://kdocs.cn/l/cuaZ2k2X9RFz
视频资料: https://cloud.189.cn/web/share?code=auqAbq3YFRvq(访问码:91nt)
添加apaas二方库
编辑项目虚拟制品库,勾选apaas二方库ctsi_ctdi-ssdc-oshare-maven-mc
。如果有release和snapshot两个制品库,两个都需要添加。
认证改造
项目pom.xml文件修改 项目父pom文件及对应子模块的pom文件中,需要去掉auth相关的依赖,如下所示,
xml
<!--<dependency>
<groupId>cn.zjtele.pubinfo.sys.auth</groupId>
<artifactId>auth-api</artifactId>
<version>${sys-auth.version}</version>
</dependency>-->
项目api模块的pom文件需要引入apaas插件
- 单体项目,需要引入apaas-api
xml
<dependency>
<groupId>cn.zjtele.pubinfo.sys.plugins.apaas</groupId>
<artifactId>apaas-api</artifactId>
<version>1.0.6</version>
</dependency>
- 微服务项目,业务微服务需要引入apaas-auth,基础系统管理服务(xxx-sys)需要引入apaas-api
xml
<dependency>
<groupId>cn.zjtele.pubinfo.sys.plugins.apaas</groupId>
<artifactId>apaas-auth</artifactId>
<version>1.0.6</version>
</dependency>
application.yml配置文件修改 老版配置:
yml
lowcode:
oauth2:
clientId: yuncheng-client
clientSecret: yuncheng-client
providerUri: https://tfeuurvo-lowcode-oauth.entry.ctapaas.cn
api:
powerApiUri: https://tfeuurvo-lowcode-magic.entry.ctapaas.cn
lowcodeApiUri: https://tfeuurvo-lowcode-boot.entry.ctapaas.cn
新版配置:
yml
lowcode:
oauth2:
clientId: yuncheng-client
clientSecret: yuncheng-client
providerUri: https://********-zero-code.entry.ctapaas.cn
api:
powerApiUri: https://********-zero-code.entry.ctapaas.cn
lowcodeApiUri: https://********-zero-code.entry.ctapaas.cn
本地调试时,需要先进入开发者工作台,创建测试项目,然后更换配置中的命名空间,其中tfeuurvo
为命名空间。
用户组织同步
项目引入了apaas-api依赖后,默认第一次启动会对apaas平台的用户、组织进行全量同步,之后每隔一段时间会对用户、组织进行增量同步。增量同步控制开关和同步时间可在配置文件中进行定义, application.yml配置文件:
yml
pubinfo:
apaas:
task:
enable: true
updateIncrementUser:
cron: 0 0 22 * * ?
updateIncrementOrg:
cron: 0 0 22 * * ?
liquibase整合
xml文件修改 项目api模块,resource/db/目录下增加init-schema.xml文件,存放项目所需业务表的初始化sql语句,文件内容样例如下,
xml
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<changeSet id="cadre-20240716-001" author="cadre">
<sql dbms="mysql" >
CREATE TABLE `test_demo` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键'
....
</sql>
</changeSet>
</databaseChangeLog>
resource/db/目录changelog-master文件中需要引入新增加的init-data.xml文件,
xml
<includeAll path="classpath:/db/changelog/init-*"/>
application.yml配置文件修改 开启liquibase配置:
yml
spring:
liquibase:
change-log: classpath:/db/changelog-master.xml
enabled: true
swagger文档
获取swagger.json文件 本地启动项目,访问项目的swagger docs地址,如http://localhost:9000/demo-app/doc.html
,选择业务的一个分组,进入文档管理-离线文档
,下载OpenAPI
文档。
环境变量配置文件
注意
项目代码中的数据库、redis等中间件可以使用本地的调试,组件上架调试及在apaas运行时,会使用环境变量配置文件中的内容其他代码中的配置项。上架时,正确勾选所依赖的中间件,然后环境变量配置文件会通过占位符的方式,进行配置。运行时,占位符会替换为真实的环境配置。占位符参考下面说明。
创建env-variable.json文件,文件内容样例如下: 其他中间件配置按照下面的配置示例,自行补充.
json
{
"lowcode.oauth2.clientId": "yuncheng-client",
"lowcode.oauth2.clientSecret": "yuncheng-client",
"lowcode.oauth2.providerUri": "${oauth2.url}",
"lowcode.api.powerApiUri": "${powerApi.apiUrl}",
"lowcode.api.lowcodeApiUri": "${lowcodeBoot.userServiceUrl}",
"server.port": "9000",
"server.servlet.context-path": "",
"spring.liquibase.enabled": "true",
"spring.datasource.url": "${thisAbility.[后端服务名].mysql.url}?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai",
"spring.datasource.username": "${mysql.username}",
"spring.datasource.password": "${mysql.password}",
"spring.redis.host": "${redis.host}",
"spring.redis.port": "${redis.port}",
"spring.redis.password": "${redis.password}",
"pubinfo.apaas.task.enable": "true",
"pubinfo.apaas.task.updateIncrementUser.cron": "0 0 22 * * ?",
"pubinfo.apaas.task.updateIncrementOrg.cron": "0 0 22 * * ?",
"pubinfo.log.enable": "true"
}
apaas中间件占位符配置:
组件自身服务的数据库(mysql): ${thisAbility.notice_board_backx.mysql.url}
组件自身服务的数据库(pgsql): ${thisAbility.notice_board_backy.pgsql.url}
组件自身服务的数据库(mariadb): ${thisAbility.notice_board_backy.mariadb.url}
依赖组件的服务的数据库(mysql): ${N1100000188.dep_common_backx.mysql.url}
依赖组件的服务的数据库(pgsql): ${N1100000188.dep_common_backy.pgsql.url}
依赖组件的服务的数据库(mariadb): ${N1100000188.dep_common_backy.mariadb.url}
依赖组件的数据库用户名(mysql): ${mysql.username}
依赖组件的数据库用户名(pgsql): ${pgsql.username}
依赖组件的数据库用户名(mariadb): ${mariadb.username}
依赖组件的数据库密码(mysql): ${mysql.password}
依赖组件的数据库密码(pgsql): ${pgsql.password}
依赖组件的数据库密码(mariadb): ${mariadb.password}
组件自身的服务地址(后端1): ${thisAbility.notice_board_backx.externalAddress.default}
组件自身的服务地址(后端2): ${thisAbility.notice_board_backy.externalAddress.default}
组件自身的服务的websocket地址(后端1): ${thisAbility.notice_board_backx.externalAddress.webSocket}
组件自身的服务的websocket地址(后端2): ${thisAbility.notice_board_backy.externalAddress.webSocket}
组件自身的服务的内部地址(后端1): ${thisAbility.notice_board_backx.inCluster.service}
组件自身的服务的内部地址(后端2): ${thisAbility.notice_board_backy.inCluster.service}
依赖组件的服务地址(后端1): ${N1100000188.dep_common_backx.externalAddress.default}
依赖组件的服务地址(后端2): ${N1100000188.dep_common_backy.externalAddress.default}
依赖组件的服务的websocket地址(后端1): ${N1100000188.dep_common_backx.externalAddress.webSocket}
依赖组件的服务的websocket地址(后端2): ${N1100000188.dep_common_backy.externalAddress.webSocket}
依赖组件的服务的内部地址(后端1): ${N1100000188.dep_common_backx.inCluster.service}
依赖组件的服务的内部地址(后端2): ${N1100000188.dep_common_backy.inCluster.service}
BASE_ROUTE: ${thisAbility.frontend.baseRoute}
MYSQL_USERNAME: ${mysql.username}
MYSQL_PASSWORD: ${mysql.password}
MYSQL_HOST: ${mysql.host}
MYSQL_PORT: ${mysql.port}
REDIS_HOST: ${redis.host}
REDIS_PORT: ${redis.port}
REDIS_PASSWORD: ${redis.password}
MINIO_ADDRESS: ${minio.address}
MINIO_SECRETKEY: ${minio.secretKey}
MINIO_ACCESSKEY: ${minio.accessKey}
NACOS_SERVERADDR: ${nacos.serverAddr}
NACOS_USERNAME: ${nacos.username}
NACOS_PASSWORD: ${nacos.password}
NACOS_NAMESPACE: ${nacos.namespace}
NACOS_GROUP: ${thisAbility.nacos.group}
USER_SERVICE_URL: ${lowcodeBoot.userServiceUrl}
POWER_API_URL: ${powerApi.apiUrl}
OAUTH2_URL: ${oauth2.url}
ROCKETMQ_NAME_SERVER: ${rocketmq.nameServer}
ROCKETMQ_CONSOLE_ADDRESS: ${rocketmq.console.address}
ROCKETMQ_CONSOLE_USER_USERNAME: ${rocketmq.console.user.username}
ROCKETMQ_CONSOLE_USER_PASSWORD: ${rocketmq.console.user.password}
ROCKETMQ_CONSOLE_ADMIN_PASSWORD: ${rocketmq.console.admin.password}
ROCKETMQ_BROKER_ADMIN_ACCESSKEY: ${rocketmq.broker.admin.accessKey}
ROCKETMQ_BROKER_ADMIN_SECRETKEY: ${rocketmq.broker.admin.secretKey}
PGSQL_USERNAME: ${pgsql.username}
PGSQL_PASSWORD: ${pgsql.password}
PGSQL_HOST: ${pgsql.host}
PGSQL_PORT: ${pgsql.port}
MARIADB_USERNAME: ${mariadb.username}
MARIADB_PASSWORD: ${mariadb.password}
MARIADB_HOST: ${mariadb.host}
MARIADB_PORT: ${mariadb.port}
KAFKA_BOOTSTRAP_SERVERS: ${kafka.bootstrapServers}
RABBITMQ_HOST: ${rabbitmq.host}
RABBITMQ_PORT: ${rabbitmq.port}
RABBITMQ_USERNAME: ${rabbitmq.username}
RABBITMQ_PASSWORD: ${rabbitmq.password}
ZOOKEEPER_CONNECT: ${zookeeper.connect}
ELASTICSEARCH_CLUSTER_NODES: ${elasticsearch.clusterNodes}
ELASTICSEARCH_PORT: ${elasticsearch.port}
ELASTICSEARCH_USERNAME: ${elasticsearch.username}
ELASTICSEARCH_PASSWORD: ${elasticsearch.password}
GRAFANA_HOST_URL: ${grafana.hostUrl}
GRAFANA_SVC_URL: ${grafana.svcUrl}
GRAFANA_USERNAME: ${grafana.username}
GRAFANA_PASSWORD: ${grafana.password}
GRAFANA_PROXY_SVC_URL: ${grafana_with_proxy.proxySvcUrl}
PROMETHEUS_HOST_URL: ${prometheus.hostUrl}
PROMETHEUS_SVC_URL: ${prometheus.svcUrl}
KIBANA_HOST_URL: ${kibana.hostUrl}
KIBANA_SVC_URL: ${kibana.svcUrl}
XXLJOB_ADMIN_ADDRESSES: ${xxljob.admin.address}
XXLJOB_ADDRESS: ${xxljob.address}
XXLJOB_ADMIN_USERNAME: ${xxljob.admin.username}
XXLJOB_ADMIN_PASSWORD: ${xxljob.admin.password}
nacos压缩包准备
上架需要上传nacos压缩包,压缩包内包含前端的apaas上架产物micro-service-config.js
;除此之外,如果项目自身使用nacos作为配置中心,可以导出自己原nacos服务中的配置文件,一并放入压缩包中上传。
后端服务上架日志查看
后端服务上架过程中或调试过程中有异常,可以通过查看容器日志定位。
首先,为了保证容器日志正确打印到控制台,请确认docker制品构建时,日志输出已正确修改。docker制品日志输出修改
日志下载步骤如下:
- 1、在
在线调试
页面中,找到对应后端服务,点击查看服务详情
- 2、在
查看服务详情
页面,找到容器日志,点击日志
- 3、在
日志
页面,点击下载日志
生成docker镜像
docker镜像构建参考:docker镜像构建 最终通过docker save
命令导出tar包
文档准备
- 组件使用说明手册
- 功能测试报告:测试报告模板
服务名问题
注意
服务名称需与Nacos 配置文件
或者启动参数配置文件
中的服务名称保持一致,服务名仅支持小写英文,如果在配置文件服务名称中存在_,在此输入时转换为-即可。例如在配置文件中服务名称为 demo_test,则在这里需要要入demo-test
。
应用上架
后端上架需要的产物为:env-variable.json,swagger.json,docker镜像tar包, 上架步骤,略。